Android Studio创建一个不包含jniLibs的构建变体/类型?

时间:2015-06-23 07:02:39

标签: java android android-studio gradle android-gradle

我有一个使用本机JNI库的Android应用程序。我将它放入app / src / main / jniLibs / armeabi-v7a,没有任何gradle配置,Android工作室很乐意将它捆绑到APK中。 我有一个要求,即所有本机库都不能与某个发行版捆绑在一起。是否可以创建一个构建变体或构建类型,它只是排除所有本机库(甚至可能是名称.so)。 本发行版中缺少本机库这一事实并不重要,因为它没有被使用。另一种方法是物理删除文件,运行构建,将它们放回去。然而,这是痛苦的并且容易出错。

1 个答案:

答案 0 :(得分:2)

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

我已使用productFlavoursflavorDimensions结合使用来实现可能包含或不包含jni库的构建。

根据我的理解,它的主旨是:productFlavors使您能够拥有x,y ...类型的n个变体,添加flavorDimensions将使您能够拥有xy类型的n个变体。

EG。在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