在從gralde 2.x版本升級至3.3時,發現有編譯不過的問題android
assembleRelease.doFirst
找不到。相應的doLast
和assembleDebug
同理app
// 原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() } } } }
assembleRelease.dependsOn customFindbugs
想在打release包時進行FindBugs檢查gradle
修改成:ui
tasks.whenTaskAdded() { task -> if (task.name == 'assembleRelease') { task.dependsOn customFindbugs } }
想獲取Manifest中的版本號versionName和versionCode,原來使用的是DefaultManifestParser
獲取,可是升級後,這個方法接口該了,須要傳一個File文件進去。code
// 原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() }