/* ******************************************************************* * * Copyright 2015 Intel Corporation. * *-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * *-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= */ buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.3.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() } } apply plugin: 'com.android.library' android { sourceSets { main { java { srcDirs 'src/main/java', '../common/src/main/java' } manifest.srcFile 'src/main/AndroidManifest.xml' jniLibs.srcDir "$buildDir/native-libs" jni.srcDirs = [] //disable automatic ndk-build call } } compileSdkVersion 21 buildToolsVersion "20.0.0" archivesBaseName = "iotivity-base" libraryVariants.all { variant -> variant.outputs.each { output -> def outputFile = output.outputFile if (outputFile != null && outputFile.name.endsWith('.aar')) { def fileName = "${archivesBaseName}-${TARGET_ARCH}-${RELEASE}.aar" output.outputFile = new File(outputFile.parent, fileName) } } } defaultConfig { minSdkVersion 21 targetSdkVersion 21 versionCode 1 versionName PROJECT_VERSION buildConfigField 'int', 'SECURED', SECURED buildConfigField 'int', 'WITH_TCP', WITH_TCP buildConfigField 'int', 'WITH_CLOUD', WITH_CLOUD buildConfigField "int", 'WITH_MQ_PUB', WITH_MQ_PUB buildConfigField "int", 'WITH_MQ_SUB', WITH_MQ_SUB buildConfigField "int", 'WITH_MQ_BROKER', WITH_MQ_BROKER buildConfigField "String", 'RD_MODE', "\"RD_MODE\"" buildConfigField "int", 'WITH_TRANSPORT_EDR', WITH_TRANSPORT_EDR buildConfigField "int", 'WITH_TRANSPORT_BLE', WITH_TRANSPORT_BLE buildConfigField "int", 'WITH_TRANSPORT_NFC', WITH_TRANSPORT_NFC buildConfigField "int", 'MULTIPLE_OWNER', MULTIPLE_OWNER } buildTypes { release { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } lintOptions { abortOnError false } sourceSets { main { manifest.srcFile 'src/main/AndroidManifest.xml' jniLibs.srcDir '$buildDir/native-libs' jni.srcDirs = [] //disable automatic ndk-build call java{ if (WITH_TRANSPORT_EDR == "0") { exclude "**/ca/CaBtPairingInterface.java" exclude "**/ca/CaEdrInterface.java" println 'excluded EDR interface' } if (WITH_TRANSPORT_BLE == "0") { exclude "**/ca/CaLeClientInterface.java" exclude "**/ca/CaLeServerInterface.java" println 'excluded BLE interface' } if (WITH_TRANSPORT_NFC == "0") { exclude "**/ca/CaNfcInterface.java" println 'excluded NFC interface' } if (WITH_TCP == "0" || SECURED == "0") { exclude "**/base/OcCloudProvisioning.java" println 'excluded secure files' } } } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) } task copyNativeLibs(type: Copy) { String[] libraries = [ 'libgnustl_shared.so', 'libconnectivity_abstraction.so', 'libca-interface.so', 'liboc_logger.so', 'liboctbstack.so', 'liboc.so', 'libresource_directory.so', 'libocstack-jni.so' ] if ("$SECURED" == '1') libraries += [ 'libocprovision.so', 'libocpmapi.so' ] from(new File("../../out/$TARGET_OS/$TARGET_ARCH/$RELEASE")) { include libraries } into new File(buildDir, "native-libs/$TARGET_ARCH") } tasks.withType(JavaCompile) { compileTask -> compileTask.dependsOn copyNativeLibs } tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask -> pkgTask.jniFolders = new HashSet() pkgTask.jniFolders.add(new File(buildDir, 'native-libs')) } task buildNative(type: Exec) { if (System.env.ANDROID_NDK_HOME != null) { //for windows use 'ndk-build.cmd' //def ndkBuild = new File(System.env.ANDROID_NDK_HOME, 'ndk-build.cmd') def ndkBuild = new File(System.env.ANDROID_NDK_HOME, 'ndk-build') commandLine ndkBuild, "APP_ABI=$TARGET_ARCH", "APP_OPTIM=$RELEASE", "SECURE=$SECURED", "WITH_CLOUD=$WITH_CLOUD", "RD_MODE=$RD_MODE", "WITH_MQ_PUB=$WITH_MQ_PUB", "WITH_MQ_SUB=$WITH_MQ_SUB", "WITH_MQ_BROKER=$WITH_MQ_BROKER", "WITH_TCP=$WITH_TCP","MULTIPLE_OWNER=$MULTIPLE_OWNER" } else { println '##################' println 'Skipping NDK build' println 'Reason: ANDROID_NDK_HOME not set.' println '##################' } }