一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

android支持第三方j(luò)ar包,以及Eclipse如何導入jar包

 戴維圖書館 2020-01-06

文章來源:https://my.oschina.net/zhoulc/blog/112573

通常我們進行android開發(fā)的時候運用到了兩種格式的jar包文件。

1.在eclipse環(huán)境下,引入第三方j(luò)ar包,指的是通過eclipse工具export出來的包含.class文件的jar包。

2.在源碼環(huán)境下,通過配置Android.mk文件生成的jar包,也是我們在源碼下開發(fā)依賴的jar包文件是包含class.dex的jar包文件。class.dex 是通過Android系統(tǒng)中可以在Dalvik虛擬機上直接運行的文件格式。

兩個jar包之間的轉(zhuǎn)換:1).class=>class.dex dx工具的作用是將.class轉(zhuǎn)換為dex文件

                           2)class.dex=>.class 可以使用反編譯工具

具體如何通過Eclipse 導出jar包以及在源碼下生成jar包就不詳述了,網(wǎng)上資料很多

第三方j(luò)ar包依賴的緣由:

    在平常過程中,假如項目需要支持引用第三方j(luò)ar包,假如是通過Eclipse進行開發(fā),直接是把含有.class文件的jar包直接加載到項目中,最后編譯出來的apk里面就包含了整個jar包文件(class.dex),假如是通過源碼進行編譯,在Android.mk里面直接添加對system/framework下面jar包文件的依賴,最后jar包文件也和apk編譯到了一起。
    由于此次開發(fā)項目需要做到,app應用與jar包分離,也就是jar包文件需要獨立出來,不能與apk編到一起,通俗來講就是apk的大小將大大減小。

一、在Eclipse下新建一個Java Project(作為jar包文件)

