import org.apache.tools.ant.taskdefs.condition.Os apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { applicationId "com.iget.ccnx" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "0.0.1 ( 0.0.1)" } compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } signingConfigs { release { storeFile file("iget.keystore") storePassword "icn_iget" keyAlias "iget" keyPassword "icn_iget" } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.release } debug { debuggable true jniDebuggable true } } sourceSets { main { java.srcDirs "src/main/java" res.srcDirs "src/main/res" jniLibs.srcDir 'src/main/libs' jni.srcDirs = [] //disable automatic ndk-build call } androidTest.setRoot('tests') androidTest.java.srcDirs = ['tests/src'] } packagingOptions { exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' } splits { abi { enable true // enable ABI split feature to create one APK per ABI universalApk false // don't generate an additional APK that targets all the ABIs } } // map for the version code // versionCode digit for each supported ABI, with 64bit>32bit and x86>armeabi-* project.ext.versionCodes = ['armeabi': 1, 'armeabi-v7a': 2, 'arm64-v8a': 3, 'mips': 5, 'mips64': 6, 'x86': 8, 'x86_64': 9] android.applicationVariants.all { variant -> // assign different version code for each output variant.outputs.each { output -> output.versionCodeOverride = project.ext.versionCodes.get( output.getFilter( com.android.build.OutputFile.ABI), 0) * 1000000 + defaultConfig.versionCode } } task copyNdnCxxHeaders(type: Copy) { from('src/main/jni/ndn-cxx/src') { include '**/*.hpp' } into 'build/generated/source/include/ndn-cxx' } // call regular ndk-build(.cmd) script from app directory task ndkBuild(type: Exec) { dependsOn copyNdnCxxHeaders def args = [getNdkBuildCmd(), '-C', file('src/main').absolutePath] if (System.env.NDK_BUILD_PARALLEL != null) { args.add("-j" + System.env.NDK_BUILD_PARALLEL) } else { args.add("-j" + Runtime.runtime.availableProcessors()) } if (System.env.NDK_BUILD_ABI != null) { args.add("APP_ABI=" + System.env.NDK_BUILD_ABI) } if (System.env.NDK_DEBUG != null) { args.add("NDK_DEBUG=1") } commandLine args } tasks.withType(JavaCompile) { compileTask -> compileTask.dependsOn ndkBuild } task cleanNative(type: Exec) { commandLine getNdkBuildCmd(), '-C', file('src/main').absolutePath, 'clean' } clean.dependsOn cleanNative //dexOptions { // incremental true //} dexOptions { incremental true } } def getNdkBuildCmd() { def ndk_build = getNdkDir() + "/ndk-build" if (Os.isFamily(Os.FAMILY_WINDOWS)) { ndk_build += ".cmd" } return ndk_build } def getNdkDir() { if (System.env.ANDROID_NDK_ROOT != null) return System.env.ANDROID_NDK_ROOT Properties properties = new Properties() properties.load(project.rootProject.file('local.properties').newDataInputStream()) def ndk_dir = properties.getProperty('ndk.dir', null) if (ndk_dir == null) { throw new GradleException("NDK location not found. Define location with ndk.dir in the local.properties file or with an ANDROID_NDK_ROOT environment variable.") } return ndk_dir } repositories { mavenLocal() mavenCentral() maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.android.support:appcompat-v7:23.1.1' compile 'com.android.support:support-v4:23.1.1' compile('com.intel.jndn.management:jndn-management:1.1.2') { exclude group: 'net.named-data', module: 'jndn' } compile('net.named-data:jndn-android:0.13') { exclude group: 'org.xerial' } compile 'net.named-data.jndn-xx:jndn-xx-util:0.0.1' compile 'joda-time:joda-time:2.7' } Properties properties = new Properties() properties.load(project.rootProject.file('local.properties').newDataInputStream()) if (properties['google-play'] != null) { apply plugin: 'net.named-data.playground.play' play { track = 'alpha' jsonFile = file(properties['google-play']) } }