gradle升级到3.3 DefaultManifestParser 编译不过
问题描述
在从gralde 2.x版本升级至3.3时,发现有编译不过的问题
问题1
assembleRelease.doFirst
找不到。相应的doLast
和assembleDebug
同理
// 原gradle2.x 版本代码
assembleRelease.doFirst {
if (!project.hasProperty('RELEASE_PATH')) return;
if (localPack) return;
gReleasePathStr = releasePath()
println "gReleasePathStr=${gReleasePathStr}"
gMappingDirStr = "${projectDir}" + File.separator + "build" + File.separator + "outputs" + File.separator + "mapping" + File.separator + "release"
println "gMappingDirStr=${gMappingDirStr}"
def releaseDir = new File(gReleasePathStr)
if (!releaseDir.exists()) {
releaseDir.mkdirs()
}
}
// 升级到gradle3.3后的代码
tasks.whenTaskAdded() {
task ->
if (task.name == 'assembleRelease') {
task..doFirst {
if (!project.hasProperty('RELEASE_PATH')) return;
if (localPack) return;
gReleasePathStr = releasePath()
println "gReleasePathStr=${gReleasePathStr}"
gMappingDirStr = "${projectDir}" + File.separator + "build" + File.separator + "outputs" + File.separator + "mapping" + File.separator + "release"
println "gMappingDirStr=${gMappingDirStr}"
def releaseDir = new File(gReleasePathStr)
if (!releaseDir.exists()) {
releaseDir.mkdirs()
}
}
}
}
问题2
assembleRelease.dependsOn customFindbugs
想在打release包时进行FindBugs检查
修改为:
tasks.whenTaskAdded() {
task ->
if (task.name == 'assembleRelease') {
task.dependsOn customFindbugs
}
}
问题3
想获取Manifest中的版本号versionName和versionCode,原来使用的是DefaultManifestParser
获取,但是升级后,这个方法接口该了,需要传一个File文件进去。
// 原gradle2.x
/**
* 获取manifest里面的version name
*/
def getManifestVersionName = { ->
return new DefaultManifestParser().getVersionName(android.sourceSets.main.manifest.srcFile)
}
升级后
def getManifestVersionName = { ->
return new DefaultManifestParser(android.sourceSets.main.manifest.srcFile).getVersionName()
}