目錄
在build文件註明倉庫來源依然無法編譯某些glide等github開源項目
解決gradle.api.internal.tasks.compile.CompilationFailedException: Compilation failed
-
升級到studio3.1.2之後無法編譯jar包
升級之前module編譯jar包的命令如下:
task makeJar(type: Copy) {
delete 'build/libs/adsdk.jar' //刪除已經存在的jar包
from('build/intermediates/bundles/release/')
into('build/libs/')//jar包的保存目錄
include('classes.jar')//設置過濾,只打包classes文件
rename('classes.jar', 'adsdk.jar')//重命名,mylibrary.jar 根據自己的需求設置
}
makeJar.dependsOn(build)
升級之後一直無法編譯,後來檢查發現build/intermediates/bundles/release/ 這個目錄已經不存在,bundles目錄改爲:package-classes 目錄,所以改爲build/intermediates/package-classes/release/即可編譯成功。
-
在build文件註明倉庫來源依然無法編譯某些glide等github開源項目
repositories {
mavenCentral()
google()
jcenter()
}
因爲glide等一些開源項目在maven管理,使用的時候在項目的build文件要註明mavenCentral(),開始的時候卸載google()和jcenter下面,導致總是無法編譯通過。發現他找的目錄是錯誤的。要把mavenCentral放到首位。
-
implementation api compile的區別
sutdio 升級到3.0之後,gradle工具也升級到了4.0的版本,這個時候在配置裏面的依賴關鍵字compile 宣佈放棄,使用api和implementation,如果不看他們之間的區別會導致發生項目編譯不成功的情況。
compile 'org.greenrobot:eventbus:3.1.1'
compile 可以看做等於與api
api 'org.greenrobot:eventbus:3.1.1'
他們與implementation不同,比如app module通過implementation依賴於moduleA, 而moduleA通過implementation依賴moduleB,那麼編譯app module的時候是無法將moduleB進行編譯的。這個時候如果app module也需要依賴moduleB 就會出現錯誤。而api會將moduleA依賴的所有module也加載進來。但是並不是就直接用api就最好。因爲有時候,app module並不需要依賴其他module,那麼用implementation也會提升編譯速度。
-
項目不停的indexing的解決方法
編譯一個開源項目發現studio頻繁的indexing,那是非常的頻繁啊。最後發現是2個module的名稱有問題。改過之後就ok了。在網上也發現了其他的解決方法:
解決辦法:File--> Invalidate Caches/Restart--> Invalidate and Restart.
這個方法也的確解決了一些人的問題。
-
解決gradle.api.internal.tasks.compile.CompilationFailedException: Compilation failed
在terminal中輸入gradlew compileDebugSources 來看看具體的日誌,看看代碼哪裏出錯。