android 编译原生Settings.apk过程原理分析(1)

1.前言
Android 5.1系统有很多原生APP(音乐播放器,浏览器,设置等),熟悉其编译原理。可以利用原生app二次开发。
2.下面就以settings.apk为例,详细分析其编译过程。
进入终端,在RK3288/dlt-rk3288b/packages/apps/Settings$ 下执行mm命令,进行编译,生成settings.apk。
mm命令实际执行的是/Documents/RK3288/dlt-rk3288b/build/envsetup.sh中的function mm()函数。
执行 ONE_SHOT_MAKEFILE=$M $DRV make -C $T -f build/core/main.mk $MODULES $ARGS
以上变量的值为:
$M=packages/apps/Settings/Android.mk
$DRV=空
$T=/home/eric/Documents/RK3288/dlt-rk3288b
$MODULES=all_modules
$ARGS=空
实际执行的命令为:
ONE_SHOT_MAKEFILE=/home/eric/Documents/RK3288/dlt-rk3288b/packages/apps/Settings/Android.mk make -C /home/eric/Documents/RK3288/dlt-rk3288b -f /home/eric/Documents/RK3288/dlt-rk3288b/build/core/main.mk all_modules

以上命令中ONE_SHOT_MAKEFILE=/home/eric/Documents/RK3288/dlt-rk3288b/packages/apps/Settings/Android.mk
为传入main.mk的参数。
在RK3288/dlt-rk3288b/build/core/main.mk中include $(ONE_SHOT_MAKEFILE)命令把Settings文件夹下的Android.mk包含进来
编译的目标为all_modules,

my_register_name := $(LOCAL_MODULE)

all_modules: ( A L L M O D U L E S ) 中 (ALL_MODULES) 中 (ALLMODULES)(ALL_MODULES)为Settings。

all_modules<-ALL_MODULES<-base_rules.mk: ALL_MODULES += $(my_register_name)<-my_register_name<- my_register_name := $(LOCAL_MODULE)base_rules.mk<-LOCAL_MODULE := $(LOCAL_PACKAGE_NAME)[package_internal.mk]

$(my_register_name): $(LOCAL_BUILT_MODULE) $(LOCAL_INSTALLED_MODULE)

LOCAL_BUILT_MODULE<-$(LOCAL_BUILT_MODULE): ( R f i l e s t a m p ) L O C A L B U I L T M O D U L E < − (R_file_stamp) LOCAL_BUILT_MODULE<- (Rfilestamp)LOCALBUILTMODULE<(LOCAL_BUILT_MODULE): $(R_file_stamp)

LOCAL_BUILT_MODULE<-$(LOCAL_BUILT_MODULE): PRIVATE_DEX_FILE := ( b u i l t d e x ) L O C A L B U I L T M O D U L E < − (built_dex) LOCAL_BUILT_MODULE<- (builtdex)LOCALBUILTMODULE<(LOCAL_BUILT_MODULE): $(built_dex)
$(LOCAL_BUILT_MODULE): $(private_key) $(certificate) $(SIGNAPK_JAR)
$(LOCAL_BUILT_MODULE): PRIVATE_PRIVATE_KEY := $(private_key)
$(LOCAL_BUILT_MODULE): PRIVATE_CERTIFICATE := $(certificate)

$(LOCAL_BUILT_MODULE): PRIVATE_ADDITIONAL_CERTIFICATES := $(foreach c,
$(LOCAL_ADDITIONAL_CERTIFICATES), $©.x509.pem $©.pk8)

$(LOCAL_BUILT_MODULE): $(AAPT) | $(ZIPALIGN)
$(LOCAL_BUILT_MODULE): PRIVATE_JNI_SHARED_LIBRARIES := $(jni_shared_libraries_with_abis)
$(LOCAL_BUILT_MODULE): PRIVATE_JNI_SHARED_LIBRARIES_ABI := $(jni_shared_libraries_abis)
$(LOCAL_BUILT_MODULE): PRIVATE_PRODUCT_AAPT_CONFIG := $(PRODUCT_AAPT_CONFIG)
( L O C A L B U I L T M O D U L E ) : P R I V A T E P R O D U C T A A P T P R E F C O N F I G : = (LOCAL_BUILT_MODULE):PRIVATE_PRODUCT_AAPT_PREF_CONFIG:= (LOCALBUILTMODULE):PRIVATEPRODUCTAAPTPREFCONFIG:=(PRODUCT_AAPT_PREF_CONFIG)

Settings.apk 生成
$(LOCAL_INSTALLED_MODULE): $(LOCAL_BUILT_MODULE) | $(ACP)
@echo “Install3: $@”
$(copy-file-to-new-target)
$(PRIVATE_POST_INSTALL_CMD)
上面命令把package.apk生成Settings.apk

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

l531798151

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

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

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

打赏作者

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

抵扣说明:

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

余额充值