紀錄Gradle從6.5升級到7.5
最近主管想用Firebase的新功能,所以需要升級Firebase Bom,但是升級就需要把Kotlin升級到1.8.0,目前還是1.6.10,但是要升級kotlin就連Gradle也要升級,Gradle升級了順便就升級AGP。…
Wiki topics:
📱 · Mobile Development
紀錄Gradle從6.5升級到7.5
最近主管想用Firebase的新功能,所以需要升級Firebase Bom,但是升級就需要把Kotlin升級到1.8.0,目前還是1.6.10,但是要升級kotlin就連Gradle也要升級,Gradle升級了順便就升級AGP。 之前就有想要升級Gradle了,因為可以用新一點的Android Studio,但是升級這個吃力不討好,所以主管感覺也沒什麼動力,不過最近感覺比較開放讓我們升級,所以紀錄一下這次升級修改些什麼。
- 移除kotlinx.android.synthetic改用ViewBinding取代,目前舊專案是兩個混用,但是當Kotlin升級到1.8.0的時候kotlinx.android.synthetic已經被移除了,這個麻煩的地方是要調整的地方很多,光這次就改了50個class,其次可怕的是有一些舊的程式碼寫的不是很好,很容易會有聲明週期混亂和洩漏的問題,導致ViewBinding有可能會丟出NPE問題。
- buildToolsVersion從29.0.2升級到30.0.3,這個好像在新版的AS好像就消失了
- org.gradle.jvmargs=-Xmx4g,記憶體開到4G,有遇到打包APK遇到OOM問題
- 設定忽略TargetSDK要求lintOptions,最低要求最低31但是我們沒要上Google Play商店所以就忽略
lintOptions {
disable ‘ExpiredTargetSdkVersion’
}
- 本地Lib引入需要添加allowInsecureProtocol true
- 第三方Lib DLNA投屏功能,整個升級遇到最大問題反而是這個,這個功能是很久以前其他同事寫的,當我Gradle升級上去的時候,去implementation的時候會丟出一些版本太舊的問題,然後作者有寫一個V2.0.0的版本但是大改過,我引入的話就代表我連原本的程式碼也要修改,我根本就改不動QQ,所以決定去gradle的cache把lib的aar去複製出來,結果直接引入的時候缺東缺西,看了原始碼才他的module引入第三方Lib的時候居然是用api的方法,所以導致aar在打包的時候好像不會包進去,最後只好引入aar之後再額外引入其他需要的lib,至於其他需要的jar因為太舊無法引入,所以一樣去gradle的cache找,最後為了這個啦嘰Lib額外引入了9個jar,這個東西弄了我一天害我覺得小腦的萎縮了。
現在專案終於可以用新版AS打開了,終於打開AS不是電鰻了,真的是很感動,做這種升級動作真的是吃力不討好,測試也不好測試,出事還要被怪。 未來如果要升級到Gradle 8.0可能會碰到BuildConfig和一些有的沒的問題,不過到時候還有沒有在寫android都不知道了。

메타데이터
- post_id
- 18f8bf7e4732
- slug
- 紀錄gradle從6-5升級到7-5-18f8bf7e4732
- url
- https://medium.com/@west7418/%E7%B4%80%E9%8C%84gradle%E5%BE%9E6-5%E5%8D%87%E7%B4%9A%E5%88%B07-5-18f8bf7e4732
- canonical_url
- https://medium.com/@west7418/%E7%B4%80%E9%8C%84gradle%E5%BE%9E6-5%E5%8D%87%E7%B4%9A%E5%88%B07-5-18f8bf7e4732
- author_url
- https://medium.com/@west7418
- status
- ok
- fetched_at
- 2026-07-19 16:55:10