我正在使用'com.android.tools.build:gradle:2.2.0-alpha6'和Android Studio 2.2 Preview 6.在Gradle 2.1.0上构建运行完全正常,但为了启用即时运行,它要求我更新Gradle插件.
在更新Gradle插件时,构建显示"Error:Could not find property 'assembleDebug' on project ':app'".我已经尝试过清理.gradle并.idea重新加载项目,但没有任何效果.
请帮忙.
将Android Studio更新为2.2版并将gradle插件更新为2.2.0后,出现以下错误:
错误:(32,1)评估项目':jobdispatcher'时出现问题.无法为org.gradle.api.Project类型的项目':jobdispatcher'获取未知属性'assembleRelease'.
问题出在导入的jobdispatcher模块的build.gradle文件中:
task aar(dependsOn: assembleRelease)
Run Code Online (Sandbox Code Playgroud)
我可以做些什么改变来解决这个问题?
请注意,此问题与此处报告的内容非常相似,但仍有些不同.
用Gradle构建我的最终输出文件后,我想做两件事.更新本地version.properties文件并将最终输出final复制到某个特定目录以进行存档.假设我已经有2种方法实现的正是我刚才描述的那些,updateVersionProperties()和archiveOutputFile().
我知道想知道最好的方法是什么......
备选方案A:
assembleRelease.doLast {
updateVersionProperties()
archiveOutputFile()
}
Run Code Online (Sandbox Code Playgroud)
备选方案B:
task myBuildTask(dependsOn: assembleRelease) << {
updateVersionProperties()
archiveOutputFile()
}
Run Code Online (Sandbox Code Playgroud)
在这里,我将调用myBuildTask而不是assembleRelease,如替代A.
推荐哪种方式,为什么?一个优于另一个有什么优势吗?想请一些澄清... :)
首先:这不是重复的
错误:在项目':app'上找不到属性'assembleDebug'
问题:
自从更新到Android Studio 2.2(gradle插件2.2)以来,您无法再以此方式完成任务assembleDebug或assembleRelease依赖于新任务:
assembleDebug.dependsOn 'checkstyle'
本期更多细节
它会给您以下错误:
错误:无法为org.gradle.api.Project类型的项目':app'获取未知属性'assembleDebug'.
我在build.gradle文件的末尾有这个代码:
project.afterEvaluate {
// If you add/change build types, you have to add to/change
// these task names.
mergeDebugAssets.dependsOn project.tasks.getByName('downloadLicenses')
mergeReleaseAssets.dependsOn project.tasks.getByName('downloadLicenses')
}
Run Code Online (Sandbox Code Playgroud)
请参阅:将生成的第三方许可证复制到资产以获取完整代码
这曾经工作正常(无论设置了哪个buildType),但如果将我的依赖项更新到最新版本,则会触发异常(使用buildType ='debug'构建时):
Could not get unknown property 'mergeReleaseAssets' for project ':application'
我的想法是,可能将此块拆分为两个并将它们置于buildTypes配置下.这不起作用,因为它试图无论如何评估代码并崩溃.
有任何想法吗?
更新1:根本原因? https://code.google.com/p/android/issues/detail?id=219732
更新2:一个可怕的解决方法:
try {
mergeDebugAssets.dependsOn project.tasks.getByName('downloadLicenses')
} catch (Exception e) {
// Expected when building variant Release
}
try {
mergeReleaseAssets.dependsOn project.tasks.getByName('downloadLicenses')
} catch (Exception e) {
// Expected when building variant Debug
}
Run Code Online (Sandbox Code Playgroud)