android 有些異常爆出來之后,并不能顯示問題所在绷柒,我們看著也也知道到底哪的問題志于,這里記錄下,這些問題碰到也確實(shí)蛋疼的很废睦,搞不好是要花不少時(shí)間的伺绽,一天的好心情可能也要搞沒了
1. supper 庫版本和官方組件庫不兼容
java.lang.NoSuchMethodError: No static method getFont(Landroid/content/Context;ILandroid/util/TypedValue;ILandroid/widget/TextView;)Landroid/graphics/Typeface; in class Landroid/support/v4/content/res/ResourcesCompat; or its super classes (declaration of 'android.support.v4.content.res.ResourcesCompat'
at android.support.v7.widget.TintTypedArray.getFont(TintTypedArray.java:119)
舉個(gè)例子: recyclerview 版本比 supper V7高就會(huì)出現(xiàn)這個(gè)問題,app 中以 supper 庫的版本為基準(zhǔn),所有官方組件庫的版本都不能高于 supper 庫的版本奈应。
2. AS 升3.0之后 gradle 腳本 APK 重命名
-
編譯的時(shí)候報(bào)錯(cuò):
-
發(fā)現(xiàn)是在gradle里打包輸出apk的代碼出的問題澜掩,原代碼是這樣的:
-
修改成這樣就可以了:
3. gradle 版本異常
Error:Failed to open zip file.
Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)
Re-download dependencies and sync project (requires network)
Re-download dependencies and sync project (requires network)
一看這問題就是zip解壓失敗,接著下面提示Gradle's dependency cache may be corrupt:Gradle的依賴緩存可能是損壞的杖挣。到這里大家應(yīng)該明白肩榕,as出現(xiàn)這樣的問題是怎么導(dǎo)致的了吧,文件損壞惩妇。
as 互譯自動(dòng)判斷所需的 gradle 的版本地是否存在株汉,不存在回去自動(dòng)下載的,問題是 gradle 的包基本都在100-80M 之間歌殃,且遠(yuǎn)程連接不穩(wěn)定郎逃,經(jīng)常存在下載終中斷,失敗的問題挺份,所以造成一個(gè) gradle 文件下載不完全的問題褒翰,所以會(huì)出現(xiàn)上述報(bào)錯(cuò)信息
我們查看 AS 默認(rèn) gradle 配置路徑:
然后按照路徑 xxx.gradle\wrapper\dists\gradle-3.3-all\55gk2rcmfc6p2dg9u9ohc3hw9 ,這里以3.3版本距離匀泊,找到我們對(duì)應(yīng)的那個(gè)版本的 gradle 文件夾优训,找到最終的 gradle 文件
這里我發(fā)現(xiàn),AS 自動(dòng)下載的 gradle.zip 文件只有20M各聘,明顯是下載不完全的揣非,我們游2種處理手段:
-
一個(gè)是刪除 這個(gè) gradle.zip 文件,AS 會(huì)再次自動(dòng)下載躲因,AS 升級(jí)到3.1之后早敬,下載大文件會(huì)有提示线衫,鏈接也穩(wěn)定多了
Snip20180414_12.png - 另一個(gè)是我們自己下載奏赘,然后把 下載的 gradle.zip 文件放到這個(gè)位置
下載鏈接: services.gradle.org/distributions/gradle-3.3-all.zip , 版本號(hào)自自行替換即可
最后我們需要更新根目錄下 gradle/wrapper/properties 下的 gradle 配置满葛,需要更換版本號(hào)镰矿,AS 自動(dòng)下載的不需要了琐驴。