在android-5.0.2/build/core/Makefile的315行可以看到,这里是apk生成签名相关的地方。
315 name := $(TARGET_PRODUCT) 316 ifeq ($(TARGET_BUILD_TYPE),debug) 317 name := $(name)_debug 318 endif 319 name := $(name)-apkcerts-$(FILE_NAME_TAG) 320 intermediates := \ 321 $(call intermediates-dir-for,PACKAGING,apkcerts) 322 APKCERTS_FILE := $(intermediates)/$(name).txt 323 # We don't need to really build all the modules. 324 # TODO: rebuild APKCERTS_FILE if any app change its cert. 325 $(APKCERTS_FILE): 326 @echo APK certs list: $@ 327 @mkdir -p $(dir $@) 328 @rm -f $@ 329 $(foreach p,$(PACKAGES),\ 330 $(if $(PACKAGES.$(p).EXTERNAL_KEY),\ 331 $(call _apkcerts_echo_with_newline,\ 332 'name="$(p).apk" certificate="EXTERNAL" \ 333 private_key=""' >> $@),\ 334 $(call _apkcerts_echo_with_newline,\ 335 'name="$(p).apk" certificate="$(PACKAGES.$(p).CERTIFICATE)" \ 336 private_key="$(PACKAGES.$(p).PRIVATE_KEY)"' >> $@))) 337 # In case value of PACKAGES is empty. 338 $(hide) touch $@ 339 340 .PHONY: apkcerts-list 341 apkcerts-list: $(APKCERTS_FILE)我们可以在# In case value of PACKAGES is empty.这句的上面加一个删除系统apk的脚本,这样编译的时候就不会将apk编译到系统中去了。脚本编写,放在Android源码的根目录下,比如remove_system_apk.sh
例如:
rm -rf ./out/target/product/tiny4412/system/app/Email/Email.apk
其它的以此类推。
Engineer-Bruce_Yang 认证博客专家 嵌入式硬件 单片机 arm开发 本科毕业于华南理工大学,现美国卡罗尔工商管理硕士研究生在读,曾就职于世界名企伟易达、联发科技等,多年嵌入式产品开发经验,在智能玩具、安防产品、平板电脑、手机开发有丰富的实战开发经验,现任深圳市云之手科技有限公司副总经理、研发总工程师。