慕課網(wǎng)視頻:http://www.imooc.com/learn/752
http://frank-zhu.github.io/android/2015/06/15/android-release_app_build_gradle/
前言
什么是多渠道打包司蔬?為什么要多渠道打包动猬?
- 多渠道打包簡(jiǎn)單的說打多個(gè)應(yīng)用平臺(tái)的包(比如應(yīng)用寶跳仿,安智市場(chǎng),機(jī)鋒等等)
- 多渠道打包的意義在于:
* 通過多渠道,可以更詳細(xì)的統(tǒng)計(jì)app被下載的途徑
* 通過多渠道松却,可以查看app在每個(gè)渠道的表現(xiàn)
* 通過多渠道,更有利于我們app的推廣
多渠道打包的原理
- 為我們每個(gè)平臺(tái)或市場(chǎng)的apk指定唯一的標(biāo)識(shí)符
- Android中我們通常在Manifest.xml中指定唯一的標(biāo)識(shí)符
集成友盟多渠道打包
-
上友盟官網(wǎng)注冊(cè)并創(chuàng)建新應(yīng)用躯保,獲取AppKey(下圖是我的賬號(hào)已經(jīng)注冊(cè)登錄過)
- 在你的module的build.gradle中添加友盟的依賴
compile 'com.umeng.analytics:analytics:latest.integration'
如果無法正常集成往扔,請(qǐng)?zhí)砑尤缦麓a
allprojects {
repositories {
mavenCentral()
}
}
- 在Manifest.xml中配置渠道號(hào)和AppKey (包含在application中)
<!-- 友盟統(tǒng)計(jì)的相關(guān)meta——data -->
<meta-data android:name="UMENG_APPKEY"android:value="584fbff6b27b0a0b7c00026f"></meta-data>
<meta-data android:name="UMENT_CHANNEL" android:value="$ {UMENG_CHANNEL_VALUE}"></meta-data>
注意:這里的占位符$和中括號(hào){}之間要有個(gè)空格贩猎,不然編譯報(bào)錯(cuò):Manifest merger failed with multiple errors, see logs;
-
在Module的build.gradle中編寫多渠道的腳本
第一步:
第二步:
生成簽名文件萍膛,并將簽名文件復(fù)制到你的module中
第三步:注意這里的簽名文件路徑吭服,如果簽名文件**.jks已經(jīng)拷貝到項(xiàng)目中,就像圖這樣蝗罗,直接寫簽名文件的名就可以了艇棕,如果沒有復(fù)制到項(xiàng)目中,要寫全路徑串塑。
第四步:
第五步:
在Terminal中輸入命令:gradlew assembleRelease(注意別寫錯(cuò)沼琉,如果是Mac 命令為:./gradlew assembleRelease),如果指給一個(gè)渠道打包桩匪,命令如下打瘪,比如指給小米的打包:./gradlew assembleXiaoMiRelease進(jìn)行打包,等待有BUILD SUCCESSFUL說明打包成功傻昙。
如何指定打包以后APK的文件名
//自定義打包后apk的文件名
applicationVariants.all{variant ->
variant.outputs.each{output ->
def outFile = output.outputFile
if (outFile!=null && outFile.name.endsWith(".apk")){
def fileName = "${variant.productFlavors[0].name}"+".apk"
output.outputFile = new File(outFile.parent,fileName);
}
}
}