Android 4.0 Launcher2原始碼分析——匯入eclipse進行除錯

lostinai發表於2013-05-17
本文來自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如果沒有以下程式碼,則新增:

  1. <uses-sdk  
  2.         android:minSdkVersion="13"  
  3.         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分別為

  1. //修改為自己的名字  
  2. DATABASE_NAME = "launcherdebug.db"  
  1. AUTHORITY = "com.android.launcherdebug.settings"  

接著修改provider,將修改以下程式碼:

  1. <provider  
  2.             ......  
  3.             android:authorities="com.android.launcher.settings"  
  4.             ...... />  
改為:
  1. <provider  
  2.             ......//需要與LauncherProvider.AUTHORITY一致  
  3.             android:authorities="com.csy.testlauncher.settings"  
  4.             ....../>  

接著修改AndroidManifest.xml中的自定義的Permission,修改包名字首即可,如

  1. <permission  
  2.         android:name="com.android.launcher.INSTALL_SHORTCUT"  
  3.         ....../>  
改為:
  1. <permission  
  2.         android:name="com.android.launcherdebug.INSTALL_SHORTCUT"  
  3.         ...... />  
至此,整個工程就可以順利的編譯執行了。

相關文章