首页 > 解决方案 > 为什么我的原生库没有复制到 apk 中?

问题描述

我正在尝试使用一些本机库构建一个 android 应用程序。NDK 成功构建库,我可以在其中看到它们...\app\.externalNativeBuild\cmake\debug\arm64-v8a\src\<library>\lib<library>.a

但是当我运行应用程序时,我得到一个不满意的链接错误,当我分析 APK 时,找不到本地库;只有 libc++_shared.so。这是应用程序的 build.gradle 的相关部分:

externalNativeBuild {
    cmake {
        version "3.10.2"
        path "../../../CMakeLists.txt"
    }
}

defaultConfig {
    externalNativeBuild {
        cmake {
            arguments "-DENABLE_QT=0", // Don't use QT
                    "-DENABLE_SDL2=0", // Don't use SDL
                    "-DANDROID_ARM_NEON=true", // cryptopp requires Neon to work
                    "-DENABLE_CUBEB=0",
                    "-DANDROID_STL=c++_shared"

            abiFilters 'arm64-v8a'

            targets "citra-android"
        }
    }
}

标签: android-ndk

解决方案


如果您询问此存储库,那么您的问题在于src/android/app/src/main/cpp/CMakeLists.txt

add_library(citra-android STATIC
        dummy.cpp
        )

您应该使用SHARED而不是STATICfor Gradle 来生成共享对象文件 ( .so) 而不是.a文件。

希望有帮助,谢谢。


推荐阅读