android make脚本简记

上传人:第*** 文档编号:31311908 上传时间:2018-02-06 格式:DOC 页数:16 大小:75KB
返回 下载 相关 举报
android make脚本简记_第1页
第1页 / 共16页
android make脚本简记_第2页
第2页 / 共16页
android make脚本简记_第3页
第3页 / 共16页
android make脚本简记_第4页
第4页 / 共16页
android make脚本简记_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《android make脚本简记》由会员分享,可在线阅读,更多相关《android make脚本简记(16页珍藏版)》请在金锄头文库上搜索。

1、Android Make 脚本简记原文地址:http:/ Blog http:/一、1、 Build LayersBuild Layers 描述的是产品的硬件配置情况,据此 make 时选择不同的配置和模块。按照从上到下的顺序,Build Layer分成 4 层。Layer sample NoteArch arm, x86 处理器的种类Board 板子类型的代号Device device 配置的类型代号Product 具体产品的代号2、添加应用2.1、一个例子以 calculator 为例,app 代码可以放到 packages/apps/目录下边,一个 app 对应一个目录,此例,pakca

2、ges/apps/Calculator/,创建 Android.mk,已去除多余的注释行。Java 代码 1. LOCAL_PATH := $(call my-dir) 2. include $(CLEAR_VARS) 3. LOCAL_MODULE_TAGS := optional 4. LOCAL_STATIC_JAVA_LIBRARIES := libarity 5. LOCAL_SRC_FILES := $(call all-java-files-under, src) 6. LOCAL_SDK_VERSION := current 7. LOCAL_PACKAGE_NAME := C

3、alculator 8. include $(BUILD_PACKAGE) 9. include $(CLEAR_VARS) 10. LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libarity:arity-2.1.2.jar 11. include $(BUILD_MULTI_PREBUILT) 12. # Use the folloing include to make our test apk. 13. include $(call all-makefiles-under,$(LOCAL_PATH) Android.mk 中需要赋值的几个 LOCAL_

4、XXX 变量,LOCAL_PATH ,调用 my-dir(在 defination.mk 中定义),得到当前路径,即,/ pakcages/apps/Calculator/;LOCAL_MODULE_TAGS ,取值范围 debug eng tests optional samples shell_ash shell_mksh,注意不能取值user,如果要预装,则应定义 core.mk;LOCAL_SRC_FILES ,app 的所有源码,可以调用 all-java-files-under 得到,如果是 java 源码的话;LOCAL_PACKAGE_NAME ,package 的名字,这个名

5、字在脚本中将标识这个 app 或 package;$(CLEAR_VARS) 指的是 clear_vars.mk,脚本会清空所有 LOCAL_xxx 的变量,不影响后面这些变量的使用;$(BUILD_PACKAGE) 指的是 package.mk而,最后一句 all-makefiles-under 将会包含当前目录下所有的.mk 脚本文件。2.2、LOCAL_XXX 的列表LOCAL_PATH,当前路径,必须定义;LOCAL_PACKAGE_NAME,必须定义,package 的名字,这个名字在脚本中将标识 app 或 package;LOCAL_MODULE_SUFFIX,不用定义,modu

6、le 的后缀,=.apk。LOCAL_MODULE,不用定义,=$(LOCAL_PACKAGE_NAME)。LOCAL_JAVA_RESOURCE_DIRS,不用定义。LOCAL_JAVA_RESOURCE_FILES,不用定义。LOCAL_MODULE_CLASS,不用定义。LOCAL_MODULE_TAGS,可选定义。默认 optional。取值范围 user debug eng tests optional samples shell_ash shell_mkshLOCAL_ASSET_DIR,可选定义,推荐不定义。默认 $(LOCAL_PATH)/assetsLOCAL_RESOURC

7、E_DIR,可选定义,推荐不定义。默认 product package 和 device package 相应的 res 路径和$(LOCAL_PATH)/res。LOCAL_PROGUARD_ENABLED,可选定义,默认为 full,如果是 user 或 userdebug。取值 full, disabled, custom。full_android_manifest,不用定义,=$(LOCAL_PATH)/AndroidManifest.xml。LOCAL_EXPORT_PACKAGE_RESOURCES,可选定义,默认 null。如果允许 app 的资源被其它模块使用,则设置true。

