Bugly多渠道(Walle)熱更新解決方案
上文中講了騰訊Bugly熱更新的接入和具體使用,還沒使用熱更新的小夥伴可以移步去看一下:
二、Bugly熱更新+Walle(瓦力)多渠道打包解決方案
三、Bugly熱更新+Walle(瓦力)多渠道打包+應用加固解決方案
這篇文章接著上一篇講一下多渠道熱更新解決方案,這裡安利一下Walle(瓦力):Android Signature V2 Scheme簽名下的新一代渠道包打包神器,如果想了解更多關於瓦力渠道打包的資訊,可以檢視這裡:新一代開源Android渠道包生成工具Walle
這裡預設大家已經接入了Bugly熱更新,這篇文章就介紹一個補丁修復所有渠道的解決方案。
一、接入Walle:
Gradle外掛使用方式
配置build.gradle
在位於專案的根目錄 build.gradle 檔案中新增Walle Gradle外掛的依賴, 如下:
buildscript {
dependencies {
classpath 'com.meituan.android.walle:plugin:1.1.6'
}
}
並在當前App的 build.gradle 檔案中apply這個外掛,並新增上用於讀取渠道號的AAR
apply plugin: 'walle' dependencies { compile 'com.meituan.android.walle:library:1.1.6' }
並在當前App的 build.gradle 檔案中配置外掛
walle { // 指定渠道包的輸出路徑 apkOutputFolder = new File("${project.buildDir}/outputs/channels"); // 定製渠道包的APK的檔名稱 apkFileNameFormat = '${appName}-${packageName}-${channel}-${buildType}-v${versionName}-${versionCode}-${buildTime}.apk'; // 渠道配置檔案 channelFile = new File("${project.getProjectDir()}/channel") }
配置項具體解釋:
apkOutputFolder:指定渠道包的輸出路徑, 預設值為new File("${project.buildDir}/outputs/apk")
apkFileNameFormat:定製渠道包的APK的檔名稱, 預設值為’ {buildType}-${channel}.apk’
可使用以下變數:
projectName - 專案名字
appName - App模組名字
packageName - applicationId (App包名packageName)
buildType - buildType (release/debug等)
channel - channel名稱 (對應渠道打包中的渠道名字)
versionName - versionName (顯示用的版本號)
versionCode - versionCode (內部版本號)
buildTime - buildTime (編譯構建日期時間)
fileSHA1 - fileSHA1 (最終APK檔案的SHA1雜湊值)
flavorName - 編譯構建 productFlavors 名
channelFile:包含渠道配置資訊的檔案路徑。 具體內容格式詳見:渠道配置檔案示例,支援使用#號添加註釋,也就是在你的專案moudle下新建一個檔案,命名為channel(moudle上滑鼠右鍵——>New——>File),如下圖:
這個檔案的內容就是你要打的包的渠道資訊,如下圖:
如何獲取渠道資訊
在需要渠道等資訊時可以通過下面程式碼進行獲取
String channel = WalleChannelReader.getChannel(this.getApplicationContext());
如何生成渠道包
生成渠道包的方式是和assemble${variantName}Channels指令結合,渠道包的生成目錄預設存放在 build/outputs/apk/,也可以通過walle閉包中的apkOutputFolder引數來指定輸出目錄
用法示例:
生成渠道包: gradlew clean assembleReleaseChannels
支援 productFlavors生成渠道包: gradlew clean assembleMeituanReleaseChannels
生成渠道包有兩種方式:
1、點選開啟Terminal,通過輸入命令gradlew clean assembleReleaseChannels的方式生成渠道包,這種方式會刪除之前執行打渠道包命令時生成的渠道包
如下圖:
2、點選Android Studio右側Gradle,選擇專案package目錄下的assembleReleaseChannels選項進行多渠道打包,這種方式不會刪除之前執行多渠道打包命令生成的渠道包
如下圖:
這兩種方式生成渠道包都很快,基本上幾十秒一分鐘左右就能完成20個左右的渠道包,這些渠道包預設在build——>outputs——>channels資料夾下,如下圖:
在執行多渠道打包命令的時候,也會自動打出Bugly熱更新的基準包,就跟正常打Bugly熱更新基準包的步驟是一樣的,基準包也是在build——>bakApk目錄下,如下圖:
下面就可以以這個基準包為標準打出補丁了,流程跟正常的打補丁包的過程是一樣的,這裡就不再介紹了。
當然你可以選擇使用Bugly統計渠道資訊:
//獲取渠道資訊
String channel = WalleChannelReader.getChannel(this);
Bugly.setAppChannel(this, channel);
// 這裡實現SDK初始化,appId替換成你的在Bugly平臺申請的appId,除錯時將第三個引數設定為true
Bugly.init(this, "811fdaa3d7", true);
我從channels資料夾下,隨便選了四個渠道包安裝在我的測試機上,上傳補丁後,均修復成功,也均統計到了相應的渠道資訊!
到這裡Bugly一個補丁修復所有渠道就介紹完了。
祝大家新的一年,生活愉快,工作順利!