plugins { id('com.android.application') id('com.getkeepsafe.dexcount') id('com.github.triplet.play') version '2.3.0' apply false } import org.apache.tools.ant.filters.ReplaceTokens android { compileSdkVersion rootProject.ext.compileSdkVersion defaultConfig { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion multiDexEnabled false vectorDrawables.useSupportLibrary true // Version code schema: // "1.2.3-SNAPSHOT" -> 1020300 // "1.2.3-RC4" -> 1020304 // "1.2.3" -> 1020395 versionCode 1070307 versionName "1.7.3-RC7" testApplicationId "de.test.antennapod" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" generatedDensities = [] javaCompileOptions { annotationProcessorOptions { arguments = [ eventBusIndex : 'de.danoeh.antennapod.ApEventBusIndex' ] } } } signingConfigs { releaseConfig { if (project.hasProperty("releaseStoreFile")) { storeFile file(releaseStoreFile) } else { storeFile file("keystore") } if (project.hasProperty("releaseStorePassword")) { storePassword releaseStorePassword } else { storePassword "password" } if (project.hasProperty("releaseKeyAlias")) { keyAlias releaseKeyAlias } else { keyAlias "alias" } if (project.hasProperty("releaseKeyPassword")) { keyPassword releaseKeyPassword } else { keyPassword "password" } } } buildTypes { def STRING = "String" debug { applicationIdSuffix ".debug" resValue "string", "provider_authority", "de.danoeh.antennapod.debug.provider" // debug build has method count over 64k single-dex threshold. // For building debug build to use on Android < 21 (pre-Android 5) devices, // you need to manually change class // de.danoeh.antennapod.PodcastApp to extend MultiDexApplication . // See Issue #2813 multiDexEnabled true dexcount { if (project.hasProperty("enableDexcountInDebug")) { runOnEachPackage enableDexcountInDebug.toBoolean() } else { // default to not running dexcount runOnEachPackage false } } } release { resValue "string", "provider_authority", "de.danoeh.antennapod.provider" minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), "proguard.cfg" signingConfig signingConfigs.releaseConfig } } packagingOptions { exclude "META-INF/LICENSE.txt" exclude "META-INF/NOTICE.txt" } lintOptions { abortOnError false } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } aaptOptions { additionalParameters "--no-version-vectors" } testOptions { animationsDisabled = true } flavorDimensions "market" productFlavors { free { dimension "market" } play { dimension "market" } } dexOptions { jumboMode true } } dependencies { freeImplementation project(":core") // free build hack: skip some dependencies if (!doFreeBuild()) { playImplementation project(":core") } else { System.out.println("app: free build hack, skipping some dependencies") } implementation "com.android.support:support-v4:$supportVersion" implementation "com.android.support:appcompat-v7:$supportVersion" implementation "com.android.support:design:$supportVersion" implementation "com.android.support:preference-v14:$supportVersion" implementation "com.android.support:gridlayout-v7:$supportVersion" implementation "com.android.support:recyclerview-v7:$supportVersion" compileOnly 'com.google.android.wearable:wearable:2.2.0' // ViewModel and LiveData implementation "android.arch.lifecycle:extensions:$lifecycle_version" annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version" implementation "org.apache.commons:commons-lang3:$commonslangVersion" implementation "commons-io:commons-io:$commonsioVersion" implementation "org.jsoup:jsoup:$jsoupVersion" implementation "com.github.bumptech.glide:glide:$glideVersion" annotationProcessor "com.github.bumptech.glide:compiler:$glideVersion" implementation "com.squareup.okhttp3:okhttp:$okhttpVersion" implementation "com.squareup.okhttp3:okhttp-urlconnection:$okhttpVersion" implementation "com.squareup.okio:okio:$okioVersion" implementation "org.greenrobot:eventbus:$eventbusVersion" annotationProcessor "org.greenrobot:eventbus-annotation-processor:$eventbusVersion" implementation "io.reactivex.rxjava2:rxandroid:$rxAndroidVersion" implementation "io.reactivex.rxjava2:rxjava:$rxJavaVersion" implementation "com.joanzapata.iconify:android-iconify-fontawesome:$iconifyVersion" implementation "com.joanzapata.iconify:android-iconify-material:$iconifyVersion" implementation("com.afollestad.material-dialogs:commons:$materialDialogsVersion") { transitive = true } implementation "com.yqritc:recyclerview-flexibledivider:$recyclerviewFlexibledividerVersion" implementation("com.githang:viewpagerindicator:2.5.1@aar") { exclude module: "support-v4" } implementation "com.github.shts:TriangleLabelView:$triangleLabelViewVersion" implementation 'com.leinardi.android:speed-dial:1.0.2' // 1.0.2 uses support 27.1.1 ; newer versions use 28.0.0; implementation "com.github.AntennaPod:AntennaPod-AudioPlayer:$audioPlayerVersion" implementation 'com.github.mfietz:fyydlin:v0.4.2' implementation 'com.github.ByteHamster:SearchPreference:v1.3.0' implementation "org.awaitility:awaitility:$awaitilityVersion" androidTestImplementation 'com.nanohttpd:nanohttpd-webserver:2.1.1' androidTestImplementation "com.jayway.android.robotium:robotium-solo:$robotiumSoloVersion" androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-contrib:3.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-intents:3.0.2' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test:rules:1.0.2' } if (project.hasProperty("antennaPodServiceAccountEmail")) { apply plugin: 'com.github.triplet.play' play { track = 'alpha' serviceAccountEmail = antennaPodServiceAccountEmail serviceAccountCredentials = file(antennaPodPk12File) } } // about.html is templatized so that we can automatically insert // our version string in to it at build time. task filterAbout { inputs.files files(["src/main/templates/about.html", "src/main/AndroidManifest.xml"]) outputs.file "src/main/assets/about.html" } doLast { copy { from "src/main/templates/about.html" into "src/main/assets" filter(ReplaceTokens, tokens: [versionname: android.defaultConfig.versionName, commit : "git rev-parse --short HEAD".execute().text, year : new Date().format('yyyy')]) } } task copyTextFiles(type: Copy) { from "../CONTRIBUTORS" from "../LICENSE" into "src/main/assets/" rename { String fileName -> fileName + ".txt" } } preBuild.dependsOn filterAbout, copyTextFiles