在Person類里面實現(xiàn)一些接口,屬性,如果Person類調(diào)用了android sdk方法,請看第二步,如果沒有直接跳過第二步驟,進行第三步驟。(作者在jar包中沒有調(diào)用android SDK中的方法


二、在TestToJar工程里面添加對Android jar包的引用(即SDK接口)

    android.jar包到SDK里面自帶的例子里面找。在工程上點擊鼠標右鍵,在properties里面Java Build Path -> Libraries-Add Jars選擇android.jar.


三、為工程添加注冊文件<permission xml file name>.xml

    該文件是用來向系統(tǒng)注冊庫用的,名稱可以自己定,在下面假設(shè)該文件為 mylibxml.xml。
在文件中加入以下內(nèi)容:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <permissions>
  3. <library name="com.mytest.lib"
  4. file="/system/framework/mylib.jar"/>
  5. </permissions>

其中的 library 用于將其下的 name 和 file 兩個屬性關(guān)聯(lián)起來,name 的值后邊會用到。
這里的 name 指定為工程的包名。

這里的 file 指定為庫文件的存放路徑,應該是:
/system/framework/<jar file name>.jar

四、為工程添加makefile文件

在庫文件工程的根目錄下創(chuàng)建以下文件:
Android.mk
該文件是用來編譯工程的,名稱固定。
在文件中加入以下內(nèi)容:

  1. LOCAL_PATH:= $(call my-dir)
  2. #MAKE_JAR 編譯jar包過程到 /system/framework下面 APK需要的jar包include $(CLEAR_VARS)
  3. LOCAL_MODULE_TAGS := optional
  4. LOCAL_SRC_FILES := $(call all-subdir-java-files)
  5. LOCAL_MODULE := mylib
  6. include $(BUILD_JAVA_LIBRARY)
  7. #MAKE_XML 編譯XML過程到 /system/etc/permissions/下面include $(CLEAR_VARS)
  8. LOCAL_MODULE_TAGS := optional
  9. LOCAL_MODULE := mylibxml.xml
  10. LOCAL_MODULE_CLASS := ETC
  11. LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/permissions
  12. LOCAL_SRC_FILES := $(LOCAL_MODULE)
  13. include $(BUILD_PREBUILT)

其中,MAKE_JAR 部分的 LOCAL_MODULE 部分指定為想要生成的jar包文件的名字,
需要與 .xml 文件中的 library 下的 file 部分一致。
其中,MAKE_XML 部分的 LOCAL_MODULE 部分指定為用于注冊庫的 .xml 文件。

五、把java project所有代碼拷入android源碼的編譯環(huán)境

一般拷入到system/app/下面

然后通過mm編譯,在android源碼編譯環(huán)境中將會生成一個 .jar 文件和一個 .xml 文件。

以上兩個文件是應用程序在運行時需要用到的。
調(diào)試應用前,需要將兩個文件拷貝到設(shè)備的相應目錄上去:
.jar 文件:/system/framework/
.xml 文件:/system/etc/permissions/
拷貝到設(shè)備使用以下命令:
$ sudo adb push <.jar or .xml file path> <path in device>
拷貝完以后需要重啟設(shè)備。

六、前期準備工作基本就緒,開始寫測試case。(驗證apk是否能在設(shè)備中找到j(luò)ar包文件)

(1)使用Eclipse工具新建一個Android 測試case

注:正常情況下,編譯器會給我們報錯,我這里為了看著舒服,就通過Eclipse把上面的java project導出成了一個jar文件加載進來了,所以編譯器沒有提示報錯信息。

(2)編輯AndroidManifest.xml文件

編輯工程根目錄下的 AndroidManifest.xml 文件。
在 application 下添加以下內(nèi)容:
<uses-library
android:name="com.mytest.lib">
</uses-library>
其中的 :name 表示所引用的庫文件的包名。
其與庫工程的 .xml 文件中的 name 應該是一致的。
這樣在應用運行時就能夠找到相應的 .jar 文件了。
如果引用了多個庫,需要添加多個 uses-library 標簽。

 
(3) 為工程添加 makefile 文件: 

在庫文件工程的根目錄下創(chuàng)建以下文件:
Android.mk
該文件是用來編譯工程的,名稱固定。
在文件中加入以下內(nèi)容:

  1. LOCAL_PATH:= $(call my-dir)
  2. include $(CLEAR_VARS)
  3. LOCAL_SRC_FILES := $(call all-java-files-under, src)
  4. LOCAL_JAVA_LIBRARIES := mylib
  5. LOCAL_PACKAGE_NAME := myapp
  6. LOCAL_CERTIFICATE := platforminclude
  7. $(BUILD_PACKAGE)

其中的 LOCAL_JAVA_LIBRARIES 表示程序會用到的庫文件。
其名成與庫工程下的 .mk 文件中 MAKE_JAR 部分下的 LOCAL_MODULE 應該是一致的。
其中的 LOCAL_PACKAGE_NAME 表示應用最后生成的名稱。

(4)把Android 測試case拷入android源碼編譯環(huán)境編譯

把測試case同樣拷入system/app下面
然后通過mm編譯生成了myapp.apk
然后通過adb install 命令把apk安裝到設(shè)備
最后按照常規(guī)方式用eclipse編譯生成的apk與通過此方法編譯生成的apk,發(fā)現(xiàn)兩個大小差異非常大

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    九九热精品视频免费观看| 白白操白白在线免费观看| 91人妻人人精品人人爽| 亚洲精品一区三区三区| 一级片二级片欧美日韩| 少妇福利视频一区二区| 国产白丝粉嫩av在线免费观看| 国产av一区二区三区麻豆| 久草热视频这里只有精品| 国产日韩精品欧美综合区| 亚洲一区二区三区精选| 亚洲精品熟女国产多毛| 妻子的新妈妈中文字幕| 黄色三级日本在线观看| 美国女大兵激情豪放视频播放| 99香蕉精品视频国产版| 国产一区麻豆水好多高潮| 一区二区三区四区亚洲专区| 欧美精品一区久久精品| 我想看亚洲一级黄色录像| 国产成人精品资源在线观看| 在线观看免费无遮挡大尺度视频| 在线一区二区免费的视频| 一区二区三区日本高清| 日韩精品第一区二区三区| 午夜小视频成人免费看| 午夜视频成人在线免费| 熟女白浆精品一区二区| 日韩av欧美中文字幕| 日本中文在线不卡视频| 天堂网中文字幕在线观看| 亚洲欧美日韩在线中文字幕| 久久精品色妇熟妇丰满人妻91| 色婷婷国产精品视频一区二区保健| 亚洲成人久久精品国产| 午夜福利视频偷拍91| 国产乱淫av一区二区三区| 亚洲国产精品久久网午夜| 亚洲天堂有码中文字幕视频| 日韩欧美一区二区不卡视频| 日韩中文字幕有码午夜美女|