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後就編譯通過了。
歡迎關注作者微信公眾號