android - .so 模块中定义的文件不会成为最终 APK 的一部分
问题描述
我已经通过转到添加库File->New->Import Module
。模块提供了多个.so
文件,并且不知何故它们不是最终 apk 文件的一部分,并且应用程序崩溃并显示以下错误消息。
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file
"/data/app/com.==/base.apk"],nativeLibraryDirectories=[/data/app/com.==/lib/arm, /data/app/com.==/base.apk!/lib /armeabi-v7a、/system/lib、/system/vendor/lib]]] 找不到“libAAA.so”
.so
文件在库模块的以下结构中定义。
src ->main ->jniLibs ->arm64-v8a/armeabi/x86/ -> libAA.so/libBB.so
库构建.gradle
dependencies {
compile 'com.android.support:support-v4:27.1.1'
compile fileTree(dir: 'libs', include: '*.jar')
compile fileTree(dir: "$buildDir/native", include: 'native.jar')
}
task nativeLibsToJar(type: Zip, description: 'create a jar archive of the native libs (*.so files)') {
destinationDir file("$buildDir/native")
baseName 'native'
extension 'jar'
from fileTree(dir: 'libs', include: '**/*.so')
into 'lib/'
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn(nativeLibsToJar)
}
设置
include ':app', ':myLibrary'
应用级别:build.gradle
android {
compileSdkVersion 27
defaultConfig {
ndk {
abiFilters "armeabi", "armeabi-v7a", "x86"
}
}
productFlavors {
}
aaptOptions {
cruncherEnabled = false
}
dexOptions {
javaMaxHeapSize "4g" //specify the heap size for the dex process
preDexLibraries false
}
lintOptions {
abortOnError false
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation project(':myLibrary')
}
repositories {
flatDir {
dirs 'libs'
}
}
我还安装了Native Libs Monitor,它没有显示.so
在库模块中定义的文件。
解决方案
这是文件夹结构:
src ->main ->jniLibs ->arm64-v8a/armeabi/x86/ -> libAA.so/libBB.so
这是 NDK 部分:
ndk {
abiFilters "armeabi", "armeabi-v7a", "x86"
}
-v8a 和 -v7a 是不同的。
推荐阅读
- php - 如何在相等的部分中循环数组和块?
- c# - 在 C# 中格式化十进制数
- python - 格式化 AWS lambda 请求的 Python 错误
- hyperledger-fabric - 无法使用 Hyperledger Fabric 节点 SDK 让对等方加入频道
- python - Keras 加载模型
- c# - 在 Python 中模仿 C# 类
- scripting - 用于修改身份验证数据条目的 wsadmin 脚本/命令参数
- python - TypeError:“int”对象不可下标 - 尝试创建 csv 文件时
- typescript - 使用 Typescript 构建纯 Vue 组件的最佳方法是什么
- python - BeautifulSoup 从 Web 获取表格时返回 No Data Recorded