天天看點

關于Eclipse建立Android項目時,會多出一個appcompat_v7的問題



問題描述:

使用eclipse建立一個android項目時,發現project清單中會多建立出一個appcompat_v7項目,再建立一個android項目時,又會再多出一個appcompat_v7_2,如果再次建立,會以此類推地建立出appcompat_v7_x格式的“多餘項目”出來(此情況在adt更新為22.6.x版本後出現,22.3.x前的版本不會有)

查明原因:

adt在22.3.x版本前沒有出現該情況,更新為22.6.x版本後,才出現該情況,可以猜測是新版本導緻。猜測到原因後可以分析下appcompat_v7是用來做什麼的,展開appcompat_v7項目,會發現有一個readme.txt檔案,輕按兩下檢視,該檔案描述如下:

library project including compatibility actionbar.

this can be used by an android project to provide

access to actionbar on applications running on api 7+.

there is technically no source, but the src folder is necessary

to ensure that the build system works.  the content is actually

located in libs/android-support-v7-appcompat.jar.

the accompanying resources must also be included in the application.

字面意思大概可以看出,該項目是一個library project, 作用是讓你的android project 在api 7+的sdk版本(即android2.1版本)可以通路actionbar的api,actionbar相當于使用者界面的操作欄,具體actionbar的解釋可以參考:http://developer.android.com/guide/topics/ui/actionbar.html。是以從中可以看出多出這個project是為了相容低版本的sdk,那我們建立的android項目是如何引用這個類庫項目呢?通過右鍵點選android項目---->properties-->android,可以檢視到該類庫項目已被引用進來了

關于Eclipse建立Android項目時,會多出一個appcompat_v7的問題
關于Eclipse建立Android項目時,會多出一個appcompat_v7的問題

原因已查明,可以驗證一下:

首先建立一個android項目,在選擇android版本号的界面,如果選擇的最低android版本的"大版本号”小于編譯時采用的android大版本号時,就需要考慮版本相容問題,這樣子建立出項目後自然就會産生出appcompat_v7這個類庫項目出來。具體界面如下圖,如果編譯時采用4.3版本,選擇最低要求版本号為2.x或者3.x時建立出來的項目就會自動建立appcompat_v7支援庫。

關于Eclipse建立Android項目時,會多出一個appcompat_v7的問題

疑問:

可以不産生appcompat_v7這個類庫項目嗎?答案是可以的,隻要版本号選擇時最低要求版本和編譯時用的版本選擇同一種即可,但不推薦這麼幹,開發android程式需要考慮相容多個版本

補充:

關于library project的相關内容,可以通過檢視官方文檔介紹,具體檢視:http://developer.android.com/tools/support-library/features.html#v4

找到 v7 appcompat library 的解釋:内容如下:

note: this library depends on the v4 support library. if you are using ant or eclipse, make sure you include the v4 support library as part of this library's classpath.

here are a few of the key classes included in the v7 appcompat library:

the gradle build script dependency identifier for this library is as follows:

以上是個人解決問題過程中查閱一些資料得出的一些結論,可能會有不對的地方,希望有看出問題的仁兄指點一二。剛開始學習android開發,有些知識實作太薄弱,為了記錄下平時遇到的一些問題,也隻好先将自己了解的一些東西寫出來,等對android多熟悉一些,再回來檢查下這些文章吧<( ̄︶ ̄)>

繼續閱讀