更新到Android Studio 2.2/gradle插件2.2.0后:"无法获取未知属性'assembleRelease'"

tan*_*ens 25 android gradle android-studio-2.2

Android Studio更新到2.2版并将Gradle-plugin更新2.2.0后,出现以下错误:

"无法为org.gradle.api.Project类型的项目':app'获取未知属性'assembleRelease'."

当我将插件版本更改回2.1.3时,代码仍然有效,但这对我来说不是长期选择.

我的代码:

apply plugin: 'com.android.application'

dependencies {
...
}

android {
...
}

...    
assembleRelease.doLast {
  file('build/outputs/apk/app-release.apk').renameTo("AppName-1.0.0-${project.ext.androidVersionCode}.apk")
}
Run Code Online (Sandbox Code Playgroud)

提示: project.ext.androidVersionCode是在其他地方定义的变量,包含内部版本号.assembleRelease.doLast中的代码只需移动/重命名生成的apk文件.

谢谢你的建议!tangens

小智 16

tasks.whenTaskAdded { task ->
  if (task.name == 'assembleRelease') {
    task.finalizedBy 'yourRenameTasks'
  }
}
Run Code Online (Sandbox Code Playgroud)


Vol*_*myr 15

您可以稍微重写一下您的任务并尝试这样:

task renameBuildTask() << {
  file('build/outputs/apk/app-release.apk').renameTo("AppName-1.0.0-${project.ext.androidVersionCode}.apk")
  dependsOn 'assembleRelease'
}
Run Code Online (Sandbox Code Playgroud)

您也可以查看问题以便更好地理解.

编辑

正如@tangens在评论中所说:

当我用gradle renameBuildTask替换call gradle assemble时,它可以工作.谢谢!答案包含错误.正确的是:task renameBuildTask()<< {...}


小智 7

也许在afterEvaluate {}中包装代码将起作用:

afterEvaluate {
    assembleRelease.doLast {
       file('build/outputs/apk/app-release.apk').renameTo("AppName-1.0.0-${project.ext.androidVersionCode}.apk")
    }
}
Run Code Online (Sandbox Code Playgroud)

gradle-2.14.1和android gradle插件2.2.0

详细信息: 无法获取未知属性'assembleDebug'(2.2-beta)


Hon*_*ong 5

将Android Studio升级到2.2并将Gradle升级到2.2后,我遇到了同样的问题.我有任务copyApk需要在构建结束时运行.为简洁起见,让我跳过之前正在工作的内容,并仅发布现在正在运行的内容:

tasks.create(name: 'copyApk', type: Copy) {
    from 'build/outputs/apk/myapp-official-release.apk'
    into '.../mobile'
    rename('myapp-official-release.apk', 'myapp.apk')
}

tasks.whenTaskAdded { task ->
    if (task.name == 'assembleRelease') {
        task.dependsOn 'copyApk'
    }
}
Run Code Online (Sandbox Code Playgroud)

Gradle控制台显示copyApk在packageOfficialRelease,assembleOfficialRelease之后,在最后一个任务assembleRelease之前运行."官方"是应用程序的味道.我从这篇SO帖子中得到了解决方法.为了您的方便,我基本上复制了答案.所有学分都归该帖子的作者所有.


归档时间:

查看次数:

22174 次

最近记录:

8 年,8 月 前