5.0時代(android L)已經是兩年前的事了 6.0的SDK現在都可以用了
那麼對於向下兼容的問題越來越重要 所以不得不用v7這個包
eclipse不同於 Android Studio可以gradle中一句compile直接引用v7
需要手動從SDK目錄的 \extras\android\support\v7\appcompat 導入這個v7項目
**需要注意的是 ,Import 這個項目的時候 必須勾選這個選項
項目和其依賴工程必須在同一個工作空間下 。
而且項目中只能有一個v7包 不能出現libs下導入了 v7 的jar包 又依賴了v7 的項目
否則當使用Theme.Appcompat.Light.NoActionBar 這個主題時 出現異常
那麼爲什麼就得導入項目 而不是用v7的jar包呢
看一下v7工程裏的res文件夾:
好吧 這麼多是幹嘛的 。
比如使用v7包提供的Appcompat主題啊 就需要這裏面的資源
一種常見錯誤表現是 引入了這個項目之後直接出現編譯不通過 clean也不行 經常提示values-21 values-23 裏面的東西找不到
values-21 裏面是Android 5.0 系統加載的資源目錄 (values 後面的後綴是爲了區分不同版本 ,分辨率,不同語言)
values-23就是android 6.0 的資源目錄了 。
刪除這些文件夾 不報錯了 然並卵 運行依舊出錯
檢查v7這個項目的編譯版本 和 自己當前項目的編譯版本 即project.properties 文件 的 target 屬性
調整成 23 然後clean項目
爲什麼呢 因爲編譯版本小於6.0 應用編譯打包時 不認爲這個app 會安裝在6.0上 所以就不會把values-23的內容打包進去 。小於5.0同理