Android 系统(140)---android.mk中几个常见配置



android.mk中几个常见配置

1.LOCAL_JACK_ENABLED

这个变量可以禁止使用Jack编译工具链编译该模块。在工作中,个人感觉目前jack工具链不是很稳定,经常会出现一些错误,比如:
ERROR: Security problem, see Jack server log (/tmp/jack-liujinwei/jack-8072.log)
这个时候,我就会在Android.mk中禁止该工具链。

禁止方法如下:

LOCAL_JACK_ENABLED := disabled

2.LOCAL_DEX_PREOPT

这个变量设置为false可以使整个系统使用提前优化的时候,某个app不使用提前优化。在Android.mk中给该变量赋值为false,则编译生成的文件没有oat文件,也就意味着没有被提前优化。

LOCAL_DEX_PREOPT := false

3.WITH_DEXPREOPT

这个变量的使能导致system image中的所有东西都被提前优化(pre-optimized)。这可能导致system image非常大。

WITH_DEXPREOPT := true

4.DONT_DEXPREOPT_PREBUILTS

  1. WITH_DEXPREOPT := true
  2. DONT_DEXPREOPT_PREBUILTS := true

这两个组合使用,可以使那些 prebuild的app不会被提前优化(pre-optimized),即就是那些在Android.mk中包含intclude $(BUILD_PREBUILT)的app都不会被提前优化

5.WITH_DEXPREOPT_BOOT_IMG_ONLY

  1. WITH_DEXPREOPT := true
  2. WITH_DEXPREOPT_BOOT_IMG_ONLY := true

这两个组合使用只会优化boot image。

6.LOCAL_MODULE_TAGS

LOCAL_MODULE_TAGS :=user eng tests optional

user: 指该模块只在user版本下才编译

eng: 指该模块只在eng版本下才编译

tests: 指该模块只在tests版本下才编译

optional:指该模块在所有版本下都编译


7.LOCAL_PATH

当前目录,使用LOCAL_PATH := $(call my-dir)获取当前目录,

LOCAL_PATH不会被include $(CLEAR_VARS) 清理。


8.LOCAL_MODULE

模块名,在模块编译的时候,LOCAL_MODULE的值会被赋予ALL_MODULE,ALL_MODULE包含了系统所有模块,这些模块会更具系统的其他配置进一步筛选,最终筛选出来的模块会被编译。


9.LOCAL_SHARED_LIBRARIES

要连接到本模块的共享库。


10.LOCAL_CERTIFICATE := platform

使用平台签名文件签名。


11.include $(BUILD_STATIC_JAVA_LIBRARY)

构建一个静态的jar包


12.include $(BUILD_PACKAGE)

编译生成apk


13.include $(BUILD_EXECUTABLE)

编译生成可执行文件


14.include $(BUILD_SHARED_LIBRARY)

编译生成动态共享库


15.include $(BUILD_STATIC_LIBRARY)

编译生成静态库


16.LOCAL_JAVA_LIBRARIES

例如:LOCAL_JAVA_LIBRARIES := hello.jar,用于指明依赖的共享Jar包


17.LOCAL_STATIC_JAVA_LIBRARIES

用于指明依赖的静态jar包


18.LOCAL_LDLIBS

链接选项,指明链接的参数,LOCAL_SHARED_LIBRARIES 会生成依赖关系,当库不存在时会去编译这个库,LOCAL_LDLIBS则不会,它只是指明链接需要的参数。

如:LOCAL_LDLIBS += -lm –lz –lc -lcutils –lutils –llog …

android.mk中几个常见配置

1.LOCAL_JACK_ENABLED

这个变量可以禁止使用Jack编译工具链编译该模块。在工作中,个人感觉目前jack工具链不是很稳定,经常会出现一些错误,比如:
ERROR: Security problem, see Jack server log (/tmp/jack-liujinwei/jack-8072.log)
这个时候,我就会在Android.mk中禁止该工具链。

禁止方法如下:

LOCAL_JACK_ENABLED := disabled

2.LOCAL_DEX_PREOPT

这个变量设置为false可以使整个系统使用提前优化的时候,某个app不使用提前优化。在Android.mk中给该变量赋值为false,则编译生成的文件没有oat文件,也就意味着没有被提前优化。

LOCAL_DEX_PREOPT := false

3.WITH_DEXPREOPT

这个变量的使能导致system image中的所有东西都被提前优化(pre-optimized)。这可能导致system image非常大。

WITH_DEXPREOPT := true

4.DONT_DEXPREOPT_PREBUILTS

  1. WITH_DEXPREOPT := true
  2. DONT_DEXPREOPT_PREBUILTS := true

这两个组合使用,可以使那些 prebuild的app不会被提前优化(pre-optimized),即就是那些在Android.mk中包含intclude $(BUILD_PREBUILT)的app都不会被提前优化

5.WITH_DEXPREOPT_BOOT_IMG_ONLY

  1. WITH_DEXPREOPT := true
  2. WITH_DEXPREOPT_BOOT_IMG_ONLY := true

这两个组合使用只会优化boot image。

6.LOCAL_MODULE_TAGS

LOCAL_MODULE_TAGS :=user eng tests optional

user: 指该模块只在user版本下才编译

eng: 指该模块只在eng版本下才编译

tests: 指该模块只在tests版本下才编译

optional:指该模块在所有版本下都编译


7.LOCAL_PATH

当前目录,使用LOCAL_PATH := $(call my-dir)获取当前目录,

LOCAL_PATH不会被include $(CLEAR_VARS) 清理。


8.LOCAL_MODULE

模块名,在模块编译的时候,LOCAL_MODULE的值会被赋予ALL_MODULE,ALL_MODULE包含了系统所有模块,这些模块会更具系统的其他配置进一步筛选,最终筛选出来的模块会被编译。


9.LOCAL_SHARED_LIBRARIES

要连接到本模块的共享库。


10.LOCAL_CERTIFICATE := platform

使用平台签名文件签名。


11.include $(BUILD_STATIC_JAVA_LIBRARY)

构建一个静态的jar包


12.include $(BUILD_PACKAGE)

编译生成apk


13.include $(BUILD_EXECUTABLE)

编译生成可执行文件


14.include $(BUILD_SHARED_LIBRARY)

编译生成动态共享库


15.include $(BUILD_STATIC_LIBRARY)

编译生成静态库


16.LOCAL_JAVA_LIBRARIES

例如:LOCAL_JAVA_LIBRARIES := hello.jar,用于指明依赖的共享Jar包


17.LOCAL_STATIC_JAVA_LIBRARIES

用于指明依赖的静态jar包


18.LOCAL_LDLIBS

链接选项,指明链接的参数,LOCAL_SHARED_LIBRARIES 会生成依赖关系,当库不存在时会去编译这个库,LOCAL_LDLIBS则不会,它只是指明链接需要的参数。

如:LOCAL_LDLIBS += -lm –lz –lc -lcutils –lutils –llog …

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值