久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

android支持第三方j(luò)ar包,,以及Eclipse如何導(dǎo)入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 導(dǎo)出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應(yīng)用與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里面自帶的例子里面找。在工程上點擊鼠標(biāo)右鍵,,在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 指定為庫文件的存放路徑,,應(yīng)該是:
/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 文件,。

以上兩個文件是應(yīng)用程序在運行時需要用到的,。
調(diào)試應(yīng)用前,需要將兩個文件拷貝到設(shè)備的相應(yīng)目錄上去:
.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導(dǎo)出成了一個jar文件加載進來了,,所以編譯器沒有提示報錯信息。

(2)編輯AndroidManifest.xml文件

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

 
(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 應(yīng)該是一致的,。
其中的 LOCAL_PACKAGE_NAME 表示應(yīng)用最后生成的名稱,。

(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)系方式,、誘導(dǎo)購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多