国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

[FAQ13697]L 版本如何將第三方so庫打包到apk

2019-11-09 18:53:54
字體:
供稿:網(wǎng)友
[DESCRipTION] 1、如何判斷第三方庫文件是32 bit/64 bit?  2、 如何將沒有源碼的第三方庫打包到apk ?  3、對于沒有root權(quán)限的user 版本,如何確保第三方so庫可以打包到apk 里面, 采用adb 命令進行install ? [SOLUTION]  1、如何判斷第三方庫文件是32 bit/64 bit?  使用linux 命令: file  xxx.so 可以看到拿到的xxx.so是哪種格式

 2、 如何將沒有源碼的第三方庫打包到apk ?

  請把此so 放在apk 目錄下,也可以存放在vendor/meidatek/libs/$PRoject/ $folder/xxx.so

   采用prebuilt 的方式,在當前so 所在目錄下寫 Android.mk ,內(nèi)容類似如下:

   LOCAL_PATH := $(call my-dir)

   include $(CLEAR_VARS)

   LOCAL_MODULE := 此so 庫名(不加so后綴)

   LOCAL_SRC_FILES_32 := xxx.so (表示是32 bit 的so)

   LOCAL_SRC_FILES_64 := xxx.so (表示是64 bit的so)

   LOCAL_MULTILIB := 32/64/BOTH(只編譯32bit/64bit/both)

   LOCAL_MODULE_CLASS := SHARED_LIBRARIES

   LOCAL_MODULE_SUFFIX := .so

include $(BUILD_PREBUILT)

   然后此so 就可以被直接在apk 的Android.mk 使用,例如:

   在alps/packages/apps/Tester 添加一個apk, Android.mk寫法

   LOCAL_PATH := $(call my-dir)

   include $(CLEAR_VARS)

   LOCAL_MODULE_TAGS := tests

   LOCAL_SRC_FILES := $(call all-java-files-under, src)

  #需要引用的靜態(tài)庫

   LOCAL_STATIC_JAVA_LIBRARIES := /

                                                                 jxl /

                                                                 AChartEngine_fat

                                          

 

    LOCAL_PACKAGE_NAME :=Tester

     LOCAL_CERTIFICATE := platform

     LOCAL_PROGUARD_FLAG_FILES := proguard.flags

     LOCAL_DEX_PREOPT := false

     LOCAL_PROGUARD_ENABLED := disabled

    # 對前面prebuilt 的動態(tài)庫的引用

     LOCAL_JNI_SHARED_LIBRARIES +=xxx

    # 此apk 限制為32 bit

      LOCAL_MULTILIB := 32

     include $(BUILD_PACKAGE)

##################################################

    # 此apk 引用的靜態(tài)庫(位置:alps/packages/apps/Tester/libs/jxl.jar 與AChartEngine_fat.jar),

 對靜態(tài)庫采用prebuilt 的編譯方式

     include $(CLEAR_VARS)

     LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES :=jxl: libs/jxl.jar /

                                       AChartEngine_fat:  libs/AChartEngine_fat.jar /

     LOCAL_MODULE_TAGS := optional

     include $(BUILD_MULTI_PREBUILT)

   # Use the following include to make our test apk.

  include $(call all-makefiles-under,$(LOCAL_PATH))

 3、對于沒有root權(quán)限的user 版本,如何確保第三方so庫可以打包到apk 里面, 采用adb 命令進行install ?

      請在apk 對應的Android.mk 將

      LOCAL_MODULE_TAGS := tests ,

      此apk 默認會被編譯到out/target/product/$project/data/app/tester/tester.apk 

      但不會被安裝到system.img,

      這種適應于采用adb 命令install 此apk 的方式,會將需要的庫整體打包到apk,  類似如下apk結(jié)構(gòu):

       引用的三方so 庫打包在apk 的 lib 中

     

      LOCAL_MODULE_TAGS := optional /eng 此apk可以被打包到systemimage,

      而引用的三方so庫,實際存放在system/lib 或lib64中,

      apk結(jié)構(gòu)類似如下:lib中存放三方so 庫的鏈接,實際的so 存儲在system/lib 下

      

     可以采用Flashtool download,此apk 可以正常執(zhí)行

      對eng 版本和有root 權(quán)限的user 版本,install apk 后,需要把so 庫也push 進去,否則apk 無法運行!!!


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 文登市| 龙胜| 梧州市| 海阳市| 永福县| 玛纳斯县| 平潭县| 元朗区| 敖汉旗| 罗江县| 竹北市| 邳州市| 睢宁县| 黔南| 西乌| 墨竹工卡县| 正定县| 万载县| 岢岚县| 蒙山县| 和静县| 延津县| 溆浦县| 定兴县| 白玉县| 扎囊县| 富平县| 外汇| 新巴尔虎左旗| 张北县| 承德县| 甘孜| 彰化县| 舟曲县| 德昌县| 大庆市| 渝中区| 巴青县| 岢岚县| 无极县| 若羌县|