8、LOCAL_CERTIFICATE,可选定义,默认为 testkey。最终是:private_key := $(LOCAL_CERTIFICATE).pk8 和 certificate := $(LOCAL_CERTIFICATE).x509.pem;2.3、mm 创建 apk 时的 package.mk 中变量分析以 Calculator 为例,由 LOCAL_PATH, LOCAL_PACKAGE_NAME 导出变量LOCAL_MODULE,all_assets ,all_assets,all_resources。设置 LOCAL_MODULE_CLASS=APPS,此值 local-in

9、termediates-dir 会用到。设置中间生成目录路径,中间路径将放置 R.stamp 文件。package_expected_intermediates_COMMON := $(call local-intermediates-dir,COMMON)这里 COMMON 是 null,而 LOCAL_MODULE_CLASS=APPS,所以package_expected_intermediates_COMMON=out/target/common/obj/$(LOCAL_MODULE_CLASS)/$(LOCAL_MODULE)_intermediates即package_expect

10、ed_intermediates_COMMON=out/target/common/obj/APPS/Calculator_intermediates设置LOCAL_BUILT_MODULE_STEM := package.apk而LOCAL_BUILT_MODULE := $(built_module_path)/$(LOCAL_BUILT_MODULE_STEM) base_rules.mkbuilt_module_path := $(intermediates) base_rules.mkintermediates := $(call local-intermediates-dir) j

11、ava.mk最终LOCAL_BUILT_MODULE=out/target/product/obj/$(LOCAL_MODULE_CLASS)/$(LOCAL_MODULE)_intermediates/$(LOCAL_BUILT_MODULE_STEM)即LOCAL_BUILT_MODULE=out/target/product/generic/obj/APPS/Calculator_intermediates/package.apk由 LOCAL_CERTIFICATE 导出private_key := $(SRC_TARGET_DIR)/product/security/$(LOCAL_

12、CERTIFICATE).pk8certificate := $(SRC_TARGET_DIR)/product/security/$(LOCAL_CERTIFICATE).x509.pemLOCAL_CERTIFICATE 默认为 testkey。2.4、package.mk 中定义的几个 PACKAGE.xxx 变量PACKAGES.$(LOCAL_PACKAGE_NAME).PRIVATE_KEY := $(private_key)PACKAGES.$(LOCAL_PACKAGE_NAME).CERTIFICATE := $(certificate)PACKAGES.$(LOCAL_PA

13、CKAGE_NAME).OVERRIDES := $(strip $(LOCAL_OVERRIDES_PACKAGES)PACKAGES.$(LOCAL_PACKAGE_NAME).RESOURCE_FILES := $(all_resources)PACKAGES := $(PACKAGES) $(LOCAL_PACKAGE_NAME)全编译时,PACKAGES 变量将会记录遍历到的 packages。二、1、 java.mk 分析选取 APPS 场景,以 Calculator 为例说明。LOCAL_JAVA_LIBRARIES=true 时, Android.mk 中不能定义 LOCAL_

14、SDK_VERSION。当 LOCAL_SDK_VERSION=current 时,LOCAL_JAVA_LIBRARIES=android_stubs_current。package.mk 中定义 LOCAL_BUILT_MODULE_STEM=package.apk。两个中间目录的路径,即对应的 obj 目录下 APPS/_intermediates/。intermediates=out/target/product/generic/obj/APPS/Calculator_intermediatesintermediates.COMMON=out/target/common/obj/APP

15、S/Calculator_intermediatesLOCAL_INTERMEDIATE_TARGETS 先前 package.mk 中已经定义了 R.stamp,java.mk 有增添了 7 个。LOCAL_INTERMEDIATE_TARGETS += $(full_classes_jar) $(full_classes_compiled_jar) $(full_classes_emma_jar) $(full_classes_full_names_jar) $(full_classes_stubs_jar) $(full_classes_jarjar_jar) $(built_dex)此例中,具体值是LOCAL_INTERMEDIATE_TARGETS=out/target/common/obj/APPS/Calculator_intermediates/src/R.stamp defined in package.mkout/target/common/obj/APPS/Calculator_intermediates/classes.jar full_classes_jarout/target/common/obj/APPS/Calculator_intermediates/classes-full-debug.jar full_classes

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号