Android 项目中如何直接引入准备好的 .so 文件

查看 53|回复 1
作者:nealot   
native 常规开发流程大概是这样的:
在 Android Studio 中创建一个项目, 项目类型选择最下面的 "Native C++", 名称就叫 native
这时, 在 src/main/cpp 下会出现一个 native-lib.cpp 文件和对应的 CMakeLists.txt 文件, cpp 内容如下
#include
#include
extern "C" JNIEXPORT jstring JNICALL
Java_com_example_native_MainActivity_stringFromJNI(
        JNIEnv* env,
        jobject /* this */) {
    std::string hello = "Hello from C++";
    return env->NewStringUTF(hello.c_str());
}
在 src/main/java/com/example/native/MainActivity.java 中 class MainActivity 中生成了一个对应的函数申明
    /**
     * A native method that is implemented by the 'native' native library,
     * which is packaged with this application.
     */
    public native String stringFromJNI();
Java 程序通过这个接口访问 native 代码
点击 Make Project 之后, 编译成功, 双击 build/outputs/apk/debug/app-debug.apk, 可以看到 apk 包含了 x86, x86_64, arm64_v8a, armeabi_v7a 四个平台的 libnative.so 文件
请问有没有办法把编译出来的 .so 提取出来, 然后直接导入到一个新的 Android 工程中。这个新的工程直接把 .so 文件打包到 apk 中,新工程代码中完全不包含 C 代码?
网上部分文章说,把 .so 文件放到 libs/arm64_v8a 等目录中就行, 打包 apk 时会自动包含, 但是实测下来没有效果, 似乎还有什么其它地方需要配置

native, APK, Java, string

whyrookie   
gradle 少了路径配置?
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
您需要登录后才可以回帖 登录 | 立即注册

返回顶部