我們寫程序的時候往往需要把自己的程序打包成jar
包,給第三方調用。Eclipse讓我們非常方便的可以導出jar
包。但是當程序里需要用到res里的資源時,往往就會出現問題。因為統自動生成的
R
類如果被打到
jar
包中后,就失去了索引資源的作用。導致封裝成
jar
包的
view
無法獲取對應資源。因為
R
類的屬性值是在應用編譯打包時由系統自動分配的。
R
類打包之后失效,實際是因為
R
類的內部類里面的屬性失效,因為打包之后這些屬性的值就固定了,但是實際項目中這些值是在編譯時有系統自動分配的,無法在編譯前固定。
本文就提供一種方法,解決這個問題。
首先建立一個AndroidJar項目。這個項目將來就是要打成jar
包的項目。
結構如下:
<ignore_js_op> ![]()
然后再建立一個AndroidJarTest項目。這個項目就是應用jar
包的項目。
AndroidJar寫好后,就是導出jar
包。相信大家都非常熟悉,步驟如下:
1.選中AndroidJar,右鍵選擇export
。
2.選擇
jar file
。只需導出源碼。如圖:
<ignore_js_op> ![]()
1.然后點擊finish。就可以導出jar包了。
AndroidJarTest項目對jar包的應用方法。
1.在AndroidJarTest項目下建立一個libs文件夾,再把剛才導出的jar包放到里面。再把jar包加到java build path的路徑里。
<ignore_js_op> ![]()
2.因為剛才只是把AndroidJar的源碼打成了jar包。但是資源並沒有打包。所以現在要把AndroidJar項目里的資源。拷貝到AndroidJarTest的項目下。具體就是res下的文件。因為太簡單,這里就不演示怎么拷了。
2.最后要在AndroidJarTest的AndroidManifest.xml里注冊AndroidJar里的activity,service,receiver。很多廣告插件都是這么做的。相信大家都非常熟悉。
[Java]
純文本查看 復制代碼
在AndroidJarTest里就只要一個其他的activity。它負責跳轉到AndroidJar里。AndroidJar里就三個按鈕分別是啟動一個服務,每隔10秒就發出一個廣播,然后廣播接收到后就彈出一個toast,“大家好,我是蒼老師!”和一個停止服務。最下面一個就是跳到一個有蒼老師的界面。
<ignore_js_op> ![]() ![]() ![]()
程序相當簡單。其中根據資源創建view,和根據資源找到相應字符的核心類為ResManager。大家可以下載源碼,研究研究。 <ignore_js_op> ![]() |
<ignore_js_op>