日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Android 多渠道(友盟)打包教程分享

瀏覽:158日期:2022-09-26 10:10:11

我們在 app 正式發布的時候一定會使用正式簽名的方式來打包,這種方式只能生成唯一的一個包,但是如今的應用商店非常多,如:小米、OPPO、360、百度、豌豆莢、應用寶等等。而我們只有一個 apk 文件要投入到這么多的應用商店中去,如果你的公司不需要統計每個應用商店的實際下載使用量的話,那倒是不會有這樣的問題。

但是,如果你的公司就是需要統計每個商店的實際下載使用情況,那么你將如何去識別當前用戶是從哪一個商店下載來的呢?出現問題原因是:我們使用的 apk 安裝包當前僅有一個。

假設,我們可以向 apk 內植入一個字符串,比如我給發布到小米商店的 apk 中植入“xiaomi” ,然后拷貝一份 apk 安裝包發布到小米商店中,給百度植入“baidu”,然后也拷貝一份發布到百度商店中,然后通過 JAVA 代碼在用戶從某一個商店中下載并使用時,我獲取這個字符串,然后返回給后臺,這不就可以知道用戶從哪個商店下載了嗎!

多渠道就是指我們的應用程序可以從不同的商店下載,不同的應用商店就是不同的渠道。那你可能會有疑惑,我們為什么要知道用戶從哪個渠道下載的呢?

這個問題其實與利益息息相關,你這樣想。假如你寫一個 app 發布到不同的商店上,你肯定會關注究竟哪一個商店的用戶使用量比較多、下載量比較大的問題,你可能手頭沒有那么多經濟去每一個商店平臺都推廣你的 app ,所以你要記錄哪個商店用戶量最大,然后著重推廣。

友盟打包

說了這么多,相信你已經明白多渠道打包的重要性了。既然我們可以向每一個 apk 中植入一個標志這商店名稱的字符串,那么如果一個一個的來的話,顯然是一個龐大的工作,沒有多大實際意義,而且 apk 文件是無法直接向里面添加一個外部文件的,你需要其他的手段來實現,那么我們先來看友盟多渠道打包的方式。

友盟的實現方式是通過 xxx.keystore 文件來進行一個一個的壓包,通過代碼的方式來分別生成一個你指定的應用商店的對應 apk 文件。這種方式會比較慢,如果你的需求是要投入到幾百上千個商店的話,顯然生成文件的速度會非常慢。但如果你的需求量在幾十上百,我建議你可以使用友盟來打包,公司也通常使用這種方式。

那么我們看看如何實現吧!

一、引入友盟支持

在工程列表(AndroidManifest.xml)文件中加入友盟提供的支持,這個與 Activity 并列層級。

<!-- 添加友盟支持 --><meta-data android:value='${UMENG_CHANNEL_VALUE}' android:name='UMENG_CHANNEL'/>

二、添加閉包

然后在 app 的 build.gradle 中添加以下代碼,目的是為了生成對應的應用商店的 apk ,添加位置在 android 閉包下,以下代碼不難理解。

Android 多渠道(友盟)打包教程分享

注意:在 gradle 中是無法使用數字開頭的名字,所以你應該懂得變更一下。

//友盟閉包 productFlavors { wandoujia {} xiaomi {} baidu {} yingyongbao {} //注意 360:gradle 中不能以數字開頭 _360{} } productFlavors.all { flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] }

這里注意一下,也許你會報這個錯誤:

ERROR: All flavors must now belong to a named flavor dimension.

解決方法就是在上面的 defalutConfig 閉包中添加內容:

flavorDimensions 'versionCode'

Android 多渠道(友盟)打包教程分享

然后再同步一下就沒有問題了。

三、簽名打包

接下來就是打包的過程了,很簡單,我們只需要選中如下圖中的各個應用商店的版本即可,然后它就會在你設定的目錄下生成對應的 apk 文件了。

如果對簽名打包不懂的可以看這篇文章:Android App正式簽名打包流程

Android 多渠道(友盟)打包教程分享

這就是我的項目生成的對應的 apk 文件所在的文件夾,點進去就會看到安裝包啦。

Android 多渠道(友盟)打包教程分享

四、添加版本號

