android - 我如何将我的本机库放在 obj/local 上
问题描述
所以,我已经制作了一个 Android.mk 文件,并且我认为它已经完成了它的工作。我正在使用 .so 文件,但我没有它们的源文件。
这是我的 Android.mk 文件。
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := wfdsinkemu
LOCAL_SRC_FILES := lib/armeabi-v7a/libwfdsinkemu.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := gstreamer_android
LOCAL_SRC_FILES := lib/armeabi-v7a/libgstreamer_android.so
include $(PREBUILT_SHARED_LIBRARY)
这是我的 Application.mk 文件。
APP_ABI := all
APP_OPTIM := release
APP_PLATFORM := android-8
APP_STL := c++_shared
APP_BUILD_SCRIPT := jni/Android.mk
APP_MODULES := libgstreamer_android libwfdsinkemu
但我认为本机库仍未复制到 obj/local 文件夹中,因为该应用程序仍会因 UnsatisfiedLinkError 而崩溃。
我已经在使用 ReLinker 它仍然显示此错误。
Fatal Exception: java.lang.UnsatisfiedLinkError: dlopen failed: library "./obj/local/armeabi-v7a/libgstreamer_android.so" not found
顺便说一句,我正在尝试在运行牛轧糖的 android 盒子上进行这项工作。
在将我的 targetSdkVersion 从 26 降级到 22 后,它与我认为使用 AlertDialog 显示的错误一起工作。错误是
Detected problems with app native libraries
(please consult log for detail):
libwfdsinkemu.so: invalid DT_NEEDED entry "./obj/local/armeabi-v7a/libgstreamer_android.so"
解决方案
你需要告诉 gradle 你已经预建了 NDK 库。
https://developer.android.com/studio/projects/gradle-external-native-builds#jniLibs
android {
...
sourceSets {
main {
jniLibs.srcDirs 'imported-lib/src/', 'more-imported-libs/src/'
}
}
}
推荐阅读
- azure-devops - 如何在 Azure DevOps 中为自托管代理并行运行多个管道
- python - 矩阵形式的贝塞尔曲线的导数
- python-3.x - 为什么我的脚本找不到正确的字典值?
- reactjs - 如何在模态中转到下一页
- python - 数据框熊猫内的数组错误:列的长度必须与键的长度相同
- java - JTextArea 中的命令行指示器
- python - 如何为包含大约 500 列作为 y 变量的文件创建线性回归模型?使用 Python
- mongodb - Mongo 查询持续时间
- reactjs - 为什么 React 无法在生产环境中访问 Flask 端点?
- r - 如何在向量或矩阵索引上使用应用函数系列