摘要:我們都知道國內(nèi)應(yīng)用市場非常多,為了統(tǒng)計各個應(yīng)用市場的下載量和使用情況,我們需要多渠道的打包。這就要求我們學(xué)會使用進行多渠道打包。使用多渠道打包的方式,就需要把上面的配置成下面的方式其中中的值就是你在中自定義配置的值。
第一步:配置AndroidManifest.xml我們都知道國內(nèi)應(yīng)用市場非常多,為了統(tǒng)計各個應(yīng)用市場的app下載量和使用情況,我們需要多渠道的打包。如果一個一個的手動去打包豈不煩死了,要多麻煩就有多麻煩。這就要求我們學(xué)會使用Gradle進行多渠道打包。廢話不多說了,直接進入正題吧!
以友盟渠道為例,渠道信息一般都是寫在 AndroidManifest.xml文件中,大約如下:
如果不使用多渠道打包方法,那就需要我們手動一個一個去修改value中的值,xiaomi,360,qq,wandoujia等等。
使用多渠道打包的方式,就需要把上面的value配置成下面的方式:
其中${UMENG_CHANNEL_VALUE}中的值就是你在gradle中自定義配置的值。
productFlavors { wandoujia { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"] } xiaomi{ manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"] } qq { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "qq"] } _360 { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "360"] } }
其中[UMENG_CHANNEL_VALUE: "wandoujia"]就是對應(yīng)${UMENG_CHANNEL_VALUE}的值。
我們可以發(fā)現(xiàn),按照上面的方式寫,比較繁瑣,其實還有更簡潔的方式去寫,方法如下:
android { productFlavors { wandoujia{} xiaomi{} qq{} _360 {} } productFlavors.all { flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] } }
其中name的值對相對應(yīng)各個productFlavors的選項值,這樣就達(dá)到自動替換渠道值的目的了。
這樣生成apk時,選擇相應(yīng)的Flavors來生成指定渠道的包就可以了,而且生成的apk會自動幫你加上相應(yīng)渠道的后綴,非常方便和直觀。大家可以自己反編譯驗證。
我們可以使用CMD命令,進入到項目所在的目錄,直接輸入命令:
gradle assembleRelease
就開始打包了,如果渠道很多的話,時間可能會很長。
或者,當(dāng)然Android Studio中的下方底欄中有個命令行工具Terminal,你也可以直接打開,輸入上面的命令:
gradle assembleRelease
用CMD進入到項目所在目錄執(zhí)行,或者用AS中自帶的命令行工具Terminal其實性質(zhì)都是一樣的。
注意:如果沒有對gradle配置的話,可能輸入上面的命令,會提示“不是內(nèi)部或者外部命令”,不要著急,我們只需要找到gradle的目錄,把它配置到電腦中的環(huán)境變量中去即可。
配置方式如下:
先找到gralde的根目錄,在系統(tǒng)變量里添加兩個環(huán)境變量:
變量名為:GRADLE_HOME,變量值就為gradle的根目錄;
所以變量值為:D:androidandroid-studio-ide-143.2739321-windowsandroid-studiogradlegradle-2.10
還有一個在系統(tǒng)變量里PATH里面添加gradle的bin目錄
我的就是D:androidandroid-studio-ide-143.2739321-windowsandroid-studiogradlegradle-2.10bin
這樣就配置完了,不信趕緊去試試,執(zhí)行以下這個命令:gradle assembleRelease。是不是可以了。
第四步:如果要帶簽名的話,就得在build.gradle進行相關(guān)簽名的配置//簽名 signingConfigs{ release { storeFile file("keystore路徑") storePassword "***" keyAlias "***" keyPassword "***" } } buildTypes { release { runProguard false proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" signingConfig signingConfigs.release } }第五步:修改導(dǎo)出包的apk名稱
我們打包有非常多的渠道包,所以我們可以根據(jù)渠道自定義apk的名稱,方便運營人員看嘛,知道哪個apk對應(yīng)的哪個渠道嘛。
android { applicationVariants.all { variant -> variant.outputs.each { output -> output.outputFile = new File( output.outputFile.parent, "xxxx(apk的名字)-${variant.buildType.name}-${defaultConfig.versionName}-${variant.productFlavors[0].name}.apk".toLowerCase()) } } }
最后打包完成之后,apk文件就會生成在項目的buildoutputsapk下。
我知道看到這里肯定會有很多人說,這種方式太落伍了,打包速度太慢了,是的,所以啊,我準(zhǔn)備下篇文章重點講解打包原理和高效的美團快速打包方式,據(jù)說是一分鐘能打900個包的速度。期待吧,而且代碼都幫你們寫好了,直接用即可。
移動開發(fā)者的聚集地,公眾號“非著名程序員”,每天一篇原創(chuàng)技術(shù)分享和移動互聯(lián)網(wǎng)知識分享,微信公眾號:smart_android,頭條號和百度百家賬號都是“非著名程序員”。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/66028.html
摘要:我們都知道國內(nèi)應(yīng)用市場非常多,為了統(tǒng)計各個應(yīng)用市場的下載量和使用情況,我們需要多渠道的打包。這就要求我們學(xué)會使用進行多渠道打包。使用多渠道打包的方式,就需要把上面的配置成下面的方式其中中的值就是你在中自定義配置的值。 我們都知道國內(nèi)應(yīng)用市場非常多,為了統(tǒng)計各個應(yīng)用市場的app下載量和使用情況,我們需要多渠道的打包。如果一個一個的手動去打包豈不煩死了,要多麻煩就有多麻煩。這就要求我們學(xué)會...
閱讀 3336·2021-11-23 09:51
閱讀 2465·2021-11-09 09:46
閱讀 1496·2019-08-30 15:54
閱讀 3157·2019-08-30 14:22
閱讀 2922·2019-08-29 12:40
閱讀 1647·2019-08-26 10:33
閱讀 1792·2019-08-23 17:09
閱讀 1569·2019-08-23 16:11