android studio module添加最新的com.android.support:appcompat-v7:21.0.0依賴報錯,androidstudio下載
我的開發平台是Mac,測試機是MX3(API 19 android 4.4.4),我不確定其他平台是否出現該問題,所以提前說明一下,免得誤人子弟。
今天再使用自訂ActionBar的時候,出現了一個很奇葩的錯誤,就是我為自己的module添加了最新的com.android.support:appcompat-v7:21.0.0依賴後,在Activity中使用 final ActionBar actionBar = getActionBar();actionBar.show();來擷取ActionBar時,拋出了NullPointerException異常,這讓我百思不得其解。這在之前使用一直沒用問題啊。。。。。於是,各種百度google,但是並未發現類似問題(我用了最新的support包)。最後,人品爆發,在StackOverFlow上找到了類似的問題,後來我意識到可能是 com.android.support:appcompat-v7:21.0.0版本太高,導致在android 5.0以下的sdk導致不相容問題。估計,google的腦袋是被槍打了把,話說support包本就是用來做相容的吧,在這個版本竟然成了導致不相容的原因。。。。。
錯誤原因分析如下:
在module的build.gradle檔案裡,如果用預設的自動依賴處理方式,如下所示:
dependencies {compile fileTree(dir: 'libs', include: ['*.jar'])compile project(':Library')compile 'com.android.support:support-v4:21.0.0'compile 'com.android.support:appcompat-v7:21.0.0'}
編譯時間系統就會去依賴最新版的support:appcompat-v7:21.0.0 。按照之前的經驗來說是不因該有問題的,但是據我的理解,目前appcompat-v7:21.0.0須使用android 5.0版本的build tool,而且build出來的程式只能在Android 5.0下運行,真屌啊。。。。我們4.4.4的使用者混不下去了嗎???
所以解決方案也很簡單:就是把appcompat-v7:21.0.0改為appcompat-v7:19.+
如下所示:
dependencies {compile fileTree(dir: 'libs', include: ['*.jar'])compile project(':Library')compile 'com.android.support:support-v4:21.0.0'compile 'com.android.support:appcompat-v7:19.+'}
PS: 發現國內論壇並未有人記載過此問題,所以我來記錄一下,權當備忘錄了。其中發了很多牢騷,還請見諒,因為這個問題耽誤了我三個多小時。畢竟自己實力太菜啊,哈哈,菜鳥的高手養成計劃已經開始了。