具有相应 ABI 架构的 Android APK Artifact 名称

标签 android gradle android-gradle-plugin

我正在尝试提取并使用 Artifact 的架构来组成输出文件名:

void defineDefaultVariantsAPK(String appName) {
    defineVariantsAPK({ variant, output ->
        def versionName = variant.versionName
        def versionCode = "-(${variant.versionCode}"
        def buildLetter = variant.buildType.name == "release" ? "-R" : "-D"
        def flavor = variant.productFlavors.size() > 0 ? "-${variant.productFlavors[0].name}" : ""
        def architecture = "-" + output.getFilter(com.android.build.OutputFile.ABI)

        "v${versionName}${versionCode}${buildLetter}${flavor}${architecture}--${appName}.apk"
    })
}

void defineVariantsAPK(Closure nameBuild) {
    android {
        applicationVariants.all { variant ->
            variant.outputs.each { output ->
                output.outputFile = new File((String) output.outputFile.parent, nameBuild(variant, output))
            }
        }
    }
}

出于某种原因,很多帖子都说这是解决方案,但我的 gradle 失败了:

> Could not get unknown property 'com' for project ':app' of type org.gradle.api.Project.

我试过使用导入:

unable to resolve class com.android.build.OutputFile

配置:

com.android.tools.build:gradle:2.3.3
Gradle version 3.5

所以我真的很想知道,我做了什么不同的事情,它不起作用?

最佳答案

从 Gradle 3.0.0 开始,您可以这样做:

applicationVariants.all { variant ->
    variant.outputs.all { output ->
        def appName = "AppName_"
        def buildType = variant.variantData.variantConfiguration.buildType.name
        def architecture = output.getFilter(com.android.build.OutputFile.ABI)
        def newName
        if (buildType == 'debug') {
            newName = "${appName}debug_${defaultConfig.versionName}_${architecture}.apk"
        } else {
            newName = "${appName}release_${defaultConfig.versionName}_${architecture}.apk"
        }
        outputFileName = newName
    }
}

*将其放入您的模块(应用程序)build.gradle 文件中。

关于具有相应 ABI 架构的 Android APK Artifact 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47808123/

相关文章:

android - 如何修复 "Gradle 5.4 requires Java 8 or later to run. Your build is currently configured to use Java 7"

android - Android SDK(模拟器)上的 Root 访问

Android Studio : Could not find org. jacoco :org. jacoco.agent :org. gradle.testing.jacoco.plugins.JacocoPluginExtension_Decorated

java - 如何让 lombok 与 Visual Studio Code 一起工作?

maven - Gradle 创建 pom 失败

gradle - 如何解决未链接的gradle项目?

android - 在 Android gradle 构建开始时根据风格复制文件

android - 安卓的轮播库

android - 错误 :(1) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'

android - 为什么我的应用程序在快速切换 fragment 时崩溃?