android 系统常用Androd.mk文件语句解释-整理 -----挺详细

本文详细解读了Android系统中Androd.mk文件的常用语句,包括LOCAL_DEX_PREOPT、LOCAL_PATH、CLEAR_VARS、LOCAL_MODULE_TAGS等关键变量的作用,以及如何指定模块名称、源文件、输出路径、证书类型等。通过例子展示了如何编译APK、预编译库以及设置编译选项,帮助理解Android系统构建过程。
摘要由CSDN通过智能技术生成

android 系统常用Androd.mk文件语句解释-整理
原创xiaozheng532345722 发布于2018-04-16 15:01:09 阅读数 152  收藏
展开
==========
LOCAL_DEX_PREOPT := false  直接打包生成.apk 不会附带生成.odex文件了 
======================
LOCAL_PATH:= $(call my-dir)  
用于确定源码所在的目录,最好把它放在CLEAR_VARS变量引用的前面,因为它不会被清除,每个Android.mk只需要定义
一次即可,表示LOCAL_PATH的值为当前路径的值,用于返回当前路径
include $(CLEAR_VARS)   
它清空了很多以LOCAL_开头的变量(LOCAL_PATH除外)。由于所有的MakeFile都是在一个编译环境下执行的,因此
变量的定义理论上是全局的,在每个模块编译开始前进行清理工作是必要的。表示清空所有LOCAL_xxx的变量,不影响后面这些变量的使用
LOCAL_MODULE_TAGS := optional  表示该模块在所有版本下都编译
LOCAL_SRC_FILES := $(call all-subdir-java-files)   表示编译的源代码文件列表,添加所有的java 源文件
LOCAL_PACKAGE_NAME := jnisample   表示生成的apk的名称,即此例为jnisample.apk
LOCAL_JNI_SHARED_LIBRARIES := libtest   表示生成的so文件的名称,此例即为libtest.so
LOCAL_CERTIFICATE := platform 表示使应用获得系统权限,即可以在源码环境下编译类似于sharedUserId="android.uid.system"
include $(BUILD_PACKAGE)    每个编译模块都是以include $(CLEAR_VARS)开始,以include $(BUILD_XXX)结束
include $(LOCAL_PATH)/jni/Android.mk   表示编译工程文件下面的jni/Android.mk文件
include $(call all-makefiles-under,$(LOCAL_PATH))   表示编译工程内的所有mk文件
======================================
LOCAL_MODULE 模块名,需保证在整个编译系统中是唯一存在的,而且中间不可以有空格。指定 拷贝后的apk的名字(全名),这个变量里可以有路径,但路径也会被拷贝,创建,如果 是在编译整个Android的源码,这个apk必须已经添加到了PRODUCT_PACKAGES 变量里,否则 不会拷贝到,相应的位置,
LOCAL_MODULE模块必须定义,以表示Android.mk中的每一个模块。名字必须唯一且不包含空格。
Build System会自动添加适当的前缀和后缀。例如,foo,要产生动态库,则生成libfoo.so. 但请注意:如果模块名被定为:libfoo.则生成libfoo.so. 不再加前缀。
========&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值