1. 程式人生 > >Android問題集錦(十五)- 成功解決org.gradle.api.internal.tasks.compile.CompilationFailedException

Android問題集錦(十五)- 成功解決org.gradle.api.internal.tasks.compile.CompilationFailedException

在一次引入第三方庫之後,在Run執行時突然報以下錯誤:

'Caused by: org.gradle.api.internal.tasks.compile.CompilationFailedException: Compilation failed; see the compiler error output for details.'

經過一輪Google後,網上說的原因是:

按照android stadio 3.1的要求,需要把gradle版本升級為 4.4及以上,但是gradle 4.4及以上要求將依賴api的compile換成implementation。而implementation宣告的依賴沒辦法傳遞到module以外,即該module 以外module沒辦法引用到implementation宣告的api。

如果是這個原因的話,我升級3.x已經有一段時間了,一直是用compile或implementation宣告引用第三方庫的,都沒出現這樣的 問題,當時就納悶,就嘗試了以下解決方案:

將compile 替換為 api即可,也就是如果有外部引用,則換成:api,剩下的換成:implementation

示例:

dependencies {
    api fileTree(dir: 'libs', include: ['*.jar'])
    testImplementation 'junit:junit:4.12'
    api 'com.android.support:support-v4:26.1.0'
api 'com.android.support:appcompat-v7:26.1.0' api 'com.google.code.gson:gson:2.8.2' api 'com.j256.ormlite:ormlite-core:4.48' api 'com.j256.ormlite:ormlite-android:4.48'

然而並沒有什麼用,無論是clear build 還是rebuild project都不行。
最後還是File -> Invalidate Caches -> Invalidate and Restart 解決這個問題

小結:

  • compile 替換為 api
  • File -> Invalidate Caches -> Invalidate and Restart

參考:
https://juejin.im/entry/5acf1ef56fb9a028cd457b6e