Android apk – 如何使用gradle从第三方依赖项中排除.so文件

我有一个有几个依赖项的android项目。 其中两个(让我们称之为依赖关系A和B)具有本机库(.so文件)。

依赖关系A具有以下体系结构:arm64-v8a,armeabi,armeabi-v7a,x86和x86_64。 依赖关系B具有以下体系结构:armeabi,x86

因此,当我的应用程序在armeabi-v7a设备(例如)上运行,并且依赖关系B调用本机方法时,它无法find相关的库来获取它(因为它不存在于armeabi-v7a文件夹中而且不会回退自动到armeabi图书馆所在的地方)。

有什么方法可以解决这个问题吗? 例如,我可以在build.gradle文件中添加一些配置,以便arm64-v8a,armeabi-v7a和x86_64文件夹不能集成到我的最终apk中吗?

我尝试过packagingOptions / exclude,但没有结果:问题中的文件夹仍然存在。

尝试一个干净的构建,我没有,它仍然从上一个版本中获取文件。 我最终删除了我的app / build /文件夹以确定。

android { packagingOptions { exclude 'lib/armeabi-v7a/libSomeLibYouDontWant.so' } } 

在以前崩溃的应用程序上为我工作。

另一种方法是使用

 android{ defaultConfig{ ndk{ abiFilters "armeabi", "x86" } } } 

有一些类似的问题可能会有所帮助

Gradle排除arm64库

如何在64位Android设备上使用32位本机库