buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.12.2' } } apply plugin: 'android' def toolVersion = "20.0.0" sdkLoc = getSdkPath() FileCollection getAndroidPrebuilt(String apiLevel) { files("$sdkLoc/platforms/android-$apiLevel/android.jar") } dependencies { compile project(':support-v4') compile project(':support-appcompat-v7') compile project(':extern:AndroidPinning') compile project(':extern:UniversalImageLoader:library') compile project(':extern:MemorizingTrustManager') compile project(':extern:libsuperuser:libsuperuser') compile project(':extern:nanohttpd:core') compile project(':extern:jmdns') compile project(':extern:zipsigner') compile project(':extern:zxing-core') compile( project(':extern:android-support-v4-preferencefragment') ) { exclude module: 'support-v4' } } project(':extern:UniversalImageLoader:library') { buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.10.0' } } apply plugin: 'android-library' android { compileSdkVersion 16 buildToolsVersion toolVersion sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] aidl.srcDirs = ['src'] renderscript.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] } } } } project(':extern:zipsigner') { apply plugin: 'java' dependencies { compile project(':extern:spongycastle:core') compile project(':extern:spongycastle:pkix') compile project(':extern:spongycastle:prov') } } android { compileSdkVersion 19 buildToolsVersion toolVersion compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] aidl.srcDirs = ['src'] renderscript.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] } instrumentTest.setRoot('test') } buildTypes { release { runProguard true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt' zipAlign true } debug { runProguard true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt' zipAlign true } } tasks.withType(Compile) { task -> options.encoding = "UTF-8" } } // TODO: This person took the example code below from another blogpost online, however // I lost the reference to it: // http://stackoverflow.com/questions/23297562/gradle-javadoc-and-android-documentation android.applicationVariants.all { variant -> task("generate${variant.name}Javadoc", type: Javadoc) { title = "$name $version API" description "Generates Javadoc for F-Droid." source = variant.javaCompile.source ext.androidJar = "$sdkLoc/platforms/${android.compileSdkVersion}/android.jar" classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar) options.links("http://docs.oracle.com/javase/7/docs/api/"); options.links("http://d.android.com/reference/"); exclude '**/BuildConfig.java' exclude '**/R.java' } } subprojects { // The support-v4 library assumes certain things are defined in the // root project (which is usually the android-support project, but // this time it is the F-Droid project. if (project.name.equals("support-v4")) { apply plugin: 'maven' rootProject.ext.supportRepoOut = "" } // This is the hacky way which we force the subprojects to use the same build tools: // http://stackoverflow.com/a/21032272 afterEvaluate { android { // The android build task only lets you configure the buildToolsVersion once, so if // we execute the closure below to configure our subprojects, it will fail when it // hits the second subproject. Therefore, we will only do it once, and I guess the // android plubin will re-use the existing value I set. // https://android.googlesource.com/platform/tools/build/+/master/gradle/src/main/groovy/com/android/build/gradle/BaseExtension.groovy try { buildToolsVersion toolVersion logger.info("Set buildToolsVersion to $toolVersion") } catch (GradleException e) { logger.info("Tried to set the buildToolsVersion, however we were not allowed to: $e.message") } } } } /** * Currently a bit hacky, because android.plugin is protected. * The end goal is to find something in the android BaseExtension class found here: * https://android.googlesource.com/platform/tools/build/+/master/gradle/src/main/groovy/com/android/build/gradle/BaseExtension.groovy * which ends up asking their Sdk class for it's location. That class knows about * both ANDROID_HOME env variables, and also local.properties sdk.loc properties. * * If in the future, the android.adbExe is found to be inappropriate, deprecated, * or a better way of finding the sdk path exists, we can change the implementation * of this method to reflect that. */ def getSdkPath() { new File( "$android.adbExe/../../" ).canonicalPath }