1. 程式人生 > >美團二代打包

美團二代打包

alle(瓦力):Android Signature V2 Scheme簽名下的新一代渠道包打包神器。

瓦力通過在Apk中的APK Signature Block區塊新增自定義的渠道資訊來生成渠道包,從而提高了渠道包生成效率,可以作為單機工具來使用,也可以部署在HTTP伺服器上來實時處理渠道包Apk的升級網路請求

我測試的打包工具流程
1  用的是gradle:2.3.1
classpath 'com.android.tools.build:gradle:2.3.1
  1. Gradle外掛方式,方便快速整合
  2. 命令列方式,最大化滿足各種自定義需求

####Gradle外掛方式

配置好根底部grdle

buildscript {
    ext.kotlin_version = '1.1.51'
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.meituan.android.walle:plugin:1.1.6'
        classpath 'com.android.tools.build:gradle:2.3.1'
       
    }
}

app 中 build.gradle

apply plugin: 'walle'
implementation 'com.meituan.android.walle:library:1.1.6'

在Project Structure中配置好籤名方式,這裡配置好後,module的build.gradle檔案會自動顯示出來

{:height="80%" width="80%"}

同樣在module中的build.gradle檔案中配置walle出包方式

{:height="80%" width="80%"}

特別注意

configFile = new File("${project.getProjectDir()}/config.json")

channelFile = new File("${project.getProjectDir()}/channel")

configFile和config.json是對應關係
channelFile和channel是對應關係

渠道檔案別放錯位置了,如圖所示, channel檔案也是放在這裡

獲取渠道包資訊

String channel = WalleChannelReader.getChannel(this.getApplicationContext());

案例

獲取渠道包資訊:

{:height="80%" width="80%"}

具體的配置檔案:

生成渠道包 在下面

生成渠道包 ./gradlew clean assembleReleaseChannels

2 用的是gradle3.0+ 發現會編譯不成功出現以下問題

 What went wrong:
A problem occurred configuring project ':app'.
> Could not generate a proxy class for class com.android.build.gradle.tasks.BuildArtifactReportTask.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org