Android Build System详解<二>--APK Build

build/core/package.mk
LOCAL_BUILT_MODULE_STEM := package.apk
在package.mk中 LOCAL_BUILT_MODULE_STIM定义为package.apk
在base_rules.mk中,对LOCAL_BUILT_MODULE_STIM做如下处理:
LOCAL_MODULE_STEM := $(strip $(LOCAL_MODULE_STEM))
LOCAL_BUILT_MODULE := $(built_module_path)/$(LOCAL_BUILT_MODULE_STEM)
在package.mk中LOCAL_BUILT_MODULE会依赖R_file_stamp,而R_file_stamp会依赖resource_export_package,resource_export_package会做的动作有create-empty-package、add-assets-to-package
ifdef LOCAL_EXPORT_PACKAGE_RESOURCES
# Put this module's resources into a PRODUCT-agnositc package that
# other packages can use to build their own PRODUCT-agnostic R.java (etc.)
# files.
resource_export_package := $(intermediates.COMMON)/package-export.apk
$(R_file_stamp): $(resource_export_package)

# add-assets-to-package looks at PRODUCT_AAPT_CONFIG, but this target
# can't know anything about PRODUCT.  Clear it out just for this target.
$(resource_export_package): PRIVATE_PRODUCT_AAPT_CONFIG :=
$(resource_export_package): PRIVATE_PRODUCT_AAPT_PREF_CONFIG :=
$(resource_export_package): $(all_res_assets) $(full_android_manifest) $(RenderScript_file_stamp) $(AAPT)
        @echo "target Export Resources: $(PRIVATE_MODULE) ($@)"
        $(create-empty-package)
        $(add-assets-to-package)
endif

# Other modules should depend on the BUILT module if
# they want to use this module's R.java file.
$(LOCAL_BUILT_MODULE): $(R_file_stamp)
LOCAL_BUILT_MODULE做的动作有create-empty-package、add-assets-to-package、add-jni-shared-libs-to-package、add-dex-to-package、add-carried-java-resources、add-java-resources-to-package、sign-package、align-package。
$(LOCAL_BUILT_MODULE): $(all_res_assets) $(jni_shared_libraries) $(full_android_manifest)     
        @echo "target Package: $(PRIVATE_MODULE) ($@)"
        $(create-empty-package)
        $(add-assets-to-package)
ifneq ($(jni_shared_libraries),)
        $(add-jni-shared-libs-to-package)
endif
ifneq ($(full_classes_jar),)
        $(add-dex-to-package)
endif
        $(add-carried-java-resources)
ifneq ($(extra_jar_args),)
        $(add-java-resources-to-package)
endif
        $(sign-package)
        @# Alignment must happen after all other zip operations.
        $(align-package)
ifdef LOCAL_DEX_PREOPT
        $(hide) rm -f $(patsubst %.apk,%.odex,$@)
        $(call dexpreopt-one-file,$@,$(patsubst %.apk,%.odex,$@))
ifneq (nostripping,$(LOCAL_DEX_PREOPT))
        $(call dexpreopt-remove-classes.dex,$@)
endif
built_odex := $(basename $(LOCAL_BUILT_MODULE)).odex
$(built_odex): $(LOCAL_BUILT_MODULE)
endif




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值