apply plugin: 'com.android.application' apply plugin: 'witness' apply plugin: 'checkstyle' repositories { jcenter() } dependencies { compile project(':privileged-api-lib') compile 'com.android.support:support-v4:23.2.0' compile 'com.android.support:appcompat-v7:23.2.0' compile 'com.android.support:support-annotations:23.2.0' compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' compile 'com.google.zxing:core:3.2.1' compile 'eu.chainfire:libsuperuser:1.0.0.201602011018' compile 'cc.mvdan.accesspoint:library:0.1.3' compile 'info.guardianproject.netcipher:netcipher:1.2.1' compile 'commons-net:commons-net:3.4' compile 'org.openhab.jmdns:jmdns:3.4.2' compile('ch.acra:acra:4.8.2') { exclude module: 'support-v4' exclude module: 'support-annotations' } compile 'io.reactivex:rxjava:1.1.0' compile 'io.reactivex:rxandroid:0.23.0' androidTestCompile 'commons-io:commons-io:2.4' } if (!hasProperty('sourceDeps')) { repositories { // This is here until we sort out all dependencies from mavenCentral/jcenter. Once all of // the dependencies below have been sorted out, this can be removed. flatDir { dirs 'libs/binaryDeps' } } dependencies { compile 'com.madgag.spongycastle:pkix:1.53.0.0' compile 'com.madgag.spongycastle:prov:1.53.0.0' compile 'com.madgag.spongycastle:core:1.53.0.0' // Upstream doesn't have a binary on mavenCentral/jcenter yet: // https://github.com/kolavar/android-support-v4-preferencefragment/issues/13 compile(name: 'support-v4-preferencefragment-release', ext: 'aar') // Fork for F-Droid, including support for https. Not merged into upstream // yet (seems to be a little unsupported as of late), so not using mavenCentral/jcenter. compile(name: 'nanohttpd-2.1.0') // Upstream doesn't have a binary on mavenCentral, and it is an SVN repo on // Google Code. We include this code directly in this repo, and have made // modifications that should be pushed to anyone who wants to maintain it. compile(name: 'zipsigner') } // Only do the libraries imported from maven repositories. Our own libraries // (like privileged-api-lib) and the prebuilt jars already checked into the // source code don't need to be here. dependencyVerification { verify = [ 'com.android.support:support-v4:992666398b80724a2f95ea3d7bf7c3d94fb810dcba7ae1aa6e38c0d6120d2603', 'com.android.support:appcompat-v7:14ab04eb2e3f302a082b79c308f6283d21909d1feb831a4e117cdacdad70adb7', 'com.android.support:support-annotations:7f21659b084da073b77b6f7fe7ab250c4f23346238d4efdbbbb937e017ae4693', 'com.nostra13.universalimageloader:universal-image-loader:dbd5197ffec3a8317533190870a7c00ff3750dd6a31241448c6a5522d51b65b4', 'com.google.zxing:core:b4d82452e7a6bf6ec2698904b332431717ed8f9a850224f295aec89de80f2259', 'eu.chainfire:libsuperuser:952c5fc82f9c31d31d2b6a7054ee267dac1685fb037a254888c73c48de661eaf', 'cc.mvdan.accesspoint:library:dc89a085d6bc40381078b8dd7776b12bde0dbaf8ffbcddb17ec4ebc3edecc7ba', 'commons-net:commons-net:38cf2eca826b8bcdb236fc1f2e79e0c6dd8e7e0f5c44a3b8e839a1065b2fbe2e', 'info.guardianproject.netcipher:netcipher:611ec5bde9d799fd57e1efec5c375f9f460de2cdda98918541decc9a7d02f2ad', 'org.openhab.jmdns:jmdns:7a4b34b5606bbd2aff7fdfe629edcb0416fccd367fb59a099f210b9aba4f0bce', 'com.madgag.spongycastle:pkix:6aba9b2210907a3d46dd3dcac782bb3424185290468d102d5207ebdc9796a905', 'com.madgag.spongycastle:prov:029f26cd6b67c06ffa05702d426d472c141789001bcb15b7262ed86c868e5643', 'com.madgag.spongycastle:core:9b6b7ac856b91bcda2ede694eccd26cefb0bf0b09b89f13cda05b5da5ff68c6b', 'ch.acra:acra:bc12400f7fe0c86d238c0daa269bff2b785e5403d601d6874622d87e8be64771', 'io.reactivex:rxjava:2c162afd78eba217cdfee78b60e85d3bfb667db61e12bc95e3cf2ddc5beeadf6', 'io.reactivex:rxandroid:35c1a90f8c1f499db3c1f3d608e1f191ac8afddb10c02dd91ef04c03a0a4bcda', ] } } else { logger.info "Setting up *source* dependencies for F-Droid (because you passed in the -PsourceDeps argument to gradle while building)." dependencies { compile(project(':extern:support-v4-preferencefragment')) { exclude module: 'support-v4' } compile project(':extern:nanohttpd:core') compile project(':extern:zipsigner') } task binaryDeps(type: Copy, dependsOn: ':F-Droid:prepareReleaseDependencies') { enabled = project.hasProperty('sourceDeps') description = "Copies .jar and .aar files from subproject dependencies in extern/ to F-Droid/libs. Requires the sourceDeps property to be set (\"gradle -PsourceDeps binaryDeps\")" from('../extern/') { include 'support-v4-preferencefragment/build/outputs/aar/support-v4-preferencefragment-release.aar' include 'nanohttpd/core/build/libs/nanohttpd-2.1.0.jar' include 'zipsigner/build/libs/zipsigner.jar' } into 'libs/binaryDeps' includeEmptyDirs false eachFile { FileCopyDetails details -> // Don't copy to a sub folder such as libs/binaryDeps/Project/build/outputs/aar/project.aar, but // rather libs/binaryDeps/project.aar. details.path = details.name } } } android { compileSdkVersion 23 buildToolsVersion '23.0.2' useLibrary 'org.apache.http.legacy' sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] aidl.srcDirs = ['src'] renderscript.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] } androidTest.setRoot('test') androidTest { manifest.srcFile 'test/AndroidManifest.xml' java.srcDirs = ['test/src'] resources.srcDirs = ['test/src'] aidl.srcDirs = ['test/src'] renderscript.srcDirs = ['test/src'] res.srcDirs = ['test/res'] assets.srcDirs = ['test/assets'] } } buildTypes { // use proguard on debug too since we have unknowingly broken // release builds before. all { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug { testCoverageEnabled = true } } compileOptions { compileOptions.encoding = "UTF-8" // Use Java 1.7, requires minSdk 8 sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } lintOptions { checkReleaseBuilds false abortOnError false htmlReport true xmlReport false textReport false // Our translations are crowd-sourced disable 'MissingTranslation' // We have locale folders like "values-he" and "values-id" as symlinks // since some devices ship deprecated locale codes disable 'LocaleFolder' // Like supportsRtl or parentActivityName. They are on purpose. disable 'UnusedAttribute' } packagingOptions { exclude 'META-INF/LICENSE' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE' exclude 'META-INF/NOTICE.txt' exclude 'META-INF/INDEX.LIST' exclude '.readme' } } checkstyle { toolVersion = '6.16' } task checkstyle(type: Checkstyle) { configFile file("${project.rootDir}/config/checkstyle/checkstyle.xml") source 'src', 'test/src' include '**/*.java' exclude '**/gen/**' classpath = files() } // 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 def sdkDir Properties properties = new Properties() File localProps = project.rootProject.file('local.properties') if (localProps.exists()) { properties.load(localProps.newDataInputStream()) sdkDir = properties.getProperty('sdk.dir') } else { sdkDir = System.getenv('ANDROID_HOME') } if (!sdkDir) { throw new ProjectConfigurationException("Cannot find android sdk. Make sure sdk.dir is defined in local.properties or the environment variable ANDROID_HOME is set.", null) } ext.androidJar = "${sdkDir}/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' } }