/** * This is *NOT* the main build script for F-Droid. The main build.gradle * is in F-Droid/build.gradle. Usually multi-project builds don't have a * build.gradle in the top level directory (http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Dependencies-Android-Libraries-and-Multi-project-setup). * * This build script contains miscellaneous hacks to ensure that all of * F-Droids dependencies can be built from source. * Each hack should be documented, and in the future, may need to be changed * in order to ensure that we keep pace with any changes upstream makes to * their build processes. * * - Some subprojects don't have gradle build scripts, so they are setup here. * * - The android support libraries make a lot of dependencies about the project * two folders up from themselves, which we will have to provide for them. */ buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.1.3' // libsuperuser submodule requires these plugins, even though // the F-Droid build process never invokes code from them. It // would be nice to do away with this in the future, so we don't // force people do download stuff they wont use. classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0' classpath 'com.github.dcendents:android-maven-plugin:1.2' } } if ( hasProperty( 'sourceDeps' ) ) { project(':extern:UniversalImageLoader:library') { apply plugin: 'android-library' android { compileSdkVersion 16 buildToolsVersion '22.0.1' 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') } } } subprojects { // This is the hacky way which we force the subprojects to use the same build tools: // http://stackoverflow.com/a/21032272 afterEvaluate { if ( it.hasProperty( 'android' ) ) { 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 plugin 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 '22.0.1' logger.info("Set buildToolsVersion to '22.0.1'") } catch (GradleException e) { logger.info("Tried to set the buildToolsVersion, however we were not allowed to: $e.message") } // don't abort build on lint errors // http://stackoverflow.com/a/25149514 configure(android.lintOptions) { abortOnError false } } } } }