Android';*。因此';可调试标志为false时缺少库(独立于生成变量)

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在安装应用程序时不会存储在设备上。只有

我们正在尝试为我们的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
在安装应用程序时不会存储在设备上。只有
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还这样做吗?我会试试这个,然后回来汇报。