Android Studio 创建不包括 jniLibs 的构建变体/类型?

Android Studio create a build variant / type excluding jniLibs?

我有一个使用本机 JNI 库的 Android 应用程序。我在没有任何 gradle 配置的情况下将它放入 app/src/main/jniLibs/armeabi-v7a,并且 Android studio 很乐意将它捆绑到 APK 中。

我有一个要求,所有本机库不能与特定发行版捆绑在一起。是否可以创建一个简单地排除所有本机库的构建变体或构建类型(甚至可以按名称.so)。

本发行版中缺少本机库并不重要,因为它未被使用。另一种方法是物理删除文件,运行 构建,然后将它们放回去。然而,这是痛苦的并且容易出错。

从您的build.gradle,我们或许能够准确地知道要做什么。

我使用 productFlavours 结合 flavorDimensions 来实现可能包含也可能不包含 jni 库的构建。

据我了解,要点是:productFlavors 使您能够拥有 x、y... 类型的 n 个变体,添加 flavorDimensions 将使您能够拥有 xy 的 n 个变体类型。

例如。里面 build.gradle,

    flavorDimensions "abi", "version"  //this is what can help you build with/w/o jni libraries

    productFlavors {
        devel {
            flavorDimension "abi" //keep a dimension common with arm, armv7
            applicationId "com.packagename.dev"
        }
        prod {
       flavorDimension "version"
    // this would be your build w/o the ndk support then
            applicationId "com.packageName"
        }
        armv7 {
            ndk {
                flavorDimension "abi"
                abiFilter "armeabi-v7a"
            }
        }
        arm {
            ndk {
                flavorDimension "abi"
                abiFilter "armeabi"
            }
        }

    }    

如您所见,您将拥有多个构建变体,产品风格取决于 flavorDimension

prod flavor 是一种构建变体或构建类型,它只排除所有本机库

ndk、jniLibs、buildFlavours 主题的来源...:
- Mastering "Product Flavors" on Android
- ndk-with-android-studio
- multi flavor setup