Android';*。因此';可调试标志为false时缺少库(独立于生成变量)
我们正在尝试为我们的android项目使用一些“.so”预构建库。这些是:Android';*。因此';可调试标志为false时缺少库(独立于生成变量),android,gradle,shared-libraries,build.gradle,abi,Android,Gradle,Shared Libraries,Build.gradle,Abi,我们正在尝试为我们的android项目使用一些“.so”预构建库。这些是: mpeg.so&lib\u arch.so 当gradle的debugable标志为true时,.so“文件在.apk”文件中可见(使用ApkAnalyzer确认),并且在安装应用程序时,/data/app/-jekswbj/lib文件夹中也可以找到它们 当debugable标志设置为false时,.so文件在.apk文件中可见(使用ApkAnalyzer确认)。但是,mpeg.so在安装应用程序时不会存储在设备上。只有
mpeg.so
&lib\u arch.so
当gradle的debugable
标志为true时,.so“文件在.apk”文件中可见(使用ApkAnalyzer确认),并且在安装应用程序时,/data/app/-jekswbj/lib
文件夹中也可以找到它们
当debugable
标志设置为false时,.so文件在.apk文件中可见(使用ApkAnalyzer确认)。但是,mpeg.so
在安装应用程序时不会存储在设备上。只有lib_arch.so
被找到
以下是我的build.gradle
文件的片段
// buildTypes: debug {}
debug {
debuggable false
minifyEnabled false
ext.enableCrashlytics = false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
// splits: abi
splits {
abi {
enable true
reset()
include 'x86', 'x86_64', 'arm64-v8a', 'armeabi-v7a'
universalApk true
}
}
我们的“.so”文件存储在/libs中/
因此,当debuggable
为true时,会找到mpeg.So
文件,但当debuggable
为false时,会丢失该文件。是什么导致了这个问题?如果您需要,我可以提供更多信息。对我来说,解决方案是在所有库前面加上关键字lib.
。对,对
我的图书馆名称如下:
更改前:
mpeg.so
lib_arch.so
变更后:
lib_mpeg.so
lib_arch.so
现在,我可以在apk和安装目录中找到它们
我发现最相关的是:
注意:如果模块的名称已以lib开头,则生成系统不会在前面附加lib前缀;它按原样接受模块名,并添加.so扩展名。因此,最初名为libfoo.c的源文件仍然会生成名为libfoo.So的共享对象文件。此行为是为了支持Android平台源代码从Android.mk文件生成的库;所有这些库的名称都以lib开头
而且,我甚至没有使用ndk或android.mk,我发现最近的一个问题也没有帮助:如何使用/加载这些.SO文件到你的应用程序中?通过System.loadLibrary?@user1506104我没有加载它们。我正在将它们从安装位置复制到应用程序的文件
文件夹中。然后,我在“.so”文件上执行命令。如果有意义的话,mpeg.so
是ffmpeg的.so文件。proguard android optimize.txt
可能正在删除.so文件,因为您没有加载它。您不能使用proguard android.txt
版本吗?@user1506104但是,minifyEnabled
为false。proguard还这样做吗?我会试试这个,然后回来汇报。