android支持第三方jar包,以及Eclipse如何导入jar包
2019獨角獸企業重金招聘Python工程師標準>>>
通常我們進行android開發的時候運用到了兩種格式的jar包文件。
1.在eclipse環境下,引入第三方jar包,指的是通過eclipse工具export出來的包含.class文件的jar包。
2.在源碼環境下,通過配置Android.mk文件生成的jar包,也是我們在源碼下開發依賴的jar包文件是包含class.dex的jar包文件。class.dex 是通過Android系統中可以在Dalvik虛擬機上直接運行的文件格式。
兩個jar包之間的轉換:1).class=>class.dex?dx工具的作用是將.class轉換為dex文件
? ? ? ? ? ? ? ? ? ? ? ? ? ?2)class.dex=>.class 可以使用反編譯工具
具體如何通過Eclipse 導出jar包以及在源碼下生成jar包就不詳述了,網上資料很多
第三方jar包依賴的緣由:
? ? 在平常過程中,假如項目需要支持引用第三方jar包,假如是通過Eclipse進行開發,直接是把含有.class文件的jar包直接加載到項目中,最后編譯出來的apk里面就包含了整個jar包文件(class.dex),假如是通過源碼進行編譯,在Android.mk里面直接添加對system/framework下面jar包文件的依賴,最后jar包文件也和apk編譯到了一起。
? ? 由于此次開發項目需要做到,app應用與jar包分離,也就是jar包文件需要獨立出來,不能與apk編到一起,通俗來講就是apk的大小將大大減小。
一、在Eclipse下新建一個Java Project(作為jar包文件)
在Person類里面實現一些接口,屬性,如果Person類調用了android sdk方法,請看第二步,如果沒有直接跳過第二步驟,進行第三步驟。(作者在jar包中沒有調用android SDK中的方法)
二、在TestToJar工程里面添加對Android jar包的引用(即SDK接口)
????android.jar包到SDK里面自帶的例子里面找。在工程上點擊鼠標右鍵,在properties里面Java?Build?Path?->?Libraries-》Add?Jars選擇android.jar.
三、為工程添加注冊文件<permission?xml?file?name>.xml
????該文件是用來向系統注冊庫用的,名稱可以自己定,在下面假設該文件為?mylibxml.xml。
在文件中加入以下內容:
其中的?library?用于將其下的?name?和?file?兩個屬性關聯起來,name?的值后邊會用到。
這里的?name?指定為工程的包名。
這里的?file?指定為庫文件的存放路徑,應該是:
/system/framework/<jar?file?name>.jar
四、為工程添加makefile文件
在庫文件工程的根目錄下創建以下文件:
Android.mk
該文件是用來編譯工程的,名稱固定。
在文件中加入以下內容:
其中,MAKE_JAR?部分的?LOCAL_MODULE?部分指定為想要生成的jar包文件的名字,
需要與?.xml?文件中的?library?下的?file?部分一致。
其中,MAKE_XML?部分的?LOCAL_MODULE?部分指定為用于注冊庫的?.xml?文件。
五、把java project所有代碼拷入android源碼的編譯環境
一般拷入到system/app/下面
然后通過mm編譯,在android源碼編譯環境中將會生成一個?.jar?文件和一個?.xml?文件。
以上兩個文件是應用程序在運行時需要用到的。
調試應用前,需要將兩個文件拷貝到設備的相應目錄上去:
.jar?文件:/system/framework/
.xml?文件:/system/etc/permissions/
拷貝到設備使用以下命令:
$?sudo?adb?push?<.jar?or?.xml?file?path>?<path?in?device>
拷貝完以后需要重啟設備。
六、前期準備工作基本就緒,開始寫測試case。(驗證apk是否能在設備中找到jar包文件)
(1)使用Eclipse工具新建一個Android 測試case
注:正常情況下,編譯器會給我們報錯,我這里為了看著舒服,就通過Eclipse把上面的java project導出成了一個jar文件加載進來了,所以編譯器沒有提示報錯信息。
(2)編輯AndroidManifest.xml文件
編輯工程根目錄下的?AndroidManifest.xml?文件。
在?application?下添加以下內容:
<uses-library
android:name="com.mytest.lib">
</uses-library>
其中的?:name?表示所引用的庫文件的包名。
其與庫工程的?.xml?文件中的?name?應該是一致的。
這樣在應用運行時就能夠找到相應的?.jar?文件了。
如果引用了多個庫,需要添加多個?uses-library?標簽。
(3) 為工程添加 makefile 文件:
在庫文件工程的根目錄下創建以下文件:
Android.mk
該文件是用來編譯工程的,名稱固定。
在文件中加入以下內容:
其中的?LOCAL_JAVA_LIBRARIES?表示程序會用到的庫文件。
其名成與庫工程下的?.mk?文件中?MAKE_JAR?部分下的?LOCAL_MODULE?應該是一致的。
其中的?LOCAL_PACKAGE_NAME?表示應用最后生成的名稱。
(4)把Android 測試case拷入android源碼編譯環境編譯
把測試case同樣拷入system/app下面
然后通過mm編譯生成了myapp.apk
然后通過adb install 命令把apk安裝到設備
最后按照常規方式用eclipse編譯生成的apk與通過此方法編譯生成的apk,發現兩個大小差異非常大
轉載于:https://my.oschina.net/zhoulc/blog/112573
總結
以上是生活随笔為你收集整理的android支持第三方jar包,以及Eclipse如何导入jar包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用JSTL报错:items does
- 下一篇: 一个好用的ODBC数据库类CMYODBC