日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Android中如何使用美團(tuán)多渠道打包方案-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關(guān)Android中如何使用美團(tuán)多渠道打包方案的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

創(chuàng)新互聯(lián)專注于鞍山企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站建設(shè)。鞍山網(wǎng)站建設(shè)公司,為鞍山等地區(qū)提供建站服務(wù)。全流程按需制作網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

新舊打包方法原理對比講解

傳統(tǒng)方式

在AndroidManifest定義渠道的年代,多渠道打包無非以下兩種方案:

方案一:完全的重新編譯,即在代碼重新編譯打包之前,在AndroidManifest中修改渠道標(biāo)示;方案二:通過ApkTool進(jìn)行解包,然后修改AndroidManifest中修改渠道標(biāo)示,最后再通過ApkTool進(jìn)行打包、簽名。

這兩種打包方式,不管是哪種,效率都很低,方案一毫無效率可言,而且打包的渠道規(guī)模非常小,第二種方案效率稍微高些,打包的渠道規(guī)模也還可以,但是這兩種方案速度慢的驚人,如果你打個(gè)上百的渠道包試試,估計(jì)你的電腦能卡一下午。慢,當(dāng)然也有好處,你可以不用工作了,喝著咖啡,玩著手機(jī)慢慢等也很愜意是不?哈哈……

美團(tuán)高效的多渠道打包方案

美團(tuán)高效的多渠道打包方案是把一個(gè)Android應(yīng)用程序包當(dāng)作一個(gè)zip文件包進(jìn)行解壓,然后發(fā)現(xiàn)在簽名生成的目錄下添加一個(gè)空文件,空文件用渠道名來命名,而且不需要重新簽名。這種方式不需要重新簽名,編譯等步驟,使得這種方法非常高效。

第一步:解壓apk文件

我們直接解壓apk,解壓后的根目錄會有一個(gè)META-INF目錄

如果在META-INF目錄內(nèi)添加空文件,可以不用重新簽名應(yīng)用。因此,通過為不同渠道的應(yīng)用添加不同的空文件,可以標(biāo)識一個(gè)渠道。

第二步:用python腳本向apk文件中添加空渠道文件

我們用python代碼來給apk添加空的渠道文件,渠道名的前綴為mtchannel_:

import zipfilezipped = zipfile.ZipFile(your_apk, 'a', zipfile.ZIP_DEFLATED)empty_channel_file = "META-INF/mtchannel_{channel}".format(channel=your_channel)zipped.write(your_empty_file, empty_channel_file)

添加完空渠道文件后的目錄,META-INFO目錄多了一個(gè)名為mtchannel_meituan的空文件

第三步:用java代碼讀取渠道名,并動態(tài)設(shè)置渠道名

我們用腳本生成了文件之后,文件的名字是用渠道名來命名的,所以我們在啟動程序的時(shí)候,可以用java代碼動態(tài)讀取渠道名,并動態(tài)的去設(shè)置。

java代碼讀取渠道名的方法:

public static String getChannel(Context context) {    ApplicationInfo appinfo = context.getApplicationInfo();    String sourceDir = appinfo.sourceDir;    String ret = "";    ZipFile zipfile = null;    try {      zipfile = new ZipFile(sourceDir);      Enumeration entries = zipfile.entries();      while (entries.hasMoreElements()) {        ZipEntry entry = ((ZipEntry) entries.nextElement());        String entryName = entry.getName();        if (entryName.startsWith("mtchannel")) {          ret = entryName;          break;        }      }    } catch (IOException e) {      e.printStackTrace();    } finally {      if (zipfile != null) {        try {          zipfile.close();        } catch (IOException e) {          e.printStackTrace();        }      }    }    String[] split = ret.split("_");    if (split != null && split.length >= 2) {      return ret.substring(split[0].length() + 1);    } else {      return "";    }  }

讀取到了渠道名,我們就可以動態(tài)的設(shè)置了,比如友盟渠道的動態(tài)設(shè)置方法是:AnalyticsConfig.setChannel(getChannel(Context context) );這樣就好了。這種方式每打一個(gè)渠道包只需復(fù)制一個(gè)apk,在META-INF中添加一個(gè)使用渠道號命名的空文件即可。這種打包方式速度非??欤瑩?jù)說900多個(gè)渠道不到一分鐘就能打完。我親測的是我用了10秒鐘打了32個(gè)渠道包,是不是很快。

實(shí)踐使用

你可能會說,我看不懂上面的python代碼,那個(gè)腳本里的內(nèi)容看不明白,這個(gè)沒關(guān)系。你仔細(xì)明白了原理即可,因?yàn)橛腥私o你造輪子,我們直接騎就可以了。

實(shí)踐方法使用

第一步:配置python環(huán)境

我們既然需要使用腳本打包,那么相應(yīng)的電腦上必須有可以運(yùn)行python腳本的運(yùn)行環(huán)境。所以我們第一步是要配置python運(yùn)行環(huán)境。自己去官網(wǎng)下載安裝即可,非常簡單。官網(wǎng)地址:https://www.python.org/

第二步:設(shè)置python腳本并把封裝好的類放到工程里好心人已經(jīng)把運(yùn)行的打包腳本寫好了,并且也封裝了讀取渠道號的實(shí)體工具類。大家只需要去github上下載即可。地址:https://github.com/GavinCT/AndroidMultiChannelBuildTool當(dāng)然在github上也有相關(guān)的使用介紹,非常簡單,一看就懂。這里簡單說下,下載下來有個(gè)ChannelUtil.java類,里面封裝好了獲取渠道號的方法,你只需要在啟動應(yīng)用程序的地方調(diào)用友盟的設(shè)置代碼即可,比如:AnalyticsConfig.setChannel(ChannelUtil.getChannel(this))。

第三步:配置渠道列表我們在github上把輪子下載下來之后,你解壓文件,在PythonTool/Info/channel.txt中編輯渠道列表,沒寫一個(gè)渠道名,換行即可。

第四步:復(fù)制簽好名的包,運(yùn)行腳本你把你已經(jīng)簽名打包好的apk文件,復(fù)制到PythonTool目錄下和MultiChannelBuildTool.py這個(gè)腳本同級,直接雙擊點(diǎn)擊MultiChannelBuildTool.py即可完成打包。

感謝各位的閱讀!關(guān)于“Android中如何使用美團(tuán)多渠道打包方案”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!


文章題目:Android中如何使用美團(tuán)多渠道打包方案-創(chuàng)新互聯(lián)
當(dāng)前地址:http://www.dlmjj.cn/article/jihej.html