天天看點

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

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

問題:

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

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

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

解決:

通過閱讀官方的技術文檔,始終沒有發現有對這個情況的相關配置項,是以隻能從别處下手,最後發現,通過在 app module 的 “build.gradle” 檔案中,注釋掉依賴插件腳本,最終解決掉這個問題:

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

說兩句:

目前運作調試一切正常,不過要始終留意後續是否會出現問題;重要的一點是,當要打包新版本時,一定要解開這個注釋。

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
           
引入 Tinker 熱更新方案遇到的問題

解決:

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{} 方法體前面,不然會報以下錯誤:

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

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

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

繼續閱讀