當然了,你可能希望加入當前 app 的開發版本號,這樣就對每個版本升級時所用的 apk 包就一目了然了。這是你需要把當前 app build.gradle 中的 deflautConfig閉包下的 versionName 給設置到打包生成的 apk 名中。那代碼是這樣的:

//為多渠道包添加 app 版本號 applicationVariants.all { variant -> variant.outputs.all { output -> def outputFile = output.outputFile if (outputFile != null && outputFile.name.endsWith('.apk')) { def fileName = outputFile.name.replace('.apk', '-${ defaultConfig.versionName }.apk') outputFileName = fileName; } } }

這是一段 groovy 語言,通常在 jvm 中使用,可以很好的和 java 代碼配合。你只需要將它添加到剛剛寫的友盟閉包后面就可以了,如這樣:

Android 多渠道(友盟)打包教程分享

然后你再一次打包一下,就可以在目錄中看到 apk 文件了,一個是剛剛沒有添加的默認版本,一個是擁有版本號。

注意:這里會有一個警告信息,內容是這樣:

WARNING: API ’variantOutput.getPackageApplication()’ is obsolete and has been replaced with ’variant.getPackageApplicationProvider()’.It will be removed at the end of 2019.

它是說這個 API 在 2019 年末將要被替換成后面的一個,不過別擔心,只要你在升級 gradle 的時候注意一下就好了,在未來它要被替換的時候,你也要做出相應的更改!

Android 多渠道(友盟)打包教程分享

五、獲取渠道信息

到目前為止,我們還沒真正的看到這樣打包有什么用處。不著急,我們需要將每個 apk 文件發布到對應的商店以后才需要獲取這個字符串,這樣才能夠真正的識別用戶在哪個商店中下載來的,然后在用戶使用量最大的商店中去大力推廣。那么如何獲取這個字符串呢?

我就簡單一點,在 MainActivity 中直接獲取這個字符串了,在實際開發中,顯然是要把這個信息傳給后臺進行統計的,不然沒有任何意義。我們的獲取代碼如下:

還記得我們在 meta-data 中定義了 UMENG_CHANNEL 屬性的名字嗎,現在我們就可以利用它來獲取 字符串 了。

import android.content.Context;import android.content.pm.ApplicationInfo;import android.content.pm.PackageManager; public class ChannelUtil { public static String getChannel(Context context) { PackageManager pm = context.getPackageManager(); ApplicationInfo appInfo = null; try { appInfo = pm.getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA); return appInfo.metaData.getString('UMENG_CHANNEL'); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } return ''; }}

然后我在啟動 app 的時候使用 toast 驗證一下是否如我們想象的一樣:

Android 多渠道(友盟)打包教程分享

獲取渠道信息

結果沒錯,相信大家已經明白了多渠道打包的作用了,它的本質就是在簽名打包的時候嵌入一個字符串,通過不同的 apk 包對應不同的商店名,然后上傳到相應的商店,最后獲取這個字符串值返回給后臺。那么,本篇關于多渠道打包的內容就這樣講完了。

