Android 項目從 AS 2.3.x 遷移至 AS 3.0 踩坑記錄。
昨天把手裏面一個基於 AS 2.3.3 開發的大項目遷移至 AS 3.0.1 的時候,還專門參考了下別的大佬寫的踩坑記錄博文,比如 這篇。新版本的的 AS 3.x 裏的 Gradle 插件相較於 AS 2.x 版本的 Gradle 插件在項目構建腳本語法方面進行了很多破壞性修改,但是有很多參考資料嘛我改的還是比較輕鬆的。嗯一開始感覺一切正常,話說我這個項目裏有即時通訊功能,並且因爲時間比較趕我選擇了集成第三方的即時通訊 (融雲)SDK。
然後在我想把項目從手機裏跑起來的時候遇到了一個比較詭異的問題!融雲的即時通訊 SDK 集成的時候需要往項目裏引入兩個 module:
就是上面圖1裏用黑框框起來的兩個 module。
這時我已經按照上面提到的大佬寫的博客一步步把 Gradle 腳本改好了,按說應該能正常在手機上把項目跑起來了,不過事實證明我想得太簡單了……
注意上面圖1中用紅框框起來的那個 jar 文件,我在 app 模塊兒裏有多處用到了裏面的類,現在項目 app 模塊兒裏用到這個 jar 文件裏的類的地方一直提示我找不到這個 jar 文件裏的類…
這。。。
不用多說這種問題用手指頭想想也知道肯定是項目模塊 gradle 腳本里的問題…
於是我看了眼 IMKit 模塊兒的 build.gradle 腳本,裏面最外部的:
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'src/main/libs')
implementation 'com.android.support:support-v4:27+'
implementation project(':IMLib')
}
這裏注意第二行對 jar 文件的依賴聲明,問題就出在這裏,我們把 implementation 改成 compile:
dependencies {
compile fileTree(include: ['*.jar'], dir: 'src/main/libs')
implementation 'com.android.support:support-v4:27+'
implementation project(':IMLib')
}
問題成功解決~
完。