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 無法運行!!!
新聞熱點
疑難解答