Android Studio NDK解决方法

Aav*_*aas 1 c++ java android android-ndk android-studio

我正在尝试集成NDK项目,其中Android Studio告诉我,我可以通过以下方式解决方法:

警告:找到本机C/C++源代码,但似乎未配置NDK选项.请注意,如果您有Android.mk,则不会用于编译.建议的解决方法是通过添加以下内容来删除默认的jni源代码目录:

android {
    sourceSets {
        main {
            jni.srcDirs = []
    }
} } 
Run Code Online (Sandbox Code Playgroud)

build.gradle,用ndk-build手动编译代码,然后将生成的共享对象放在src/main/jniLibs中

所以在我的ndk构建之后,我发现有两个地方我可以找到.so文件在armeabi-v7a,mips和x86文件夹中

/libs
/obj/local
Run Code Online (Sandbox Code Playgroud)

那么上面哪两个文件夹包含要复制的实际.so文件?

我是否必须配置其他任何东西才能使其工作?我通过Android Studio的导入ADT方法导入了项目.谢谢!

Ale*_*ohn 8

建议的解决方法假定您手动将libs目录的内容复制到src/main/jniLibs.

替代解决方法是将以下附魔添加到build.gradle文件中:

jniLibs.srcDirs = [ 'libs' ]
Run Code Online (Sandbox Code Playgroud)

该行与jni.srcDirs一起使用,如您引用的消息中所述.

  • **/obj**下的文件对于调试很重要.当我们使用**ndk-stack**或**addr2line**时,我们指向**/obj**下的"胖"副本.链接器(从**ndk-build**开始)以**/obj**生成其输出.之后,**ndk-build**启动**strip**进程,将*stripped*版本的库复制到**/libs**文件夹.您不需要所有调试符号信息来在您的设备上运行该程序,但您可以享受APK大小的显着增益. (2认同)