debug/release 修改包名杏瞻,取不同包名下的agconnect-services.json 文件

博客更新 2020-05-20

debug/release 修改包名晴叨,取不同包名下的agconnect-services.json 文件 V2 解決每次更換包名涂召,都是要手動(dòng)刪除agconnect-services.json文件操作

問題描述

我在打多渠道包的時(shí)候舟陆,我需要區(qū)分debug版本误澳,release版本,其中涉及到包名的不同秦躯,我使用release編譯的時(shí)候忆谓,發(fā)現(xiàn)如下錯(cuò)誤信息。這個(gè)原因是因?yàn)槟愕腶gconnect-services文件里面含有一個(gè) package_name 參數(shù)踱承,這個(gè)參數(shù)是需要指定包名的陪毡,如果 package_name 填寫的報(bào)名米母,和目前你所使用的包名沒有對(duì)應(yīng)上就會(huì)出現(xiàn)這樣的錯(cuò)誤

修改過程中遇到的錯(cuò)誤信息
* What went wrong:
Execution failed for task ':app:processDebugAGCPlugin'.
> ERROR: Failed to verify AGConnect-Config '/client/package_name', expected: 'com.gxx.fast', but was: 'com.gxx.fast.debug'
不是很完美的解決問題

既然是需要區(qū)分包名的,我不如直接copy 2份出來毡琉,放到src下面,并新建一個(gè)類 pushservices 里面存放 debug/release 的類并存放 agconnect-services.json文件妙色,這樣我們想使用哪個(gè)版本的桅滋,就使用哪個(gè)版本的


存放agconnect-services.jpg

agconnect-services.json 記得里面修改

//測(cè)試環(huán)境
"package_name":"com.gxx.fast.debug"
//正式環(huán)境
"package_name":"com.gxx.fast"

打開你的app下面的build.gradle

def isUseReleaseAppPackageName = false 是否使用正式環(huán)境的包名
android {
    signingConfigs {
       .....省略代碼
    }
    defaultConfig {
       .....省略代碼
    }
    buildTypes {
        debug {
             .....省略代碼
        }
        release {
             .....省略代碼
    }
//復(fù)制文件
task copyAgconnecToRelease(type:Copy){
    //  print "你好世界" 
    from "src/pushservices/release/"
    include "agconnect-services.json"
    into "./"
}
//復(fù)制文件
task copyAgconnecToDebug(type:Copy){
    from "src/pushservices/debug/"
    include "agconnect-services.json"
    into "./"
}
afterEvaluate {
    def isDebugBuiildTypes = false;//是否運(yùn)行的debug模式,false表示不是 true表示是
    if(isReleaseBuildType()){
        isDebugBuiildTypes = false;
    }else {
        isDebugBuiildTypes = true;
    }

    tasks.matching {
        it.name.equals("assembleDebug") || it.name.equals("assembleRelease")
    }.each {task->
        if(isDebugBuiildTypes){     //debug模式下編譯環(huán)境
            if (isUseReleaseAppPackageName ){ //使用正式環(huán)境包名
                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;
}

上面的代碼寫完后身辨,我們直接運(yùn)行或者build一下丐谋,就會(huì)自動(dòng)從debug/release 拷貝一份agconnect-services.json 文件到根目錄路
注意
我們每次修改isUseReleaseAppPackageName 的值,都需要 刪除根目錄下的 agconnect-services.json

其它學(xué)習(xí)到的知識(shí)點(diǎn)

我們從上面copy一段代碼下來煌珊,如下

task copyAgconnecToRelease(type:Copy){
    print "你好世界" 
    from "src/pushservices/release/"
    include "agconnect-services.json"
    into "./"
}

我們?cè)赽uild或者直接run的時(shí)候号俐,發(fā)現(xiàn) “你好世界” 會(huì)最先打印,那是不是就意味著定庵,from include into 也會(huì)默認(rèn)的執(zhí)行吏饿?其實(shí)不是的,print 是在配置階段構(gòu)建的蔬浙,所以不管執(zhí)行什么task都是最先執(zhí)行的猪落。 from, into, rename 都繼承自 Copy,所以即使直接寫也是在執(zhí)行階段執(zhí)行畴博,摘自十分鐘搞定 Gradle 笨忌。我感覺就類似如下這樣的代碼 部分摘自 全面理解Gradle - 定義Task

task switchTvvvv(type:Copy){
    print "你好"
}

class HelloGxxTask extends DefaultTask{
    String message = 'This is RygTask'
    // @TaskAction 表示該Task要執(zhí)行的動(dòng)作,即在調(diào)用該Task時(shí),hello()方法將被執(zhí)行
    @TaskAction
    def hello(){
        println "Hello world. $message"
    }
}

// hello使用了默認(rèn)的message值
task hello(type:HelloGxxTask)

// 重新設(shè)置了message的值
task hello1(type:HelloGxxTask){
    message ="I am an android developer"  //類似from  include   into  手動(dòng)設(shè)置參數(shù)
}
自定義task.jpg

所以from include into 都是AbstractCopyTask 里面的方法俱病,所以他們是在執(zhí)行階段執(zhí)行

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末官疲,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子亮隙,更是在濱河造成了極大的恐慌途凫,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件咱揍,死亡現(xiàn)場(chǎng)離奇詭異颖榜,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)煤裙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門掩完,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人硼砰,你說我怎么就攤上這事且蓬。” “怎么了题翰?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵恶阴,是天一觀的道長(zhǎng)诈胜。 經(jīng)常有香客問我,道長(zhǎng)冯事,這世上最難降的妖魔是什么焦匈? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮昵仅,結(jié)果婚禮上缓熟,老公的妹妹穿的比我還像新娘。我一直安慰自己摔笤,他們只是感情好够滑,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吕世,像睡著了一般彰触。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上命辖,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天况毅,我揣著相機(jī)與錄音,去河邊找鬼吮龄。 笑死俭茧,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的漓帚。 我是一名探鬼主播母债,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼尝抖!你這毒婦竟也來了毡们?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤昧辽,失蹤者是張志新(化名)和其女友劉穎衙熔,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體搅荞,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡红氯,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了咕痛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片痢甘。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖茉贡,靈堂內(nèi)的尸體忽然破棺而出塞栅,到底是詐尸還是另有隱情,我是刑警寧澤腔丧,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布放椰,位于F島的核電站作烟,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏砾医。R本人自食惡果不足惜拿撩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望藻烤。 院中可真熱鬧绷雏,春花似錦、人聲如沸怖亭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽兴猩。三九已至,卻和暖如春早歇,著一層夾襖步出監(jiān)牢的瞬間倾芝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工箭跳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留晨另,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓谱姓,卻偏偏與公主長(zhǎng)得像借尿,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子屉来,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355