1. 程式人生 > >在eclipse中編譯Launcher2的方法

在eclipse中編譯Launcher2的方法

鑑於有朋友找資源不方便,我把這個專案需要的資源都上傳了,需要的可以從這個地址下載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 路徑下)

  然後可以開始工作了,以下主要引用了兩位前輩的部落格內容,地址分別為:(建議參考這兩篇文章看,其中一篇有圖片很不錯!)

  如果只看其中一篇文章的話,會不成功,兩篇都看了,仍會遇到問題。下面我寫的是實踐後成功的詳細方法與總結。

***********************************************************

——————————這一步是新增工程—————————————

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