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)
将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 次 |
| 最近记录: |