以上這篇Android 多渠道(友盟)打包教程分享就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲二区在线| 99在线精品免费视频九九视| 亚洲网址在线观看| 国产一区欧美| 在线视频观看日韩| 性欧美xxxx免费岛国不卡电影| 国产资源在线观看入口av| 国模精品一区| 国产精品啊啊啊| 国产高清视频一区二区| 国产福利一区二区精品秒拍| 国产黄色精品| 日韩1区2区| 色婷婷狠狠五月综合天色拍| 欧美日中文字幕| 亚洲精品网址| 综合激情网...| 久久国产乱子精品免费女| 日本亚洲视频在线| 国产精品一区二区三区四区在线观看| 久久丁香四色| 国产在线观看www| 婷婷激情久久| 国产精品嫩草99av在线| 香蕉久久一区| 你懂的国产精品| 日韩综合精品| 美女精品一区| 日韩高清一区| 国产一区二区三区国产精品| 精品久久一区| 国内激情久久| 日本不卡视频在线观看| 国产精品对白久久久久粗| 日韩欧美看国产| 亚洲一区二区av| 麻豆精品少妇| 亚洲韩日在线| 日韩国产高清在线| 日韩伦理在线一区| 在线视频日韩| 国产亚洲字幕| 日韩国产网站| 少妇精品在线| 黄色在线网站噜噜噜| 欧美在线综合| 精品久久久亚洲| 亚洲自拍另类| 国产精品任我爽爆在线播放| 亚洲伦乱视频| 亚洲精品影视| 福利精品在线| 男人操女人的视频在线观看欧美| 欧美aaaaaa午夜精品| 欧美日韩在线播放视频| 日韩超碰人人爽人人做人人添| 久久精品理论片| 久久亚洲精品伦理| 精品国产一区二区三区性色av| 99视频精品| 精品一区二区三区免费看 | 美腿丝袜亚洲一区| 999国产精品永久免费视频app| 日韩午夜视频在线| 成人日韩在线| 久久国产生活片100| 五月天久久久| 美女国产一区二区三区| 久久国产电影| 久久99久久久精品欧美| 在线一区电影| 国产精品亚洲欧美一级在线| 欧美日韩激情在线一区二区三区| 日韩中出av| 红桃视频国产一区| 激情不卡一区二区三区视频在线| 蜜臀久久久久久久| 鲁鲁在线中文| 欧美一级二级三级视频| 1024精品一区二区三区| 国产一区二区精品久| 日韩国产一二三区| 婷婷综合激情| 91日韩免费| 日本国产一区| 快she精品国产999| 91精品国产调教在线观看| 麻豆精品视频在线观看免费| 婷婷综合成人| 亚洲欧美日韩精品一区二区 | 日韩高清不卡一区二区| 欧美日韩精品一本二本三本| 欧美亚洲免费| 亚洲午夜免费| 在线国产一区二区| 久久久精品网| www.51av欧美视频| 国产日本亚洲| 亚洲精品乱码| 99热免费精品| 欧美日韩国产免费观看| 秋霞国产精品| 亚洲国产欧美日本视频| 久久精品资源| 欧美一级久久| 亚洲精品在线二区| 美女久久网站| 亚洲黄页一区| 999国产精品| 久久天堂av| 欧美日韩国产v| 欧美少妇精品| 精品精品99| 久久精品色播| 国产一区二区三区不卡视频网站| 国产精品极品在线观看| 欧美日韩夜夜| 91精品国产自产观看在线| 国产女优一区| 黄色免费成人| 国产亚洲网站| 丝袜亚洲精品中文字幕一区| 久久亚洲二区| 只有精品亚洲| 天堂成人国产精品一区| 免播放器亚洲| 久久久成人网| 日韩视频一区| 麻豆久久精品| 日本中文字幕不卡| 91福利精品在线观看| 日韩精品久久理论片| 国产精品蜜月aⅴ在线| 国产精品久久| 韩日一区二区| 日韩精品电影| 91久久国产| 男人的天堂久久精品| 日韩综合一区二区| 国产精品a久久久久| 国产成人久久精品麻豆二区| 麻豆网站免费在线观看| 精品欧美激情在线观看| 亚洲综合三区| 亚洲精品国产日韩| 国产精品一区二区三区av| 欧美国产专区| 亚洲综合电影| 黄色av日韩| 综合激情网...| 91亚洲精品在看在线观看高清| 麻豆精品99| 久久亚洲在线| 亚洲人妖在线| 久久伊人久久| 国产一区欧美| 欧美有码在线| 亚洲天堂资源| 天使萌一区二区三区免费观看| 91精品一区| 美女福利一区二区三区| 黄色成人91| 国产午夜久久av| 亚洲黄色中文字幕| 国产亚洲综合精品| 国产日产精品一区二区三区四区的观看方式| 久久影视三级福利片| 久久一级电影| 日韩高清二区| 一本大道色婷婷在线| 日韩精品一二区| 精品国产乱码久久久| 日韩视频久久| 国产精品久久久亚洲一区| 日本精品在线中文字幕| 亚洲美女久久| 四虎8848精品成人免费网站| 亚洲一区日韩在线| 国内精品美女在线观看| 国产aⅴ精品一区二区三区久久| 日韩av首页| 日韩不卡一区二区三区| 日韩精品水蜜桃| 每日更新成人在线视频| 精品中文在线| 中文国产一区| 欧美精品99| 伊人成人网在线看| 欧美a一区二区| 只有精品亚洲| 秋霞影院一区二区三区| 欧美日韩一视频区二区| 久久天堂成人| 国产日韩一区| 日韩在线第七页| 日本不卡在线视频| 久久美女精品| 久久精品资源| 亚州欧美在线| 欧美综合另类|