以前負責項目打渠道包時,都是使用傳統的方式進行打包,自從發現美團的打多渠道包方式後,感覺少用了不少的時間
下面我來說一下自己集成美團的多渠道打包方式,方便自己回顧,也希望能幫到大家
在接入Walle之前,我們需要創建好籤名文件,並且在項目的app build.gradle中進行配置,如下:
signingConfigs {
release {
storeFile file('D:\\asexample\\MyWalleApplication\\key\\walle.jks')
storePassword '123456'
keyAlias = 'walle'
keyPassword '123456'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
debug{
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
美團Walle具體接入方式可以參考:https://github.com/Meituan-Dianping/walle/
首先在位於項目根目錄 build.gradle 文件中添加Walle Grale 插件的依賴,如下:
buildscript {
dependencies {
classpath 'com.meituan.android.walle:plugin:1.1.6'
}
}
並在當前App的build.gradle文件中apply這個插件,並添加上用於讀取渠道號的ARR
apply plugin: 'walle'
dependencies {
compile 'com.meituan.android.walle:library:1.1.6'
}
同時還需要在app的build.gradle中配置插件:
然後進行同步一下。
接着把多渠道文件放到app目錄下,如下圖:
然後我們需要進行多渠道打包的時候,只需要執行./gradlew clean assembleReleaseChannels
即可來生成所有的渠道包
到此,我們就可以看到項目下生成了多渠道包:
生成多渠道包到此也就完成了
但是這裏還有一個問題,我們直接通過美團Walle多渠道方案打包生成的apk,在經過360加固之後,是會丟掉渠道信息的
,對此問題,美團在GitHub上也提出瞭解決方案360加固失效?
這裏我們就直接採用Jay-Goo
大佬提供的Python打包腳本ProtectedApkResignerForWalle,這也是美團官方推薦的方案。接下來我們就講解如何使用該腳本
第一步:在app的build.gradle中添加依賴:
compile 'com.meituan.android.walle:library:1.1.6'
第二步:把https://github.com/Jay-Goo/ProtectedApkResignerForWalle 中的文件克隆下來,放在自己工程自定義的文件夾中,如下:
上圖walle文件夾下除了自定義的,其餘文件和文件夾就是從Jay-Goo大佬那裏克隆下來的
接着我們把加固後的包放到walle文件夾下,如下圖所示:
把config.py文件中的這幾個內容改成自己項目中的配置 ,如下圖所示:
還有把config.py文件中sdkBuildToolPath改成自己的Android SDK buidtools所在的路徑:
然後在ApkResigner.py文件所在路徑下運行python腳本:python ApkResigner.py如下圖所示:
執行完成後就生成了多渠道包,如下圖:
如果你不想每次生成多渠道包時都要修改config.py文件中的protectedSourceApkName的名字,我們複製一個config2.py你可以用如下的方式替換:
同時還有複製一個ApkResigner.py命名爲ApkResigner2.py,並把該文件中的所有config替換成config2,如下圖:
然後在控制檯運行腳本:python AapResigner.py如下圖,同樣可以生成多渠道包:
至此美團多渠道打包總結完畢!我的整個完整demo下載