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. 不再加前缀。
========&
android 系统常用Androd.mk文件语句解释-整理 -----挺详细
最新推荐文章于 2023-08-27 20:58:32 发布
本文详细解读了Android系统中Androd.mk文件的常用语句,包括LOCAL_DEX_PREOPT、LOCAL_PATH、CLEAR_VARS、LOCAL_MODULE_TAGS等关键变量的作用,以及如何指定模块名称、源文件、输出路径、证书类型等。通过例子展示了如何编译APK、预编译库以及设置编译选项,帮助理解Android系统构建过程。
摘要由CSDN通过智能技术生成