親,在開發(fā)的時(shí)候你是否遇到過(guò)丸氛,測(cè)試MM一會(huì)跟你要一個(gè)測(cè)試包或者正式包的情況,如果只是換換接口地址還好說(shuō)定续,但是有些三方的東西注冊(cè)碼也有正式環(huán)境跟測(cè)試環(huán)境之分禾锤,每次發(fā)包還要記住修改過(guò)來(lái)恩掷,這樣很容易就忘記修改而帶來(lái)不必要的麻煩。每當(dāng)這時(shí)候就感覺(jué)很蛋疼啊峭状,有沒(méi)有法子來(lái)改變這一現(xiàn)狀呢逼争,經(jīng)過(guò)幾番探索終于發(fā)掘出了一勞永逸的方法----通過(guò)Gradle來(lái)進(jìn)行配置誓焦。
首先解決手動(dòng)替換接口地址問(wèn)題
這個(gè)是根據(jù)代碼中自動(dòng)設(shè)置 debug 跟 release 包 log 打印不打印進(jìn)行的延伸,具體操作如下:
在 Android studio 的 module 的 gradle 配置文件中,在 buildTypes 節(jié)點(diǎn)下可以配置自定義參數(shù)仍翰,這里我們?cè)赿ebug版本中定義LOG_DEBUG為true歉备,在 release 版本中定義 LOG_DEBUG 為 false蕾羊。這樣在編譯的時(shí)候就會(huì)在 gradle 的編譯類BuildConfig中生成成員變量: LOG_DEBUG
若是正式環(huán)境則 LOG_DEBUG 的值為 false
若是測(cè)試環(huán)境則 LOG_DEBUG 的值為 true
如下圖所示:
設(shè)置聯(lián)網(wǎng)接口的時(shí)候就如下設(shè)置:
public static final String url = BuildConfig.LOG_DEBUG?"http://192.168.01": "http://www.baidu.com";
到時(shí)候打包就自動(dòng)對(duì)應(yīng)相應(yīng)的網(wǎng)址接口帽驯。
其次解決三方在Manifest文件的配置問(wèn)題
這里使用了 gradle 在編譯時(shí)動(dòng)態(tài)設(shè)置 Android Manifest的功能龟再,通過(guò)manifestPlaceholders,我們可以在AndroidManifest中定義一個(gè)變量尼变,在build.gradle中動(dòng)態(tài)的替換掉利凑,十分方便,語(yǔ)法也十分簡(jiǎn)單嫌术。我們這里以用的融云為例:
<meta-data
android:name="RONG_CLOUD_APP_KEY"
android:value="${rong_cloud_app_key}"
/>
接著哀澈,我們?cè)赽uild.gradle文件中根據(jù)不同的環(huán)境,設(shè)置生成不同appkey的apk:
buildTypes {
debug {
manifestPlaceholders = [rong_cloud_app_key: "你替代的內(nèi)容"]
}
release {
manifestPlaceholders = [rong_cloud_app_key: "你替代的內(nèi)容"] }
}
注意:這里的“你替代的內(nèi)容”度气,不能為特殊關(guān)鍵詞割按,比如:TRUE,否則在Java代碼中獲取不到meta-data中的值
錯(cuò)誤實(shí)例:
manifestPlaceholders = [oem: "TRUE"]
如果你想要替換多個(gè)變量磷籍,假如你需要兩個(gè)變量要替換适荣,需要按照下面形式進(jìn)行:
<meta-data
android:name="RONG_CLOUD_APP_KEY"
android:value="${rong_cloud_app_key}"
/>
<meta-data
android:name="RONG_CLOUD_APP_SECRET"
android:value="${rong_cloud_app_secret}"
/>
buildTypes {
debug {
manifestPlaceholders = [rong_cloud_app_key: "你替代的內(nèi)容",
rong_cloud_app_secret: "你替代的內(nèi)容"]
}
...
最后進(jìn)行打包操作
點(diǎn)擊 studio 最右側(cè)的 Gradle 按鈕,找到主項(xiàng)目下的 build 文件夾,如下圖所示:
紅框里面是定義的打包渠道號(hào),雙擊一個(gè)就會(huì)打包该编,打好的包會(huì)放在下圖位置上:
直接一次到位嘉赎,測(cè)試包跟正式包都有了迂曲,測(cè)試MM相要什么包就直接給就行了关霸,不用在代碼里進(jìn)行繁瑣的調(diào)試了队寇。哈哈
又可以愉快的玩耍了凡伊,呵呵