91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android怎么使用美團多渠道打包方案

發布時間:2021-05-12 14:16:20 來源:億速云 閱讀:120 作者:小新 欄目:移動開發

這篇文章將為大家詳細講解有關Android怎么使用美團多渠道打包方案,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

Andorid渠道市場有多分散呢?分散到比Android碎片化還嚴重,你還在為多渠道打包而頭疼嗎?美團提供了速度快到白駒過隙的多渠道打包方案。說的有點夸張,對,雖然夸張,但是確實很快,不夸張不足以形容其快。廢話不多說,先講原理,再講實踐方法。

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

傳統方式

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

  • 方案一:完全的重新編譯,即在代碼重新編譯打包之前,在AndroidManifest中修改渠道標示;

  • 方案二:通過ApkTool進行解包,然后修改AndroidManifest中修改渠道標示,最后再通過ApkTool進行打包、簽名。

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

美團高效的多渠道打包方案

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

第一步:解壓apk文件

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

如果在META-INF目錄內添加空文件,可以不用重新簽名應用。因此,通過為不同渠道的應用添加不同的空文件,可以唯一標識一個渠道。

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

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

import zipfile
zipped = 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目錄多了一個名為mtchannel_meituan的空文件

第三步:用java代碼讀取渠道名,并動態設置渠道名

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

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 "";
    }
  }

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

實踐使用

你可能會說,我看不懂上面的python代碼,那個腳本里的內容看不明白,這個沒關系。你仔細明白了原理即可,因為有人給你造輪子,我們直接騎就可以了。

實踐方法使用

第一步:配置python環境

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

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

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

第四步:復制簽好名的包,運行腳本
你把你已經簽名打包好的apk文件,復制到PythonTool目錄下和MultiChannelBuildTool.py這個腳本同級,直接雙擊點擊MultiChannelBuildTool.py即可完成打包。

ok,到這里基本就講完了,講了講原理,又講了講實踐方式,鑒于別人都給你造好輪子了,所以使用起來非常簡單,趕緊去試一試吧。

關于“Android怎么使用美團多渠道打包方案”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

民县| 萨嘎县| 桂阳县| 资讯| 二连浩特市| 恩施市| 新闻| 浦江县| 亚东县| 安泽县| 咸丰县| 沙湾县| 图木舒克市| 邹城市| 昂仁县| 漠河县| 靖安县| 葵青区| 东乡族自治县| 双牌县| 新郑市| 弥渡县| 惠水县| 化德县| 饶阳县| 望江县| 云安县| 长阳| 合作市| 昭平县| 黑河市| 文山县| 社会| 东阿县| 吉林省| 巧家县| 新化县| 景谷| 乌兰察布市| 思茅市| 左权县|