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

首頁 > 學院 > 開發設計 > 正文

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

2019-11-09 18:02:22
字體:
來源:轉載
供稿:網友
[DESCRipTION] 1、如何判斷第三方庫文件是32 bit/64 bit?  2、 如何將沒有源碼的第三方庫打包到apk ?  3、對于沒有root權限的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 ,內容類似如下:

   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)

  #需要引用的靜態庫

   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 的動態庫的引用

     LOCAL_JNI_SHARED_LIBRARIES +=xxx

    # 此apk 限制為32 bit

      LOCAL_MULTILIB := 32

     include $(BUILD_PACKAGE)

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

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

 對靜態庫采用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權限的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結構:

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

     

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

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

      apk結構類似如下:lib中存放三方so 庫的鏈接,實際的so 存儲在system/lib 下

      

     可以采用Flashtool download,此apk 可以正常執行

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 体育| 图片| 广西| 卢龙县| 马尔康县| 盐山县| 古蔺县| 信宜市| 新平| 应城市| 桓仁| 克山县| 米易县| 高平市| 大理市| 论坛| 金湖县| 威海市| 克山县| 陕西省| 合肥市| 仁布县| 咸宁市| 连江县| 陵水| 安福县| 江孜县| 孙吴县| 新营市| 宁波市| 滁州市| 普洱| 汉源县| 施甸县| 彝良县| 云和县| 古田县| 府谷县| 武威市| 浦东新区| 怀集县|