Android.mk简单语法总结记录

 

1.常用的一些 变量

LOCAL_PATH:= $(call my-dir)
    #此行代码在Android.mk的开头,用于给出当前文件的路径,LOCAL_PATH 用于在开发树中查找源文件, 宏函数’my-dir’, 由编译系统提供,用于返回当前路径(即包含Android.mk file文件的目录)

include $(CLEAR_VARS)
    #CLEAR_VARS 变量由Build System提供。并指向一个指定的GNU Makefile,由它负责清理很多LOCAL_xxx. 例如:LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES等等。但不清理LOCAL_PATH. 这个清理动作是必须的,因为所有的编译控制文件由同一个GNU Make解析和执行,其变量是全局的。所以清理后才能避免相互影响。

LOCAL_SRC_FILES
    #源文件列表,源文件的路径,根据LOCAL_PATH路径书写。

LOCAL_MODULE
    #LOCAL_MODULE指定编译出的内容(动态库、静态库、可执行程序)的名称,该名称需要唯一且不包含空格。Build System会自动添加适当的前缀和后缀。例如,foo,要产生动态库,则生成libfoo.so. 但请注意:如果模块名被定为:libfoo.则生成libfoo.so. 不再加前缀。

LOCAL_PACKAGE_NAME
    #当前APK应用的名称

LOCAL_SRC_FILES 
    #当前模块包含的所有源代码文件、只要列出要传递给编译器的文件即可,编译系统会自动计算依赖关系。源代码文件路径都是相当于LOCAL_PATH的,因此可以使用相对路径进行描述。

LOCAL_MODULE_TAGS := optional / user / eng / tests  可选定义
    #该模块在所有版本下都编译/ 该模块只在user版本下才编译/ 该模块只在eng版本下才编译/ 该模块只在tests版本下才编译

LOCAL_OVERRIDES_PACKAGES := Settings
    #覆盖其他所有同名的应用

LOCAL_JAVA_LIBRARIES
    #当前模块依赖的Java共享库,也叫Java动态库,如framework.jar包。

LOCAL_STATIC_LIBRARIES                   
    #表示该模块需要使用哪些静态库,以便在编译时进行链接。 

LOCAL_SHARED_LIBRARIES                   
    #表示模块在运行时要依赖的共享库(动态库),在链接时就需要,以便在生成文件时嵌入其相应的信息


LOCAL_STATIC_JAVA_LIBRARIES:             
    #当前模块以来的java静态库,在android里,导入的jar包和引用的第三方工程都属于java静态库

LOCAL_JNI_SHARED_LIBRARIES               
    #定义了要包含的so库文件的名字,如果程序没有采用jni,不需要 

LOCAL_INIT_RC                            
    #mk文件中通过LOCAL_INIT_RC来指明service对应的rc文件

LOCAL_C_INCLUDES:                        
    #C或C++ 语言需要的头文件路径

LOCAL_AAPT_FLAGS
    #指定打包资源文件,因为Android的工具aapt在生成apk文件时默认地会编译并压缩res/下的文件,而一些系统文件则不需要被压缩(否则在读取该文件时需要解压缩),在Android.mk文件需要指定以下选项告诉aapt工具不压缩所的文件。

2、LOCAL_CERTIFICATE := platform/shared/media 可选定义

LOCAL_CERTIFICATE :                    #使用平台文件签名
(1)platform签名: 
AndroidManifest.xml的manifest节点中添加 android:sharedUserId=”android.uid.system”, 
Android.mk中增加  LOCAL_CERTIFICATE := platform 
(2)shared签名: 
AndroidManifest.xml的manifest节点中增加android:sharedUserId=”android.uid.shared”, 
Android.mk中增加LOCAL_CERTIFICATE := shared 
(3)media签名: 
AndroidManifest.xml的manifest节点中增加 android:sharedUserId=”android.media”, 
Android.mk中增加 LOCAL_CERTIFICATE := media 

3、LOCAL_MODULE_CLASS

LOCAL_MODULE_CLASS := EXECUTABLES        #指定编译之后放置的位置:
                                         EXECUTABLES:指示放在system/bin下,
                                         ETC :表示放置在/system/etc下,
                                         APPS :表示放置在/system/app目录下,
                                         SHARED_LIBRARIES表示放置在/sysem/lib目录下。

4、include $(BUILD_PREBUILT)

include $(BUILD_PREBUILT)                #这种方式把文件当成编译项目,

include $(BUILD_PACKAGE)                 #是用来编译生成package/app/下的apk。

include $(BUILD_STATIC_LIBRARY)          #表示编译成静态库

include $(BUILD_SHARED_LIBRARY)          #表示编译成动态库

include $(BUILD_EXECUTABLE)              #表示编译成可执行程序
 
include $(BUILD_STATIC_JAVA_LIBRARY)     #表示编译生成静态jar包

注意:‘:=’是赋值的意思;’+='是追加的意思;‘$’表示引用某变量的值。 

5、常用的一些 函数

$(call my-dir)    #获取当前文件夹的路径。

$(call all-java-files-under, <src>)    #获取指定目录下的所有java文件。

$(call all-c-files-under, <src>)    #获取指定目录下的所有c文件。

$(call all-Iaidl-files-under, <src>)    #获取指定目录下的所有AIDL文件。

$(call all-makefiles-under, <folder>)    #获取指定目录下的所有Make文件。

$(call intermediates-dir-for, <class>, <app_name>, <host or target>, <common?>)    #获取Build输入的目标文件夹路径。

$(call first-makefiles-under,$(LOCAL_PATH))    #在LOCAL_PATH的所有子目录中查找.mk文件,不包括当前目录
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
android.mk 是一种用于构建 Android 应用程序的 Makefile 文件格式,而 android.bp 是将要取代 android.mk 的一种新的构建系统文件格式,它是用于生成 Android 系统的 Blueprint 构建系统的配置文件。 要将 android.mk 转成 android.bp,首先需要了解 android.mk 的结构和语法规则,然后根据这些规则来编写对应的 android.bp 文件。由于 android.bp 是基于 Blueprint 构建系统的配置文件,所以需要通过编写规范的 Blueprint 描述文件来完成对 android.mk 的转换。 在转换过程中,需要注意以下几点: 1. 将 android.mk 文件中的每个模块(例如库,可执行文件,模块等)的描述转换为对应的 android.bp 格式。 2. 考虑和处理 android.bp 特有的新特性和语法规则,例如 module {} 块的使用。 3. 更新外部依赖项的描述,如库的引入方式、依赖关系的定义等。 4. 调整路径和命名规则,使之符合 android.bp 的文件组织结构和命名规范。 在转换完成后,需要进行测试和验证,确保转换后的 android.bp 文件可以正确地生成相应的 Android 应用程序。同时,也需要注意在转换过程中可能会出现的兼容性问题,确保转换后的 android.bp 文件能够正常地被构建系统接受并使用。 总的来说,将 android.mk 转成 android.bp 需要对 android.mk 的结构和语法进行理解,并根据 Blueprint 构建系统的规则和特性来进行相应的转换和调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值