import org.apache.tools.ant.filters.ReplaceTokens apply plugin: "com.android.application" apply plugin: "me.tatarka.retrolambda" apply plugin: 'com.github.triplet.play' repositories { maven { url "https://jitpack.io" } mavenCentral() } def getMyVersionName() { def parsedManifestXml = (new XmlSlurper()) .parse("${projectDir}/src/main/AndroidManifest.xml") .declareNamespace(android: "http://schemas.android.com/apk/res/android") return parsedManifestXml."@android:versionName" } def getMyVersionCode() { def parsedManifestXml = (new XmlSlurper()) .parse("${projectDir}/src/main/AndroidManifest.xml") .declareNamespace(android: "http://schemas.android.com/apk/res/android") return parsedManifestXml."@android:versionCode".toInteger() } android { compileSdkVersion rootProject.ext.compileSdkVersion buildToolsVersion rootProject.ext.buildToolsVersion defaultConfig { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode getMyVersionCode() versionName "${getMyVersionName()}" testApplicationId "de.test.antennapod" testInstrumentationRunner "de.test.antennapod.AntennaPodTestRunner" generatedDensities = [] } 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" def FLATTR_APP_KEY = "FLATTR_APP_KEY" def FLATTR_APP_SECRET = "FLATTR_APP_SECRET" def mFlattrAppKey = (project.hasProperty("flattrAppKey")) ? flattrAppKey : "\"\"" def mFlattrAppSecret = (project.hasProperty("flattrAppSecret")) ? flattrAppSecret : "\"\"" debug { applicationIdSuffix ".debug" buildConfigField STRING, FLATTR_APP_KEY, mFlattrAppKey buildConfigField STRING, FLATTR_APP_SECRET, mFlattrAppSecret } release { minifyEnabled true proguardFile "proguard.cfg" signingConfig signingConfigs.releaseConfig buildConfigField STRING, FLATTR_APP_KEY, mFlattrAppKey buildConfigField STRING, FLATTR_APP_SECRET, mFlattrAppSecret } } 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" } productFlavors { free { } play { } } } configurations { freeDebugCompile freeReleaseCompile playDebugCompile playReleaseCompile } dependencies { freeDebugCompile project(path: ":core", configuration: "freeDebug") freeReleaseCompile project(path: ":core", configuration: "freeRelease") // free build hack: skip some dependencies if (!doFreeBuild()) { playDebugCompile project(path: ":core", configuration: "playDebug") playReleaseCompile project(path: ":core", configuration: "playRelease") } else { System.out.println("app: free build hack, skipping some dependencies") } compile "com.android.support:support-v4:$supportVersion" compile "com.android.support:appcompat-v7:$supportVersion" compile "com.android.support:design:$supportVersion" compile "com.android.support:gridlayout-v7:$supportVersion" compile "com.android.support:percent:$supportVersion" compile "com.android.support:recyclerview-v7:$supportVersion" compile "org.apache.commons:commons-lang3:$commonslangVersion" compile("org.shredzone.flattr4j:flattr4j-core:$flattr4jVersion") { exclude group: "org.json", module: "json" } compile "commons-io:commons-io:$commonsioVersion" compile "org.jsoup:jsoup:$jsoupVersion" compile "com.github.bumptech.glide:glide:$glideVersion" compile "com.squareup.okhttp:okhttp:$okhttpVersion" compile "com.squareup.okhttp:okhttp-urlconnection:$okhttpVersion" compile "com.squareup.okio:okio:$okioVersion" compile "de.greenrobot:eventbus:$eventbusVersion" compile "io.reactivex:rxandroid:$rxAndroidVersion" compile "io.reactivex:rxjava:$rxJavaVersion" // And ProGuard rules for RxJava! compile "com.artemzin.rxjava:proguard-rules:$rxJavaRulesVersion" compile "com.joanzapata.iconify:android-iconify-fontawesome:$iconifyVersion" compile "com.joanzapata.iconify:android-iconify-material:$iconifyVersion" compile("com.github.afollestad.material-dialogs:commons:$materialDialogsVersion") { transitive = true } compile "com.yqritc:recyclerview-flexibledivider:$recyclerviewFlexibledividerVersion" compile("com.githang:viewpagerindicator:2.5@aar") { exclude module: "support-v4" } compile "com.github.shts:TriangleLabelView:$triangleLabelViewVersion" compile "com.github.AntennaPod:AntennaPod-AudioPlayer:$audioPlayerVersion" } play { serviceAccountEmail = '522080222319-compute@developer.gserviceaccount.com' pk12File = file('../serviceaccount-c3d7d0f61387.p12') } // 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" } << { 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]) } } task copyTextFiles(type: Copy) { from "../CONTRIBUTORS" from "../LICENSE" into "src/main/assets/" rename { String fileName -> fileName + ".txt" } } preBuild.dependsOn filterAbout, copyTextFiles allprojects { gradle.projectsEvaluated { tasks.withType(JavaCompile) { options.compilerArgs << "-Xlint" << "-Xlint:-deprecation" << "-Xlint:-serial" } } }