本文來自http://blog.csdn.net/chenshaoyang0011 轉載請申明文章出處!
由於需要研究Android 4.0Launcher2的源碼,必要的時候我們需要對代碼進行調試,所以我們需要能夠運行自己修改後的
Launcher。由於Launcher是Android內建的應用,因此,可以通過搭建Android源碼開發環境來進行調試和開發,這些工作只能在
Linux和MacOS上進行,對於大多數習慣了windows和eclipse開發環境的程式員來說,能夠在eclipse下進行開發和調試是最好不過的
了。這裡將自己windows下用eclipse搭建Launcher開發環境的步驟分享給大家。我所使用的eclipse為3.6.2,ADT版本
20.0.2,在搭建的過程中可能與你的過程稍有出入,但基本流程是一樣的。
1、建立工程,選擇File--->New----->Project...---->Android Project from Existing Code---->Browse---->找到源碼所在的路徑-----
>Finish,工程就建立完成了。工程建立之後需要更改SDK的版本,右鍵工程,選擇Properties---->Android--->Android4.0.3(API版本
高於15都可以)--->OK。但這時,工程還是不能啟動並執行,主要的原因是源碼中調用了部分Android 未公開的API。這時就需要編譯
Android源碼,因為要用到一些編譯產生的class.jar檔案,這樣才能使用這部分API,如果不會源碼的編譯可以google一下,資料
很多的~~~~為方便網友,提供了launcher源碼和jar檔案的下載 點擊開啟連結
2、添加需要使用的jar檔案。源碼編譯完成之後,會在根目錄中產生out檔案夾。而我們需要的檔案就位於
out/target/common/obj/JAVA_LIBRARIES目錄中。需要添加的jar檔案包括:
(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 -->Configure Build Path -->Libraries -->Add Library --> User Library -->User Libraries
-->New...-->輸入名稱(如,Debug_Launcher)-->OK
-->Add JAR...--->分別添加上面需要的幾個JAR檔案。匯入完成之
後,在Build Path中選擇Order and Export,將Debug_Launcher排到Android4.0.3(我選的SDK版本)前面
3、接下來,先開啟AndroidManifest.xml如果沒有以下代碼,則添加:
[java]
view plaincopyprint?
- <uses-sdk
- android:minSdkVersion="13"
- android:targetSdkVersion="15" />
<uses-sdk android:minSdkVersion="13" android:targetSdkVersion="15" />
minSdkVersion可以填大於13的數值,同樣,targetSdkVersion至少是15。此時如果還有錯誤,一般是由於SDK版本造成的,更換為
高版本的SDK可以解決問題。
4、添加android-support-v13.jar
這個檔案路徑 (你的SDK目錄)\extras\android\compatibility\v13,如果沒有,通過SDK Manager下載即可。找到檔案之後,
將其複製到工程根目錄下的lib檔案夾中(沒有就自己建一個),然後選擇Build
Path --->Configure Build Path --> Add
JARs...--->選擇android-support-v13.jar
5、此時如果還有錯誤的話,一般是由於SDK版本造成的,改為更高的版本,就可以了。這樣下來,工程中應該就沒有錯誤了。但
是這個時候還不能在模擬器上運行,需要修改包名。首先在包名上右鍵選擇Refactor
-->Rename-->輸入修改後的包名。接著右
鍵工程,選擇Android Tools --> Rename Android Package輸入修改後的包名。查看AndroidManifest.xml中activity、
receiver、provider的路徑是否正確,否則替換為正確的路徑。全部替換了之後,工程中的紅叉叉就沒有了。如果還有錯誤,如果
布局檔案有錯誤,多數為命名空間的錯誤,替換命名空間即可。如果是java檔案中的錯誤,如果是SDK版本問題,則替換為高版本
即可,如果是匯入R檔案的問題,刪除匯入語句重新匯入。這樣修改下來應該就不會有錯誤了。
6、(可選)接下來修改LauncherProvider中DATABASE_NAME和AUTHORITY分別為
[java]
view plaincopyprint?
- //修改為自己的名字
- DATABASE_NAME = "launcherdebug.db"
//修改為自己的名字DATABASE_NAME = "launcherdebug.db"
[java]
view plaincopyprint?
- AUTHORITY = "com.android.launcherdebug.settings"
AUTHORITY = "com.android.launcherdebug.settings"
接著修改provider,將修改以下代碼:
[java]
view plaincopyprint?
- <provider
- ......
- android:authorities="com.android.launcher.settings"
- ...... />
<provider ...... android:authorities="com.android.launcher.settings" ...... />
改為:
[java]
view plaincopyprint?
- <provider
- ......//需要與LauncherProvider.AUTHORITY一致
- android:authorities="com.csy.testlauncher.settings"
- ....../>
<provider ......//需要與LauncherProvider.AUTHORITY一致 android:authorities="com.csy.testlauncher.settings" ....../>
接著修改AndroidManifest.xml中的自訂的Permission,修改包名首碼即可,如
[java]
view plaincopyprint?
- <permission
- android:name="com.android.launcher.INSTALL_SHORTCUT"
- ....../>
<permission android:name="com.android.launcher.INSTALL_SHORTCUT" ....../>
改為:
[java]
view plaincopyprint?
- <permission
- android:name="com.android.launcherdebug.INSTALL_SHORTCUT"
- ...... />
<permission android:name="com.android.launcherdebug.INSTALL_SHORTCUT" ...... />
至此,整個工程就可以順利的編譯運行了。