one.jpg
http://frank-zhu.github.io/android/2015/06/15/android-release_app_build_gradle/
前言
什么是多渠道打包?為什么要多渠道打包?
- 多渠道打包簡單的說打多個應用平臺的包(比如應用寶,安智市場,機鋒等等)
- 多渠道打包的意義在于:
* 通過多渠道,可以更詳細的統計app被下載的途徑
* 通過多渠道,可以查看app在每個渠道的表現
* 通過多渠道,更有利于我們app的推廣
多渠道打包的原理
- 為我們每個平臺或市場的apk指定唯一的標識符
- Android中我們通常在Manifest.xml中指定唯一的標識符
集成友盟多渠道打包
-
上友盟官網注冊并創建新應用,獲取AppKey(下圖是我的賬號已經注冊登錄過)
youmeng.gif - 在你的module的build.gradle中添加友盟的依賴
compile 'com.umeng.analytics:analytics:latest.integration'
如果無法正常集成,請添加如下代碼
allprojects {
repositories {
mavenCentral()
}
}
- 在Manifest.xml中配置渠道號和AppKey (包含在application中)
<!-- 友盟統計的相關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>
注意:這里的占位符$和中括號{}之間要有個空格,不然編譯報錯:Manifest merger failed with multiple errors, see logs;
-
在Module的build.gradle中編寫多渠道的腳本
第一步:
01.png
第二步:
生成簽名文件,并將簽名文件復制到你的module中
第三步:注意這里的簽名文件路徑,如果簽名文件**.jks已經拷貝到項目中,就像圖這樣,直接寫簽名文件的名就可以了,如果沒有復制到項目中,要寫全路徑。
02.png
第四步:
03.png
第五步:
在Terminal中輸入命令:gradlew assembleRelease(注意別寫錯,如果是Mac 命令為:./gradlew assembleRelease),如果指給一個渠道打包,命令如下,比如指給小米的打包:./gradlew assembleXiaoMiRelease進行打包,等待有BUILD SUCCESSFUL說明打包成功。
04.png
如何指定打包以后APK的文件名
05.png
//自定義打包后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);
}
}
}