首页 文章

使用Gradle的Android构建和不包括库的产品风格

提问于
浏览
2

我有一个Android应用程序,我已经能够使用Gradle成功构建(使用Gradle 0.7) . 现在我想设置Gradle来构建两个独立的.APK,一个只有ARM本机库,另一个只有Intel x86本机库 . 我尝试过使用productFlavors,如下例所示:
How to configure NDK with Android Gradle plugin 0.7
但是,使用我的Gradle脚本中指定的productFlavor,.APK根本不包含任何库(libs目录本身不在.APK中) . 如果没有productFlavors,则包含库 - 尽管生成的APK将包含ARM和x86库 .

使用Gradle,似乎我们的库被放置在以下目录中:build / javaResources / release / lib / armeabi-v7a
Build / javaResources / release / lib目录/ 86
Build / javaResources /调试/ lib目录/ armeabi-V7A
Build / javaResources /调试/ lib目录/ 86
如果没有Gradle脚本中的productFlavors,Gradle似乎知道在这些目录中查找库 . 所以我继续说道 . 为什么包含productFlavor会阻止Gradle查找库?

1 回答

  • 3

    关于您所指的示例,您使用的是主帖或其最佳答案的片段吗?主帖中的那个有点过时了,也许这就是为什么它不适合你的项目 .

    您必须在productFlavors中使用 abiFilter 属性,并将本机库放在 jniLibs 文件夹中 . 这是一个build.gradle示例:

    apply plugin: 'com.android.application'
    
    android {
        compileSdkVersion 20
        buildToolsVersion "20"
    
        defaultConfig{
            minSdkVersion 15
            targetSdkVersion 20
            versionCode 101
            versionName "1.0.1"
        }
    
       flavorDimensions "abi"
    
        productFlavors {
            x86 {
                flavorDimension "abi"
                ndk {
                    abiFilter "x86"
                }
                versionCode 5
            }
            arm {
                flavorDimension "abi"
                ndk {
                    abiFilter "armeabi-v7a"
                }
                versionCode 2
            }
            all {
                flavorDimension "abi"
                versionCode 0
            }
        }
    
        // make per-variant version code
        applicationVariants.all { variant ->
            // get the version code of each flavor
            def abiVersion = variant.productFlavors.get(0).versionCode
    
            // set the composite code
            variant.mergedFlavor.versionCode = abiVersion * 100000 + defaultConfig.versionCode
        }
    }
    

    请注意,在此示例中,我还修改了每个productFlavor的应用程序的versionCode,因此它可以正常使用Play商店中的多个APK处理功能 .

    您可以在此获得有关这一切如何工作的更多背景信息:http://ph0b.com/android-studio-gradle-and-ndk-integration/

相关问题