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

在将Android Studio更新至2.2版并将Gradle插件更新2.2.0后 ,出现以下错误:

“无法获取types为org.gradle.api.Project的项目”app:“的未知属性”assembleRelease“。

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

我的代码:

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") } 

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

感谢您的build议! tangens

Solutions Collecting From Web of "更新到Android Studio 2.2 / gradle插件2.2.0之后:“无法获取未知属性”assembleRelease“”"

你可能会重写你的任务,并尝试这样做:

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

你也可以检查这个问题,以获得更好的理解。

编辑

正如@tangens在评论中所言:

当我用例如gradle renameBuildTaskreplace调用gradle组装时,它工作。 谢谢! 答案包含错误。 正确的是:任务renameBuildTask()<< {…}

 tasks.whenTaskAdded { task -> if (task.name == 'assembleRelease') { task.finalizedBy 'yourRenameTasks' } } 

也许包装代码afterEvaluate {}将工作:

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

gradle-2.14.1和android gradle插件2.2.0

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

将Android Studio升级到2.2和Gradle到2.2后,我遇到了同样的问题。 我有任务copyApk需要在build设结束时运行。 为了简洁,让我跳过以前的工作,只发布现在正在工作的内容:

 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' } } 

Gradle控制台显示copyApk在packageOfficialRelease,assembleOfficialRelease之后的最后,在最后一个任务assembleRelease之前运行。 “官方”是应用程序的味道。 我从这个SOpost得到了解决方法。 为了您的方便,我从本质上复制了答案。 所有学分都发送到该post的作者。

里面的buildTypes {}方法,我把这个代码:像一个魅力工作

 task setEnvRelease << { ant.propertyfile( file: "src/main/assets/build.properties") { entry(key: "EO_WS_DEPLOY_ADDR", value: "http://PRODUCTION IP") } } task setEnvDebug << { ant.propertyfile( file: "src/main/assets/build.properties") { entry(key: "EO_WS_DEPLOY_ADDR", value: "http://DEBUG IP TEST") } } tasks.whenTaskAdded { task -> if (task.name == 'assembleDebug') { task.dependsOn 'setEnvDebug' } else if (task.name == 'assembleRelease') { task.dependsOn 'setEnvRelease' } } 

你可以这样做:

 task copyApk(dependsOn: "assembleRelease") << { file('build/outputs/apk/app-release.apk').renameTo("AppName-1.0.0-${project.ext.androidVersionCode}.apk") }