android7.1编译第三方apk到系统中的android.mk学习 基于packages/apps/Browser/Android.mk文件内容,如下: LOCAL_PATH := $(my-d

android7.1编译第三方apk到系统中的android.mk学习

 

基于packages/apps/Browser/Android.mk文件内容,如下:

LOCAL_PATH := $(my-dir)

 

include $(CLEAR_VARS)

 

LOCAL_MODULE := SWEBrowser

LOCAL_MODULE_TAGS := optional

LOCAL_MODULE_CLASS := APPS

LOCAL_MODULE_SUFFIX :=$(COMMON_ANDROID_PACKAGE_SUFFIX)

 

LOCAL_SRC_FILES := Browser.apk

 

LOCAL_BUILT_MODULE_STEM := package.apk

LOCAL_CERTIFICATE := PRESIGNED

LOCAL_OVERRIDES_PACKAGES := BrowserBrowser2

LOCAL_MULTILIB := 32

 

LOCAL_PREBUILT_JNI_LIBS:= \

lib/libc++_shared.so \

lib/libicui18n.cr.so \

lib/libicuuc.cr.so \

lib/libswe.so \

lib/libswecore.so \

lib/libswev8.so \

lib/libswewebrefiner.so

 

include $(BUILD_PREBUILT)

 

(1)  LOCAL_PATH := $(my-dir)

变量制定了该.mk的路径,$(callmy-dir)调用NDK内部的函数获得当前.mk文件的路径。

 

(2)  include $(CLEAR_VARS)

include $(CLEAR_VARS)清空了除了LOCAL_PATH之外的所有LOCAL_xxx变量的值省略号中间就是对于模块参数的设置,主要包括:模块名字、模块源文件、模块类型、编译好的模块存放位置、以及编译的平台等。

include $(BUILD_xxx_xxx)执行NDK的默认脚本,它会收集include $(CLEAR_VARS)脚本后所有定义的LOCAL_xxx变量,然后根据它们来生成模块。

 

(3)  LOCAL_MODULE

LOCAL_MODULE := SWEBrowser,必须定义,模块名称,用来描述每一个模块而且名称必须是唯一的。

 

(4)  LOCAL_MODULE_TAGS

LOCAL_MODULE_TAGS := optional,当前模块所包含的标签,一个模块可包含多个标签,可以是debug、eng、tests或optional

 

(5)  LOCAL_MODULE_CLASS

LOCAL_MODULE_CLASS := APPS,标识所编译模块最后放置的位置,ETC表示放置在/system/etc.目录下,APPS表示放置在/system/app目录下,SHARED_LIBRARIES表示放置在/system/lib目录下。

 

(6)  LOCAL_MODULE_SUFFIX

LOCAL_MODULE_SUFFIX :=$(COMMON_ANDROID_PACKAGE_SUFFIX),模块前缀,在\build\core\config.mk定义COMMON_ANDROID_PACKAGE_SUFFIX :=.apk

 

(7)  LOCAL_SRC_FILES

LOCAL_SRC_FILES := Browser.apk,当前模块包含的所有源代码文件。

 

(8)  LOCAL_BUILT_MODULE_STEM

LOCAL_BUILT_MODULE_STEM := package.apk,表示编译链接后的目标文件的文件名,带后缀,如果本地模块指定了LOCAL_MODULE_STEM的话,它的值就 是$(LOCAL_MODULE_STEM)$(LOCAL_MODULE_SUFFIX),如果没有指定了的话就是$(LOCAL_MODULE)$(LOCAL_MODULE_SUFFIX),这里没有指定,所以是SWEBrowser.apk。

 

(9)  LOCAL_CERTIFICATE := PRESIGNED

表示APK签名使用原来签名,即第三方签名,若要使用系统签名,则可以改为LOCAL_CERTIFICATE := platform系统前面,可以使apk获得系统权限。

(10) LOCAL_OVERRIDES_PACKAGES

LOCAL_OVERRIDES_PACKAGES := BrowserBrowser2,覆盖其他所有同名的应用,被替换的APK是不应该被打包到系统镜像中去的。

 

(11) LOCAL_MULTILIB

LOCAL_MULTILIB := 32,指定编译目标为 32位 或 64位。

 

“both”:同时构建 32 位和 64 位

“32”:只构建 32 位

“64”:只构建 64 位

“first”:只给第一个架构构建( 在 32 位中优先 32 位,在 64 位中优先 64 位)

“”:默认参数;构建系统构建哪个架构取决于模块类以及其他LOCAL_ 参数,比如 LOCAL_MODULE_TARGET_ARCH,LOCAL_32_BIT_ONLY 等等。

在多库构建中,像 ifeq $(TARGET_ARCH) 这种附件条件将不再起作用

 

 

(12) LOCAL_PREBUILT_JNI_LIBS

LOCAL_PREBUILT_JNI_LIBS:= \

lib/libc++_shared.so \

lib/libicui18n.cr.so \

lib/libicuuc.cr.so \

lib/libswe.so \

lib/libswecore.so \

lib/libswev8.so \

lib/libswewebrefiner.so

提取第三方应用的lib方法,先解压当前apk内的lib文件夹到当前apk编译目录

 

(13) include $(BUILD_PREBUILT)

该模块已经预先编译。

 

 

此应用用userdebug版本整体编译可以包含到系统中,但是用user版本就没有,没有生成out\target\product\msm8937_64\system\app\SWEBrowser,后来在device\qcom\msm8937_64\msm8937_64.mk增加PRODUCT_PACKAGES+= SWEBrowser就有了,这个表示强制性加的。

 

 

参考链接:

Android——编译安装Module的控制因素

http://blog.csdn.net/jscese/article/details/39209341

 

预置第三方apk到MTK项目相关问题总结

http://blog.csdn.net/a462533587/article/details/46380795

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

loongembedded

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值