第三方apk集成文档

25 阅读1分钟

1.第三方apk固定位于android\vendor\chinatsp\extern\目录下

2.新添加apk时需建立新文件夹,文件夹名称可以和apk同名,文件夹下包含一个apk和一个Android.mk文件。

最基本的mk:

LOCAL_PATH := $(call my-dir)

 

#integrate the apk

include $(CLEAR_VARS)

LOCAL_MODULE        := (模块名)

LOCAL_MODULE_TAGS   := optional

LOCAL_MODULE_CLASS  := APPS

LOCAL_CERTIFICATE   := (签名,platform表示系统签名,PRESIGNED表示apk自己的签名)

LOCAL_MODULE_SUFFIX := .apk

LOCAL_SRC_FILES     := ./(apk名)

LOCAL_MODULE_PATH   := (编译到out目录下的哪个路径,(TARGETOUTSYSTEMAPPS)代表system/app(TARGET_OUT_SYSTEM_APPS)代表system/app,(TARGET_OUT_VENDOR)/app代表vendor/app)

include $(BUILD_PREBUILT)

图片.png

编译通过后,运行时如果提示lib库.so文件找不着。需要单独将lib提出来

先把apk复制一份副本,并将.apk改成.zip

图片.png

打开zip文件,找到lib文件夹

图片.png

并解压到当前文件夹

图片.png

修改mk文件,新增如下代码

图片.png

LOCAL_PATH := $(call my-dir)

 

define get-all-libraries-module-name-in-subdirs

$(sort $(shell cd $(LOCAL_PATH) ; find -L $(1) -name "*.so"))

endef

 

ALL_LIBRARIES_MODULE_NAME := $(call get-all-libraries-module-name-in-subdirs, lib/(根据解压出来的lib文件夹下的目录填写))

$(warning ALL_LIBRARIES_MODULE_NAME:---  $(ALL_LIBRARIES_MODULE_NAME) )

 

#integrate the apk

include $(CLEAR_VARS)

LOCAL_MODULE        :=

LOCAL_MODULE_TAGS   := optional

LOCAL_MODULE_CLASS  := APPS

LOCAL_CERTIFICATE   :=

LOCAL_MODULE_SUFFIX := .apk

LOCAL_SRC_FILES     :=

LOCAL_MODULE_PATH   :=

LOCAL_PREBUILT_JNI_LIBS := $(ALL_LIBRARIES_MODULE_NAME)

LOCAL_MULTILIB := (根据解压出来的lib文件夹下的目录填写64或32)

include $(BUILD_PREBUILT)

最后需添加模块名至全编译mk文件,模块名唯一

全编译mk文件目录:android\device\qcom\msmnile_gvmq\msmnile_gvmq.mk

# 模块名
PRODUCT_PACKAGES += 模块名

例如:

图片.png

3.覆盖原来的apk只需替换apk文件,有lib文件夹时,替换lib文件夹