gradle升级到3.3 DefaultManifestParser 编译不过

问题描述

在从gralde 2.x版本升级至3.3时,发现有编译不过的问题

问题1

assembleRelease.doFirst找不到。相应的doLastassembleDebug同理

// 原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()
}

NickZhou
1 声望1 粉丝

Android开发工程师 ~ 准备转型~(≧▽≦)/~啦啦啦