1. 程式人生 > >gradle匯入開源工程常見的錯誤(持續更新中)

gradle匯入開源工程常見的錯誤(持續更新中)

Gradle是一個基於Apache Ant和Apache Maven概念的專案自動化建構工具。它使用一種基於Groovy的特定領域語言來宣告專案設定,而不是傳統的XML。當前其支援的語言限於Java、Groovy和Scala,計劃未來將支援更多的語言。(百度上拿來的)
至於gradle的更多詳情,感興趣的小夥伴可以閱讀http://www.cnblogs.com/davenkin/p/gradle-learning-1.html

下面我們就列舉一些因gradle的原因導致的錯誤

錯誤1

  • 匯入專案時的錯誤
    這裡寫圖片描述

作為一個程式猿,在工作之餘檢視別人的程式碼,借鑑別人的思維是很重要的,而快捷方便的方式無疑是將別人的專案從github或別的地方下載下來,然後匯入我們自己的AS中,然後再慢慢炮製,但如果我們在匯入專案的時候報出如上錯誤,!!!

好了廢話不多說,看解決辦法

  • 只需要在專案外層的builde.gradle中新增如下程式碼
buildscript {
  repositories {
    mavenCentral()
  }
  dependencies {
    classpath 'com.android.tools.build:gradle:2.3.3'
  }
}
allprojects {
  repositories {
    mavenCentral()
  }

注意!!
這裡寫圖片描述

  • 上面紅色箭頭所指的部分,並不一定要和樓主的一樣,最好找到你自己可以執行的專案,然後降之拷貝過來替換掉

錯誤2

依然是導人專案時容易出現的錯誤

這裡寫圖片描述

解決辦法

  • 在最外層的build.gradle的allprojects中新增如下程式碼,尤其是下面紅色箭頭標註的地方
allprojects {
    repositories {
        jcenter()
        maven { url "https://jitpack.io" }
    }
}

這裡寫圖片描述

錯誤3

Error:No resource identifier found for attribute ‘roundIcon’ in package ‘Android’

roundIcon是個高版本里面才有的東東,低版本是沒有的,一般是由於調節targetSdkVersion版本造成的

解決辦法:

刪除清單檔案中的:
android:roundIcon=”@mipmap/ic_launcher_round” 這句話就OK了

只要看到Error:No resource identifier……,肯定是xml檔案裡面出問題了,盯著找就好了

如果是in package ‘XXX’,這個多半就是自己定義的控制元件在應用的時候出了問題。

**

錯誤4

**
android studio更新2.0後出現的Gradle sync failed: Unknown host等gradle問題解決辦法

聽說這次as更新2.0後可以實時除錯,我靠,這麼牛瓣的更新誘惑讓我迫不及待的更新了,下載安裝後預設打開了之前的專案,發現Gradle一直出現問題,開始是Gradle sync failed: Unknown host ‘jcenter.bintray.com’. You may need to adjust the proxy settings in Gradle. Consult IDE log for more details (Help | Show Log)

這種問題,好吧,我上網搜尋解決辦法,改了build.gradle和gradle.properties,什麼的,然後發現消除一個問題會又出現一個問題,正當我後悔更新的時候突然想到了可不可以用as2.0新建一個專案然後把build.gradle和gradle.properties替換了之前專案的這兩個玩意,抱著試一試的心態給它替換了,結果….當然是搞定了!然後可以盡情的享受instant debug了,哈哈哈~

**

錯誤5

**
這裡寫圖片描述

解決辦法

gradle-wrapper.properties裡修改了gradle的版本,與之前沒有報錯的gradle版本一致。就可以了

這裡寫圖片描述

錯誤六6

自從AS升級到3.0後gradle又出現了許多新坑

gradle:3.0.0出現Error:(43, 0) Cannot set the value of read-only property ‘outputFile’ for ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=debug, filters=[]}} of type com.android.build.gradle.internal.api.ApkVariantOutputImpl.

解決辦法

出錯在最後一行,應該是新版Gradle的問題,最後在Stackover Flow找到解決辦法,參考

把 variant.outputs.each 改成

 variant.outputs.all

最後一行改成

outputFileName = fileName

錯誤7

解決辦法


defaultConfig {
targetSdkVersion:*
minSdkVersion :*
versionCode:*
versionName :*
//版本名後面新增一句話,意思就是flavor dimension 它的維度就是該版本號,這樣維度就是都是統一的了
flavorDimensions “versionCode”
}

錯誤8

Error:java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
這裡寫圖片描述

解決辦法

在gradle 3.0.0中AAPT2是預設開啟的,在專案的gradle.properties中新增android.enableAapt2=false,sync後就編譯通過了。
這裡寫圖片描述

歡迎關注作者微信公眾號
這裡寫圖片描述