1. 程式人生 > >引入 Tinker 熱更新方案遇到的問題

引入 Tinker 熱更新方案遇到的問題

1、每次 Run 都會生成一個 bakApk

問題:

引入 Tinker 熱更新方案後,每次 Run 都會生成一個 bakApk,如果每天要除錯很多地方,那麼 build/bakApk 下,會生成N個對應的 bakApk 資料夾,最終會使整個專案檔案容量暴增…(博主還懷疑,這樣會造成 AndroidStudio 編譯速度的延緩,但未測試過)

解決:
通過閱讀官方的技術文件,始終沒有發現有對這個情況的相關配置項,所以只能從別處下手,最後發現,通過在 app module 的 “build.gradle” 檔案中,註釋掉依賴外掛指令碼,最終解決掉這個問題:

說兩句:
目前執行除錯一切正常,不過要始終留意後續是否會出現問題;重要的一點是,當要打包新版本時,一定要解開這個註釋。

2、can’t the get signConfig for this build

問題:
執行 buildTinkerPatchRelease 打 Release 版本補丁包時報以下錯誤:

Error:Execution failed for task ':app:tinkerPatchRelease'.
> can't the get signConfig for this build


解決:

android {
    ...
    // 簽名配置【buildTypes中呼叫了signingConfigs,則signingConfigs{}要置於buildTypes{}前面】
    signingConfigs {
release { try { storeFile file("MyProject.jks") storePassword "111111" keyAlias "zhangzeqiao" keyPassword "111111" } catch (ex) { throw new InvalidUserDataException(ex.toString()) }
} } buildTypes { release { ... signingConfig signingConfigs.release } debug { ... signingConfig signingConfigs.release } } ... }

其中要特別注意,signingConfigs{} 方法體要置於 buildTypes{} 方法體前面,不然會報以下錯誤:

Error:(30, 0) Could not get unknown property 'release' for SigningConfig container of type org.gradle.api.internal.FactoryNamedDomainObjectContainer.

再者,storeFile file(“MyProject.jks”) 中的簽名檔案,與 build.gradle 在同一目錄下: