Android Build System详解--APK Build
16lz
2021-01-23
build/core/package.mk
在base_rules.mk中,对LOCAL_BUILT_MODULE_STIM做如下处理:
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)endififneq ($(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,$@)endifbuilt_odex := $(basename $(LOCAL_BUILT_MODULE)).odex$(built_odex): $(LOCAL_BUILT_MODULE)endif
更多相关文章
- Android 自定义Dialog样式
- 自定义Activity标题栏(Title bar)和窗体显示状态操作(requestWind
- android之4.0控件switch自定义开关背景图片和控制宽度
- Android 自定义标题栏
- 为什么android的R类要定义成16进制
- Android 图片裁剪功能实现详解(类似QQ自定义头像裁剪)
- Android 自定义Tabbar