在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 路徑下)
然後可以開始工作了,以下主要引用了兩位前輩的部落格內容,地址分別為:(建議參考這兩篇文章看,其中一篇有圖片很不錯!)
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並在模擬器裡跑了。
_______________________
相關文章
- Eclipse配置反編譯Eclipse編譯
- eclipse中怎麼找到編譯後的class路徑Eclipse編譯
- Leptonica在VS2010中的編譯二,編譯 Leptonica1.68編譯
- 在 Windows 中編譯 Github 中的 GO 專案Windows編譯GithubGo
- 在eclipse中maven配置EclipseMaven
- Leptonica在VS2010中的編譯一,編譯它依賴於庫編譯
- 簡述交叉編譯常用的方法及在構建Docker映象中的應用編譯Docker
- A40i &T3 全原始碼編譯-ARM Linux核心在PC Linux的編譯方法原始碼編譯Linux
- android編譯方法Android編譯
- Github配合Eclipse和JetBrains系編譯器的使用(基礎篇)GithubEclipseAI編譯
- Eclipse——編譯已有工程出現“ No rule to make target”的解決方案Eclipse編譯
- hi3520d核心編譯編譯方法編譯
- Rust 在 cargo 中進行條件編譯RustCargo編譯
- Camera Sensor編譯方法編譯
- 在AndroidStudio下使用cmake編譯出靜態連結庫的方法Android編譯
- 在eclipse中配置tomcat伺服器EclipseTomcat伺服器
- 在Windows下編譯WebRTCWindows編譯Web
- Sublime Text3中 less 自動編譯成 css 的方法編譯CSS
- Eclipse配置反編譯外掛jadclipse(內容有部分糾正)Eclipse編譯
- [Web翻譯]JavaScript中的編譯與填充WebJavaScript編譯
- Eclipse的編輯功能非常強大,掌握了Eclipse快捷鍵Eclipse
- 編譯檢查dsp程式碼的方法編譯
- SpringBoot專案在Eclipse/MyEclipse中執行Spring BootEclipse
- 在CentOS 7上編譯QtumCentOS編譯QT
- 【譯】在非泛型類中建立泛型方法泛型
- Typora編譯器使用方法編譯
- python 在實際生產過程中需要編譯嘛?Python編譯
- AndroidKiller反編譯失敗的處理方法Android編譯
- Android加快編譯速度的另一種方法Android編譯
- 自己動手,在macOS High Sierra中編譯一個可debug的JDKMac編譯JDK
- Android開發:在Eclipse中配置Android環境AndroidEclipse
- 在使用make編譯時,修改原始檔的註釋內容,是否會重新編譯?編譯
- Eclipse中Git的使用EclipseGit
- 如何配置 jad,讓 Eclipse 可以自動顯示反編譯之後的 .class 原始碼Eclipse編譯原始碼
- 圖解Eclipse中找不到Server選項的解決方法圖解EclipseServer
- VLC在ubuntu環境下編譯編譯
- 在linux下編譯hibernate筆記Linux編譯筆記
- ollvm在VS2017下編譯LVM編譯
- 編譯器優化:方法內聯編譯優化