標籤:android class java tar width int
Google的Android SDK包括了android.jar,這個Jar檔案包含了Android公有API類檔案。他們還提供了一個Eclipse外掛程式,這使得開始Android上的開發相當簡單。然而,你卻不能找到androidSrc.jar這個Jar檔案,所以當你想要在Eclipse中看一下Android SDK原始碼的時候,你會碰到的情況:
開源來解救我們了!
這個月早些時候,Google開放了Android的全部源碼,順便說一下,這相當大!不管怎樣,為了在Eclipse中瀏覽源碼,你需要訪問http://source.android.com/,並且按照他們的說明用Git把每一樣東西都拖下來。絕對值得拿出一個晚上做這件事,因為有完整的源碼使得理解SDK的工作機制變得更容易了。
(把源碼)附加到Eclipse上……兄弟,沒有想象中那麼快
既然你有了原始碼,你可以告訴Eclipse它的位置在哪。我嘗試過在android.jar上右擊然後選擇【屬性】,但是歡迎我的是下面的:
嗯哈……“當前的類路徑進入點屬於Android Library這個容器,它不允許使用者在它的進入點修改源附件。”這真是讓我陷入死迴圈了,因為我通常使用IDEA,所以我真的被這個難住了。因此,我深入研究了原始碼,想要找出一個解決方案。
測試源碼
當你下載了Android源碼,你就得到了一切,其中包括作業系統、Dalvik虛擬機器、Eclipse外掛程式、公有SDK等。
在com.android.ide.eclipse.adt.project.internal包中,我找到了一個叫AndroidClassspathContainerInitializer.java的類。它有如下的代碼:
IPath android_src = new Path(AdtPlugin.getOsAbsoluteAndroidSources());
好的,很好。接著,再進AdtPlugin.java看一下:
/** Returns the absolute android sources path in the sdk */ public static String getOsAbsoluteAndroidSources() { return getOsSdkFolder() + getOsRelativeAndroidSources(); }
/** Returns the android sources path relative to the sdk folder */ public static String getOsRelativeAndroidSources() { return AndroidConstants.FD_ANDROID_SOURCES; }
最後再進AndroidConstants.java看一下:
public static final String FD_ANDROID_SOURCES = "sources";
我成功啦!
方案一
基於以上的分析,你需要在你的Android SDK 安裝目錄中建立一個名為“sources”的目錄。
既然你有了這個目錄,你可以在你從Git下載下來的Android原始碼中找到這個恰當的源碼目錄。Google的測試指導建議這個目錄命名為“mydroid”,所以這邊我也用這個名稱。公有SDK源碼可以在這裡找到:mydroid/frameworks/base/core/java。在那個檔案夾下,你可以找到一個Android目錄,它應該被拷貝到你的Android SDK 安裝目錄下的源碼目錄。
你將會不得不在周遭做一些尋找來找到所有的源碼,它散置於mydroid分類樹的各個地方。最後,你應該可以得到這樣一個目錄結構:
SDK_PATH
| android.jar
+--docs/...
+--samples/...
+--sources
+--android
| ...accounts, annotation, app, bluetooth, etc...
+--com/android/etc...
+--dalvik/...
+--java/...
+--javax/...
我抓取了所有的目錄,但是我沒有做很好的記錄,所以我可能並且不注意地增加了太多。你可能僅僅需要公有SDK源碼,但是我認為學習一下類實現也是很棒的。
現在當我在Android SDK類中瀏覽時,我看到了源碼:
方案二
如果你不願意拷貝(或者連結)所有需要的源碼目錄到你的SDK目錄,你也可以建立一個Eclipse使用者庫。首先,我試圖建立我自己的包含android.jar的使用者庫,但是Eclipse抱怨說那會成為一個重複的Jar檔案。所以,我挑選了任意一個Jar檔案作為我的使用者庫,然後開始附加所有的Android來源目錄到那個庫檔案。
我的使用者庫似乎可以起作用,但是我更喜歡複製來源目錄的方式,這樣無需在每次建立工程的時候記得增加使用者庫。
原文: http://www.linuxidc.com/Linux/2011-09/43200.htm