在eclipse中編譯Launcher2的方法
Android自帶的Home應用程式Launcher2是比較重要也比較複雜的程式,開機後用戶看到的第一個介面就是它。這裡詳細介紹將android原始碼中的Launcher2工程匯入Eclipse工程的方法。可以為學習與修改Launcher2工程打好基礎。
感謝前輩在網上分享的資料,使我知道怎麼著手。不過這些資料有不完整的問題,導致我昨天跟著做時遇到一些問題從而卡住至今天才解決。
下面是我的開發環境:
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 路徑下)
然後可以開始工作了,以下主要引用了兩位前輩的部落格內容,地址分別為:(建議參考這兩篇文章看,其中一篇有圖片很不錯!)
如果只看其中一篇文章的話,會不成功,兩篇都看了,仍會遇到問題。下面我寫的是實踐後成功的詳細方法與總結。
***********************************************************
——————————這一步是新增工程—————————————
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下去。
—————————PS by Antony—————————————
PS:不要修改gen目錄,因為這是編譯自動生成的。正確方法如下:
- 執行一次Project->Clean,
- 右擊工程,選擇Android Tools-->Rename Application Package
- 輸入合適的名稱,如com.gvs.launcher
- 打完收工
***********************************************
做完這些就可以RUN運行了。
總結一下:主要是按照上面兩個地址的方法,但有幾個那兩篇文章裡沒說到的地方需要注意,否則就出錯了。
1。要匯入的包有三個,不是其中一篇說的一個;
2。在匯入包的時候,一定要選上System Library,兩篇文章都沒提到,但如果不選的話紅叉也會消失,可編譯時會提示一個錯誤Conversion to Dalvik format failed with error 1。用網上的方法全都不行,最後勾上那勾解決了。
3。重新命名包名,其中一篇文章只說了重新命名一個包名,另一篇文章說了要命名兩個包名但沒說怎麼做,合併一下就好了。
經過上面的操作,eclipse可以成功編譯Launcher2並在模擬器裡跑了。
http://blog.csdn.net/dclchj/article/details/7076639