android-ndk - 为什么我的原生库没有复制到 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"
}
}
}
解决方案
如果您询问此存储库,那么您的问题在于src/android/app/src/main/cpp/CMakeLists.txt
:
add_library(citra-android STATIC
dummy.cpp
)
您应该使用SHARED
而不是STATIC
for Gradle 来生成共享对象文件 ( .so
) 而不是.a
文件。
希望有帮助,谢谢。
推荐阅读
- android - 如何在 Kotlin X 时间后显示插页式广告?
- javascript - 根据路径和正则表达式过滤 JSON
- c++ - 有没有办法在 Qt 中一次设置多个图标的图标大小(即小部件中的所有图标)?
- sql - 从表中获取第一列具有相同值而第二列具有不同值的行
- scala - 为什么 SonarQube 会发现这个问题(
() 使用副作用构造函数) 与案例和对象类文件? - c# - PowerBI 的 HttpWebRequest.GetResponse() 问题
- azure - 如何在 Azure 中部署 bot 框架 v3 bot?
- google-cloud-platform - 无法 ssh 进入在自定义端口上运行的 VM 实例
- c++ - 如何将 qspaceritem 添加到 qgridlayout
- java - 错误:无法在 Docker 上找到或加载主类