【问题标题】:After update to Android Studio 2.2 / gradle plugin 2.2.0: "could not get unknown property 'assembleRelease'"更新到 Android Studio 2.2 / gradle plugin 2.2.0 后:“无法获得未知属性 'assembleRelease'”
【发布时间】:2016-09-20 09:33:05
【问题描述】:

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

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

感谢您的建议! 切线

【问题讨论】:

  • 您能提供更多代码吗?
  • 我做了一些更改,以便更清楚我想要做什么。
  • 看看这个:stackoverflow.com/a/38569576/2652124 要找到任务,您可以使用“在路径中查找”选项,如答案评论所述。
  • 感谢您的提示,但这并不能解决我的问题。但这很有帮助。

标签: android gradle android-studio-2.2


【解决方案1】:
tasks.whenTaskAdded { task ->
  if (task.name == 'assembleRelease') {
    task.finalizedBy 'yourRenameTasks'
  }
}

【讨论】:

  • 你把它放在哪里 - 在 app 模块或顶级项目目录中?
  • @IgorGanapolsky 应用模块
  • 按下绿色的“运行”按钮对我没有任何作用。
  • tasks.whenTaskAdded { task -> if (task.name == 'assembleDebug') { task.dependsOn 'setEnvDebug' } else if (task.name == 'assembleRelease') { task.dependsOn 'setEnvRelease' } }
【解决方案2】:

你可以稍微重写你的任务并尝试这样:

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

您也可以查看this问题以获得更好的理解。

编辑

正如@tangens 在评论中所说:

当我将调用 gradle assemble 替换为例如gradle 重命名BuildTask。谢谢!答案包含错误。正确的是:任务 renameBuildTask()

【讨论】:

  • 当我将调用 gradle assemble 替换为例如gradle renameBuildTask。谢谢!答案包含错误。正确的是:task renameBuildTask() &lt;&lt; { ... }
  • 你把它放在哪里,在 app 的 build.gradle 文件中?我收到一个错误:No signature of method java.lang.String.dependsOn() is applicable for argument types
【解决方案3】:

也许在 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

详情: Could not get unknown property 'assembleDebug' (2.2-beta)

【讨论】:

    【解决方案4】:

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

    Gradle 控制台显示 copyApk 在 packageOfficialRelease、assembleOfficialRelease 之后、最后一个任务 assembleRelease 之前运行接近尾声。 “官方”是应用程序的一种风格。 我从this SO post 得到了解决方法。为了您的方便,我基本上在这里复制了答案。所有学分归该帖子的作者所有。

    【讨论】:

    • 你将这些任务放到哪个 gradle 文件中?
    • 在应用的 build.gradle 中。
    【解决方案5】:

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

    【讨论】:

      【解决方案6】:

      你可以这样做:

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

      【讨论】:

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