鑒於有朋友找資源不方便,我把這個項目需要的資源都上傳了,需要的可以從這個地址下載http://download.csdn.net/detail/dclchj/3928496
Android內建的Home應用程式Launcher2是比較重要也比較複雜的程式,開機後使用者看到的第一個介面就是它。這裡詳細介紹將Android源碼中的Launcher2工程匯入Eclipse工程的方法。可以為學習與修改Launcher2工程打好基礎。
感謝前輩在網上分享的資料,使我知道怎麼著手。不過這些資料有不完整的問題,導致我昨天跟著做時遇到一些問題從而卡住至今天才解決。
下面是我的開發環境:
作業系統:Windwos XP 編譯器:Eclipse
Android源碼版本:2.3.4 Android SDK(ADK)版本:在編譯器裡裝了兩個,分別是4.0 和 2.3.3(這個項目使用2.3.3)
JAVA compiler compliance level 1.6 (這個從Project / Properties / Java Compiler 可以看到與修改)
需要準備的資源:
Android2.3.4編譯好的源碼一份(之所以要編譯好,是因為後面需要用到編譯出來的classes.jar檔案)
Launcher2工程檔案夾。(就在上面的源碼的路徑 packages / apps 路徑下)
然後可以開始工作了,以下主要引用了兩位前輩的部落格內容,地址分別為:(建議參考這兩篇文章看,其中一篇有圖片很不錯!)
http://univasity.iteye.com/blog/937547 和http://blog.csdn.net/chenzhixin/article/details/6264209
另有參考資料
Android 2.1 源碼目錄結構詳解 自已百度
如果只看其中一篇文章的話,會不成功,兩篇都看了,仍會遇到問題。下面我寫的是實踐後成功的詳細方法與總結。
***********************************************************
——————————這一步是添加工程—————————————
1。將源碼中packages/apps/Launcher2整個檔案夾拷貝到一個目錄中,這個目錄不能是Eclipse的工程目錄比如wrokgroups。最好在D盤根目錄建立一檔案夾別帶中文(習慣)
2。建立Android項目,選擇"Create project from existing source",並指定項目的路徑即步驟1建立的檔案夾。SDK你要根據你下載的Project所支援的Android版本選擇(這裡2.3.3),然後“finish”。
3。刪除項目,然後複製2中建立的檔案夾到Eclipse工作目錄中。
4。File / Import / General (Existing Projects into Workspaces) / Browse 選擇步驟3複製來的的工程。這時Launcher就匯入到Eclipse中了。不過工程會有很多紅叉,接下來解決這個問題。
——————————這一步是匯入包檔案———————————
5。此段為複製前輩內容:
首先需要編譯好android代碼,編譯完成後會產生一些包檔案,複製下面三個檔案到D盤根目錄(其實可以任意選)
這裡我們用到的有:(產生的包的路徑為源碼的out/target/common/obj/JAVA_LIBRARIES)
1)framework_intermediates/classes.jar :這個主要是android的架構類
2)android-common_intermediates/classes.jar :這個包含com.android.common.Search這個類
3)core_intermediates/classes.jar :這個包包含dalvik.system.VMRuntime這個類
這些都是需要匯入到工程裡面的包,這個可以通過配置工程的Build Path來加入,
右鍵工程名稱然後選擇Build Path->Configure Build Path...->Libraries->Add Library->User Library->User Libraries...->New... 輸入任意名字(注意,這裡一定要先中 System Library),確認後再選Add JARs 選擇三個classes.jar之間再確認。重複三次將三個classes.jar都匯入進來。
將3個包加入進來後,然後還需要將它們放到android2.3.3這個包的前面,可以在Build Path配置中選擇Order and Export (註:選中3個新目錄,然後UP就行了)
這時候就會發現Launcher2工程以及沒有錯誤了,也可以編譯了。
—————————這一步是重新命名包名—————————————
6。此段為複製前輩:
為了避免與系統預設的包名衝突,所以需要進行修改。
1。在src/com.android.launcher上點擊右鍵,"Refactor" -> "Rename...",名字可以自訂(我這裡改成com.study.launcher),選項選擇(全選上)
2。點擊"Preview>",進行預覽(途中彈出警告的話,不用管,繼續"Countinue"),這裡要去掉一些不必要的修改,否則就會改亂了
3。新出來的介面可能會有Android Package Rename 根節點,去掉它的子節點AndroidManiFest.xml前的勾選。然後OK,可能會彈出錯誤,直接Abort。
4。在gen/com.android.launcher上點擊右鍵,"Refactor" -> "Rename...",名字可以自訂(我這裡改成com.study.launcher),選項選擇(全選上)
5。同上,這裡要取消兩個根節點:Manifest.java 和 R.java 前的勾選。同樣OK下去。
***********************************************
做完這些就可以RUN運行了。
總結一下:主要是按照上面兩個地址的方法,但有幾個那兩篇文章裡沒說到的地方需要注意,否則就出錯了。
1。要匯入的包有三個,不是其中一篇說的一個;
2。在匯入包的時候,一定要選上System Library,兩篇文章都沒提到,但如果不選的話紅叉也會消失,可編譯時間會提示一個錯誤Conversion to Dalvik format failed with error 1。用網上的方法全都不行,最後勾上那勾解決了。
3。重新命名包名,其中一篇文章只說了重新命名一個包名,另一篇文章說了要命名兩個包名但沒說怎麼做,合并一下就好了。
經過上面的操作,eclipse可以成功編譯Launcher2並在模擬器裡跑了。