
Taken from the gradle plugin user guide: With Android KitKat (buildToolsVersion 19) you can use the diamond operator, multi-catch, strings in switches, try with resources, etc. Note that you can use minSdkVersion with a value earlier than 19, for all language features except try with resources. If you want to use try with resources, you will need to also use a minSdkVersion of 19. You also need to make sure that Gradle is using version 1.7 or later of the JDK. (And version 0.6.1 or later of the Android Gradle plugin.)
174 lines
4.8 KiB
Groovy
174 lines
4.8 KiB
Groovy
buildscript {
|
|
repositories {
|
|
mavenCentral()
|
|
}
|
|
dependencies {
|
|
classpath 'com.android.tools.build:gradle:0.10.0'
|
|
}
|
|
}
|
|
|
|
apply plugin: 'android'
|
|
|
|
def toolVersion = "19.1"
|
|
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'
|
|
}
|
|
}
|
|
|
|
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
|
|
}
|