【问题标题】:Could not get unknown property 'apkNames' in android gradle plugin 4.1.0无法在 android gradle 插件 4.1.0 中获取未知属性“apkNames”
【发布时间】:2020-10-29 09:43:09
【问题描述】:

我在 build.gradle 中使用此代码:

android {
    applicationVariants.all { variant ->
        variant.packageApplicationProvider.configure { packageApplicationTask ->
            doLast {
                packageApplicationTask.apkNames.each { apkName ->
                    def apkDir = "./build/outputs/apk/${flavorName}/${buildType.name}"
                    def apkDestName = apkName.replace("app-", "stickerly-android-" + variant.versionName + "-").replace(".apk", "-" + getDate() + ".apk")

                    println "#####Rename ${variant.name} Apk File"
                    copy {
                        from("$apkDir/$apkName").into(apkDir).rename { String fileName -> apkDestName }
                    }

                    println "#####Copy mapping File"
                    def mappingDir = "./build/outputs/mapping/${flavorName}${buildType.name.capitalize()}"
                    copy {
                        from("$mappingDir/mapping.txt").into(mappingDir).rename {
                            "mapping-stickerly-${variant.versionName}.txt"
                        }
                    }
                }
            }
        }
    }
}

使用此代码,我重命名 apk 文件并复制映射文件。我在 android gradle 插件 4.0 中工作,但在 4.1 中无法使用此消息

地点:

脚本 '/Users/snow/workspace/stickerly-android/app/build-android-extra.gradle' 行:5

出了什么问题:

任务“:app:packageExternalArm8Debug”执行失败。 无法获取 com.android.build.gradle.tasks.PackageApplication 类型的任务 ':app:packageExternalArm8Debug' 的未知属性 'apkNames'。

我认为 API 已更改,但我找不到任何文档。有人可以帮助我吗? 谢谢。

【问题讨论】:

    标签: android gradle android-gradle-plugin


    【解决方案1】:

    属性 apkNames 在 AGP 4.1 中被删除

    你可以试试这个

    
    gradle.taskGraph.afterTask { Task task, TaskState state ->
        if (!state.failure
                && task.project.name == project.name
                && task.name.startsWith("package")
                && !task.name.endsWith("UnitTest")) {
            def outputDir = task.outputDirectory.getAsFile().get()
            task.variantOutputs.getOrNull()?.each { variant ->
                println "" + outputDir + "/" + variant.outputFileName.get()
            }
        }
    }
    
    

    将此添加到 build.gradle 文件的末尾。

    println 更改为您想要的任何逻辑。

    顺便说一句,如果你想检查你可能使用的属性,只需将gradle插件添加为你的项目的依赖,在Android Stuido中点击Sync,然后你可以在External Librarys中找到它(键映射:Command + 1,并切换到项目视图)。

    喜欢这个

    dependencies {
        implementation 'com.android.tools.build:gradle:4.1.0'
    }
    

    这些属性和任务在 lib com.android.tools.build:gradle-api 中是故意不可见的,预计在未来版本中会进行修改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-14
      • 2021-08-05
      • 2021-07-19
      • 2021-02-26
      • 2021-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多