1.友盟打包方案
定義: 友盟的定義是在應(yīng)用中添加一個(gè)標(biāo)識(shí)符,當(dāng)應(yīng)用在不同的平臺(tái)被下載安裝時(shí)裕坊,可以檢測(cè)到用戶是從哪個(gè)平臺(tái)下載安裝的
接下來(lái)實(shí)現(xiàn)方法包竹,①:首先去友盟官網(wǎng)申請(qǐng)獲取app key? 地址是?友盟:
②:在清單文件AndroidManfest.xml的application標(biāo)簽中添加一個(gè)meta-data標(biāo)簽定義UMENG_CHANNEL占位符,并填入appkey
<meta-data android:name="UMENG_APPKEY" android:value="60c2d2cca82b08615e4e9558"/> <!--自己申請(qǐng)的App key--><meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}" /> <!--渠道號(hào)碍庵,多渠道這里使用了占位符$-->
③:所需要的權(quán)限在清單文件中寫入
<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name=" android.permission.ACCESS_NETWORK_STATE" />
④:在app的build.gradle文件中寫入映企,這是第一種方式
productFlavors { wandoujia { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"] } xiaomi { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"] }}
第二種方式,優(yōu)化方式一
? ??
//優(yōu)化方式一productFlavors{ wandoujia{ //manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"] } xiaomi{ //manifestPlaceholders=[UMENG_CHANNEL_VALUE: "xiaomi"] }}productFlavors.all { flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]}
? ? 優(yōu)化方式二:上面經(jīng)過(guò)簽名打包之后默認(rèn)的apk命名規(guī)范 xxx-xiaomi-release.apk静浴,但是我們想包含版本信息如xxx-xiaomi-release-1.0.apk,所以最終優(yōu)化如下
productFlavors{ wandoujia{ //manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"] } xiaomi{ //manifestPlaceholders=[UMENG_CHANNEL_VALUE: "xiaomi"] }}productFlavors.all { flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]}applicationVariants.all { variant -> variant.outputs.each { output -> def outputFile = output.outputFile if (outputFile != null && outputFile.name.endsWith('.apk')) { def fileName = outputFile.name.replace(".apk", "-${defaultConfig.versionName}.apk") output.outputFile = new File(outputFile.parent, fileName) } }}
? ??????????????
⑤你可能會(huì)報(bào)以下錯(cuò)誤 堰氓,因?yàn)楦耡s3.0以后會(huì)同步失敗
正確的寫法:
android.applicationVariants.all { variant -> variant.outputs.all { outputFileName = "${variant.name}-${variant.versionName}.apk" }}
然后 進(jìn)行打包 就會(huì)有多個(gè)渠道供自己選擇:
說(shuō)明一下,2年Android經(jīng)驗(yàn) 其實(shí)一直很想寫些東西苹享,這樣才能不斷學(xué)習(xí)不斷進(jìn)步双絮,記錄自己開發(fā)中遇到的各種問(wèn)題,希望大家多多指點(diǎn)得问,積極改正囤攀,一起學(xué)習(xí)進(jìn)步。