2015-10-05 59 views
1

我有使用集成到ndk-build我的Android Studio项目我已经建立了一个机库的困难。问题在于我停留在Gradle语法是全新的过渡时期,但文档和联机帮助仍然引用旧的语法。如何预建包括库。所以在Android中工作室1.3.2

我的图书馆是在我的项目这个位置:app/libs/(armeabi and others)/libsample.so,共为不同架构的同一个库的7种变体。我还在app/src/main/jni/headers中拥有该库的头文件,以及在app/src/main/jni/wrapper.c上调用该库中定义的函数的C封装文件。包装文件有一个#include "headers/sample.h"

的主要问题是,我不知道如何设置我的摇篮建立使用预构建的共享库。我有一个工作Android.mk文件,它可以成功编译我的包装使用共享库,但我不能在Android Studio中使用它,因为Gradle生成它自己的生成文件并使用它。任何人有任何想法如何从这里开始?

+0

是否使用实验gradle这个插件? –

+0

是的,我正在使用实验性插件。我相信目前的版本是0.2.0。我很不高兴Google在不到三个月的时间内结束对Eclipse的支持,而他们的计划平台远未做好准备。 – Ermir

+0

gradle实验性插件的最后一个版本是0.2.1。你可以在这里查看官方的例子:https://github.com/googlesamples/android-ndk –

回答

0

您应该能够简单地将预先构建的.so文件放入(项目模块)/ src/main/jniLibs /(target abi)中,并且它们将包含在Android Studio生成的最终apk中。

One caveat:我不是100%肯定,但它看起来像Android的安装程序可以选择抛出从它决定是不是在APK其他ABI文件夹中当前设备较差的配合ABI文件夹一些图书馆(前armeabi和armeabi-v7a可能都是兼容的,但armeabi-v7a可能更适合)如果所述库仅存在于较差的文件夹中。如果您没有本地库的源代码,这变得很重要。您可以解决此通过指定在你的模块的build.gradle单ABI(见答案的链接的问题),你的本机库被编译为,或通过设置jni.srcDirs禁用的Android Studio的NDK建造过程中的匹配ABI = []在android.sourceSets.main