Hi! I am investigating the new support of the NDK with the official 1.3 release of Android Studio. More precisely, I am trying to make a library module which uses both Java code and native C code (interfaced with JNI). I followed the explanations provided in this doc: http://tools.android.com/tech-docs/new-build-system/gradle-experimental (Unfortunately, it doesn't say much about libraries). So basically I have an Android Studio project with two modules: - a main application (which uses com.android.model.application plugin) - a library module (which uses com.android.model.library plugin) (The main application does not have any native C code, only the library module has.)
Here are the problems I've got: *First case: I put all the NDK stuff in the build.gradle file of the library module.* - The library seems to compile fine (Java and native parts -> the .so files are present in the intermediate outputs) - An AAR file is built but it does not contain the .so files - The whole project does not compile: it stops on the compileDebugJavaWithJavac task of the main app module complaining that it cannot find the symbols defined in the library module. *Second case: I remove all the NDK stuff from the build.gradle file of the library module.* That's silly considering what my final goal is, I did that just for testing purposes. In this case, the compilation is successful: When the main app module is compiled, the symbols defined in the library module are properly found (-> from what I deduce that the dependencies configuration in the gradle files should be OK...) The generated APK runs properly on the device (as long as the native code from the library module is not used of course) I spent a lot of time trying to make that work without any success... It's definitely not impossible that I'm doing something wrong but I've got the feeling that there is something buggy and/or missing in the gradle-experimental 0.2.0 plugin. The full source code of the minimal project I used to test the creation of an AAR library containing native code is here: https://gitlab.com/FlorentBrunet/trials-gradleexpe-lib-jni/tree/master And here are my build.gradle files: *- for the main app module:* apply plugin: 'com.android.model.application' model { android { compileSdkVersion = 22 buildToolsVersion = "22.0.1" defaultConfig.with { applicationId = "com.ubleam.trialswithlib" minSdkVersion.apiLevel = 11 targetSdkVersion.apiLevel = 22 versionCode = 1 versionName = "1.0" } } android.buildTypes { release { minifyEnabled = false proguardFiles += file('proguard-rules.pro') } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.2.1' compile project(':mylibrary') } *- for the library module:* apply plugin: 'com.android.model.library' model { android { compileSdkVersion = 22 buildToolsVersion = "22.0.1" defaultConfig.with { applicationId = "com.ubleam.mylibrary" minSdkVersion.apiLevel = 11 targetSdkVersion.apiLevel = 22 versionCode = 1 versionName = "1.0" } } android.ndk { moduleName = "dummylib" } android.buildTypes { release { minifyEnabled = false proguardFiles += file('proguard-rules.pro') } } android.productFlavors { // for detailed abiFilter descriptions, refer to "Supported ABIs" @ // https://developer.android.com/ndk/guides/abis.html#sa create("arm") { ndk.abiFilters += "armeabi" } create("arm7") { ndk.abiFilters += "armeabi-v7a" } create("arm8") { ndk.abiFilters += "arm64-v8a" } create("x86") { ndk.abiFilters += "x86" } create("x86-64") { ndk.abiFilters += "x86_64" } create("mips") { ndk.abiFilters += "mips" } create("mips-64") { ndk.abiFilters += "mips64" } // To include all cpu architectures, leaves abiFilters empty create("all") } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.2.1' } Really hope that this could help improving the Android tools because, except for these few problems, Android Studio 1.3 and the integration of the NDK is amazing! -- You received this message because you are subscribed to the Google Groups "adt-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
