请原谅我拙劣的术语,因为我对NDK不太熟悉。

我使用两个库。一个为armeabi生成本机* .so库,另一个为armeabi-v7a生成库。我想定义一个层次结构,首先使用arm v7a库,然后使用基本的arm。目前,我正在使用:

    ndk {
        abiFilters "armeabi-v7a", "x86", "armeabi"
    }

定义我拥有库的芯片组,但这只会引入决定的特定芯片组。即,如果设备是armeabi-v7a,则将提取“armeabi-v7a” *。so库,而不是“armeabi”。如果我从配置中删除“armeabi-v7a”,则将“armeabi”拉入。

有没有一种方法可以使用 flavor 或其他某种机制在应用程序的build.gradle中定义层次结构? This seems possible using Android.mk,但这似乎更适合我自己生成这些* .so文件的情况,而我不是。我只是想使用包含在我的项目中的.jar(s)或.aar(s)中的* .so文件。

最佳答案

对于庞大的APK(一个APK中包含多个ABI的库),Android的程序包管理器将为您正在运行的设备选择正确的库。

对于拆分的APK(每个ABI有一个APK),Play商店负责安装正确的APK:http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits

10-08 19:34