把自己的程序打成jar包,讓別人調用


 我們寫程序的時候往往需要把自己的程序打包成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里的activityservicereceiver。很多廣告插件都是這么做的。相信大家都非常熟悉。
[Java]  純文本查看 復制代碼
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<application
android:icon= "@drawable/ic_launcher"
android:label= "@string/app_name" >
<activity
android:label= "@string/app_name"
android:name= ".AndroidJarTestActivity" >
<intent-filter >
<action android:name= "android.intent.action.MAIN" />
 
<category android:name= "android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
 
<!-- AndroidJar 里的activity,service和receiver-->
<activity
android:name= "com.song.test.FirstActivity"
android:screenOrientation= "portrait"
android:theme= "@android:style/Theme.NoTitleBar" >
</activity>
 
<activity
android:name= "com.song.test.AndroidJarActivity"
android:screenOrientation= "portrait"
android:theme= "@android:style/Theme.NoTitleBar" >
</activity>
 
<service android:name= "com.song.test.service.HelloService" >
</service>
 
<receiver android:name= "com.song.test.receiver.ToastReceiver" >
<intent-filter >
<action android:name= "MAKE_TOAST_ACTION" />
</intent-filter>
</receiver>
<!-- AndroidJar 里的activity,service和receiver-->
</application>

    在AndroidJarTest里就只要一個其他的activity。它負責跳轉到AndroidJar里。AndroidJar里就三個按鈕分別是啟動一個服務,每隔10秒就發出一個廣播,然后廣播接收到后就彈出一個toast,“大家好,我是蒼老師!”和一個停止服務。最下面一個就是跳到一個有蒼老師的界面。
<ignore_js_op><ignore_js_op><ignore_js_op>
程序相當簡單。其中根據資源創建view,和根據資源找到相應字符的核心類為ResManager。大家可以下載源碼,研究研究。


<ignore_js_op> 該貼已經同步到 feathersong的微博
<ignore_js_op>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM