描述
本篇博客是解決之前 debug/release 修改包名,取不同包名下的agconnect-services.json 文件遺留的不完美解決方案的,當(dāng)時(shí)如果需要切換包名,需要手動(dòng)刪除agconnect-services.json 文件状囱,比較麻煩,這篇博客來解決這個(gè)問題
解決方案
def isUseReleaseAppPackageName = false 是否使用正式環(huán)境的包名
android {
signingConfigs {
.....省略代碼
}
defaultConfig {
.....省略代碼
}
buildTypes {
debug {
.....省略代碼
}
release {
.....省略代碼
}
//復(fù)制文件
task copyAgconnecToRelease(type: Copy) {
from "src/pushservices/release/"
include "agconnect-services.json"
into "./"
}
//復(fù)制文件
task copyAgconnecToDebug(type: Copy) {
from "src/pushservices/debug/"
include "agconnect-services.json"
into "./"
}
//刪除文件
task deleteAgconnecFile(type: Delete) {
delete("./agconnect-services.json")
}
afterEvaluate {
tasks.matching {
it.name.equals("processDebugAGCPlugin") || it.name.equals("processReleaseAGCPlugin") || it.name.equals("assembleDebug") || it.name.equals("assembleRelease") || it.name.equals("bundleRelease")
}.each {task->
if(task.getName().equals("processDebugAGCPlugin")){
if (isUseReleaseAppPackageName ) {
task.dependsOn(copyAgconnecToRelease)
} else {
task.dependsOn(copyAgconnecToDebug)
}
}else if(task.getName().equals("processReleaseAGCPlugin")){
task.dependsOn(copyAgconnecToRelease)
}else if(task.getName().equals("assembleDebug") || task.getName().equals("assembleRelease") || it.name.equals("bundleRelease")){
if(task.getName().equals("assembleDebug")){
if (isUseReleaseAppPackageName ) {
task.dependsOn(copyAgconnecToRelease)
} else {
task.dependsOn(copyAgconnecToDebug)
}
}else{
task.dependsOn(copyAgconnecToRelease)
}
}
}
}
//判斷是否為debug模式
def isReleaseBuildType(){
boolean isReleaseTypes = false;
for(String s : gradle.startParameter.taskNames) {
if (s.equals(":app:assembleRelease")) {
isReleaseTypes = true;
break;
}
}
return isReleaseTypes;
}
這里出現(xiàn)了processReleaseAGCPlugin 與 processReleaseAGCPlugin倘是,這個(gè)的作用是檢測(cè)agconnect-services.json 文件里面包名是否對(duì)應(yīng)上的亭枷,所以這里我們要單獨(dú)的處理。
我們還針對(duì) copyAgconnecToRelease 與 copyAgconnecToDebug 2個(gè)task做了判斷搀崭,判斷文件是否存在叨粘,如果存在我們先刪除之前的,再重新拷貝過來到根目錄门坷,這樣我們就不用再次的手動(dòng)操作這些東西了宣鄙。