繁体   English   中英

Android 工作室风味尺寸全部加工,未选一

[英]Android studio flavor dimensions processed all, not selected one

我在模块 build.gradle 文件中有一个风味维度,并且 gradle 构建过程贯穿所有构建变体,无论实际构建变体是什么。 这是模块 build.gradle:

flavorDimensions 'type', 'jnitype'
    productFlavors {
        demo {
            dimension 'type'
            versionNameSuffix '.demo'
        }
        production {
            dimension 'type'
            versionNameSuffix '.production'
        }
        usejni {
            dimension 'jnitype'
            versionNameSuffix '.usejni'
            copy {
                from('../jnilib/data') {
                    include 'sdk_data.gpu'
                    .... 
                }
                into 'src/main/assets/data'
            }
        }
        nojni {
            dimension 'jnitype'
            versionNameSuffix '.nojni'
            delete('src/main/assets/data/*.*')
            packagingOptions {
                exclude 'lib/arm64-v8a/sdk.so'
                ...
            }
        }
    }

因此,无论选择什么构建变体,demoUsejni 或 demoNojni,gradle 都会运行“usejni”,然后是“nojni”变体——它会复制文件和库,然后删除它们。 我使用 gradle 调试来确认这一点。

如何告诉 gradle 仅使用选定的构建风格?

AS 3.5.2、gradle 插件 5.4.1、android 构建工具 3.5.2。

最后找到解决方法:使用 gradle 任务名称检查所需的风味。 对于编译类型 gradle 的操作,任务名称将为“:module_name:assembleFlavor1Flavor2...FlavornBuildtype”。 所以我会检查“assemble”和“Nojni”/“Usejni”。

String taskName = "";
if (gradle.startParameter.taskNames.size > 0)
    taskName = gradle.startParameter.taskNames.get(0)

usejni {
    dimension 'jnitype'
    versionNameSuffix '.usejni'
    if (taskName.contains("Usejni") && taskName.contains("assemble")) {
        copy {
            from('../jnilib/data') {
                include 'sdk_data.gpu'
                .... 
            }
            into 'src/main/assets/data'
        }
    }
}
nojni {
    dimension 'jnitype'
    versionNameSuffix '.nojni'
    if (taskName.contains("Nojni") && taskName.contains("assemble")) {
        delete('src/main/assets/data/*.*')
        packagingOptions {
            exclude 'lib/arm64-v8a/sdk.so'
            ...
        }
    }
}

就像一个魅力!

在此答案中找到解决方案的提示: How to get current buildType in Android Gradle configuration

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM