使用android studio遇到的一些問題

目錄

升級到studio3.1.2之後無法編譯jar包

在build文件註明倉庫來源依然無法編譯某些glide等github開源項目

implementation api compile的區別

項目不停的indexing的解決方法

         解決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 來看看具體的日誌,看看代碼哪裏出錯。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章