Android 带有 2 个库和 jniLibs 的应用程序 - 使应用程序崩溃
Android App with 2 library with jniLibs - crash the app
在我的 android 应用程序中,我使用了两个库,每个库都有自己的 jniLibs。
图书馆 1 - https://github.com/tekinarslan/AndroidPdfViewer
库 2 - 自定义视频播放器 sdk
该应用程序可以正常编译和构建。
两个库的 jniLib 都在正确的位置。
似乎只有一个库可以工作,在本例中是 pdfView。库 2 被调用。它坏了,日志说它不能为它加载 jniLibs。
有人遇到过吗?谢谢
Update code after chaeyoungx feedback:
应用Build.gradle:
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.my.app"
minSdkVersion 17
targetSdkVersion 22
versionCode 14
versionName "1.0"
ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86", "mips" }
}
....
我在两个文件中都尝试了以下代码:gradle.properties(项目和全局)
android.useDeprecatedNdk=true
Still have the same problem.
我也尝试为我的应用程序导入 2 个库,但出现了同样的错误。
我在网上找到了解决方案,下面是我解决问题的方法:
转到 gradle.properties 并添加 android.useDeprecatedNdk=true
然后打开你的应用程序文件夹中的build.gradle然后输入
ndk {
abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
}
在默认配置中{
在此之后我只是清理并重建了项目并且没有错误地工作。
希望这对你有用。
确保您为每个 abi 构建了库。查看您的最终 apk 文件。在文件夹 libs 中,您会找到包含每个 abi 的 libs 的文件夹。每个库中都应该有相同的库。
如果你没有足够的:
- 为其他 abis 构建您的库
排除这些文件夹,即
armeabi
lib1.so
lib2.so
lib3.so
armeabi-v7a
lib1.so
lib2.so
lib3.so
arm64-v8a
lib1.so
在这种情况下,arm64 设备将转到 arm64-v8a 文件夹并尝试查找 lib2、lib3,但找不到。所以在 java 应用程序的 gradle 文件中排除 arm64-v8a 文件夹,因此 arm64 设备可以使用 armeabi 文件夹。
在我的 android 应用程序中,我使用了两个库,每个库都有自己的 jniLibs。
图书馆 1 - https://github.com/tekinarslan/AndroidPdfViewer
库 2 - 自定义视频播放器 sdk
该应用程序可以正常编译和构建。
两个库的 jniLib 都在正确的位置。
似乎只有一个库可以工作,在本例中是 pdfView。库 2 被调用。它坏了,日志说它不能为它加载 jniLibs。
有人遇到过吗?谢谢
Update code after chaeyoungx feedback:
应用Build.gradle:
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.my.app"
minSdkVersion 17
targetSdkVersion 22
versionCode 14
versionName "1.0"
ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86", "mips" }
}
....
我在两个文件中都尝试了以下代码:gradle.properties(项目和全局)
android.useDeprecatedNdk=true
Still have the same problem.
我也尝试为我的应用程序导入 2 个库,但出现了同样的错误。
我在网上找到了解决方案,下面是我解决问题的方法:
转到 gradle.properties 并添加 android.useDeprecatedNdk=true
然后打开你的应用程序文件夹中的build.gradle然后输入
ndk { abiFilters "armeabi", "armeabi-v7a", "x86", "mips" }
在默认配置中{
在此之后我只是清理并重建了项目并且没有错误地工作。
希望这对你有用。
确保您为每个 abi 构建了库。查看您的最终 apk 文件。在文件夹 libs 中,您会找到包含每个 abi 的 libs 的文件夹。每个库中都应该有相同的库。 如果你没有足够的:
- 为其他 abis 构建您的库
排除这些文件夹,即
armeabi lib1.so lib2.so lib3.so armeabi-v7a lib1.so lib2.so lib3.so arm64-v8a lib1.so
在这种情况下,arm64 设备将转到 arm64-v8a 文件夹并尝试查找 lib2、lib3,但找不到。所以在 java 应用程序的 gradle 文件中排除 arm64-v8a 文件夹,因此 arm64 设备可以使用 armeabi 文件夹。