1. 程式人生 > >Android多渠道打包兩種方式(帶秒速打包)

Android多渠道打包兩種方式(帶秒速打包)

多渠道打包,主要是為了統計不同的渠道上包的下載數量,統計可以用umeng統計或者mta統計,本文用的是mta統計。
其實多渠道打包的實現與統計是沒有關係的,多渠道打包與統計之間的關係是我們要把String型別的渠道號交給統計。例如mta統計裡

           StatConfig.setInstallChannel(MTA);//設定apk渠道資訊

用這行程式碼把渠道號交給mta統計。
拋開多渠道打包來說,我們完全可以直接StatConfig.setInstallChannel("渠道號");//設定apk渠道資訊
這樣設定,但是如果這樣來做,我們就需要改一個渠道號打包一個apk,重複操作,何必把自己當作機器呢?讓AS一次性把所有渠道打包好就好的啦!

  1. 由此引出第一種方式,利用manifest和gradle來處理
    (1)manifest檔案裡配置
    <meta-data
    android:name="XXXX"
    android:value="${CHANNEL_VALUE}" />

    (2)gradle檔案裡配置
android {
    //配置keystore簽名
    signingConfigs {
        debug {
            // No debug config
        }
        staging {
            // No staging config
} release { storeFile file("xxxxxx.jks") storePassword "xxxxxx" keyAlias "xxxxxxxx" keyPassword "xxxxxx" } } buildTypes { debug { } staging { } release { signingConfig signingConfigs.release //配置apk名字格式
} } } } } // 多渠道打包 productFlavors { "渠道名字" {} } //下面程式碼會用上面的這些flavor的name屬性去替換manifest檔案裡的CHANNEL_VALUE值。 productFlavors.all { flavor -> flavor.manifestPlaceholders = [CHANNEL_VALUE: name] } }

(3)把各渠道號交給統計

            StatConfig.setInstallChannel("渠道");

(4)在AS的terminal裡輸入 ./gradlew assembleRelease,坐等all apk

總結:**此種方式的缺點就是打包忒慢,15個包得打10min,因為這種打包方式需要修改manifest 檔案中<meta-data
android:name="CHANNEL"
android:value="${CHANNEL_VALUE}"/>

的value值, 然後繼續簽名 ,因此耗時。每打一次apk包都需要構建一次**

2. 時間就是金錢嘛,由此引出第二種秒速打包(還沒開始就會結束)https://github.com/GavinCT/AndroidMultiChannelBuildTool

(1) 拷貝ChannelUtil.java到專案中。
(2) 程式碼中通過 ChannelUtil.getChannel(this)方法獲取渠道號並交給統計StatConfig.setInstallChannel(ChannelUtil.getChannel(this));。
(3) ..PythonTool\info\channel.txt,裡面去新增自己想要的渠道。
(4) 生成一個原生apk並放置apk到MultiChannelBuildTool.py所在目錄,與指令碼同級目錄,終端cd到指令碼所在目錄,執行python MultiChannelBuildTool.py執行指令碼,完成多渠道打包。

總結:這種打包方式能直接修改apk的渠道號,不需要再重新簽名,思路:直接解壓apk,解壓後的根目錄會有一個META-INF目錄,在META-INF目錄內新增空檔案,可以不用重新簽名應用,因此,通過為不同渠道的應用新增不同的空檔案,可以唯一標識一個渠道。1、python程式碼用來給apk新增空的渠道檔案,檔名即渠道名2、Java程式碼中讀取空渠道檔名。3、把渠道名交給統計。這樣,每打一個渠道包只需複製一個apk,在META-INF中新增一個使用渠道號命名的空檔案即可。

*在Android 7.0(Nougat)推出了新的應用簽名方案APK Signature Scheme v2後,之前快速生成渠道包的方式(美團Android自動化之旅—生成渠道包)已經行不通了,使用美團的WALLE
https://zhuanlan.zhihu.com/p/24920734?refer=c_63840855*