Android MakeFile + 预置apk



一、编译    
1、**五个阶段**:词法分析、语法分析、语义分析与中间代码产生、优化、目标代码生成

2、makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。


3、makefile文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系。

**android.mk与MakeFile的区别**
android.mk是Android操作系统编译的时候使用的编译规则文件。Makefile是Linux操作系统编译的时候使用的编译规则文件。作用是一样的,只是名称不一样。

二、Android MakeFile
1、 **Android.mk基本组成**

    1、LOCAL_PATH 定义了当前模块的相对路径,必须出现在所有的编译模块之前 。Android.mk和需要编译的源文件在同一目录下,所以定义成如下形式:LOCAL_PATH:=$(call my-dir)上面的语句的意思是将LOCAL_PATH变量定义为本文件所在目录路径。

    2、每个编译模块由include$(CLEAR_VARS) 开始,由include $(BUILD_XXX) 结束 ,include $(CLEAR_VARS)是一个编译模块的开始,它会清空除LOCAL_PATH之外的所有LOCA_XXX变量 
    3、include $(BUILD_XXX)描述了编译目标   
    4、LOCAL_SRC_FILES定义了本模块编译使用的源文件,采用的是基于LOCAL_PATH的相对路径  
    5、 LOCAL_MODULE 定义了本模块的模块名
    6、include $(BUILD_SHARED_LIBRARY)表示编译成动态库。
    7、 include $(BUILD_EXECUTABLE)表示编译成可执行程序

  
2、**编译目标**
上面用到include $(CLEAR_VARS)和include $(BUILD_HOST_EXECUTABLE),那么他们是在哪里定义的呢?除了BUILD_HOST_EXECUTABLE还有哪些BUILD_XXX目标呢?
它们的定义位于**build/core/config.mk**文件,当然config.mk文件定义的编译目标也很多,下面列举几个常用的目标:
编译目标  说明
BUILD_HOST_STATIC_LIBRARY  主机上的静态库
BUILD_HOST_SHARED_LIBRARY  主机上的动态库
BUILD_HOST_EXECUTABLE  主机上的可执行文件
BUILD_STATIC_LIBRARY  目标设备上的静态库
BUILD_SHARED_LIBRARY  目标设备上的动态库
BUILD_EXECUTABLE  目标设备上的可执行文件
BUILD_JAVA_LIBRARY  JAVA库
BUILD_STATIC_JAVA_LIBRARY  静态JAVA库
BUILD_HOST_JAVA_LIBRARY  主机上的JAVA库
BUILD_PACKAGE  APK程序


**3、指定相关的变量**

>
LOCAL_ASSET_FILES :在Android.mk文件中编译应用程序(BUILD_PACKAGE)时设置此变量,表示资源文件,通常会定义成LOCAL_ASSET_FILES += $(call find-subdir-assets)
LOC

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在软件开发中,Makefile是一种用于管理源代码编译和构建的工具。它是一个包含一系列规则和命令的文本文件,用于指定如何生成目标文件。与之相似的,Dockerfile是用于构建Docker镜像的脚本文件Makefile和Dockerfile有一定的关系,可以通过在Makefile中引用或读取Dockerfile来完成自动构建的目的。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Makefile + Dockerfile](https://blog.csdn.net/yujia_666/article/details/121251081)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Makefile中@+-的含义](https://blog.csdn.net/weixin_37988926/article/details/103964750)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Makefile中 := ?= += =的区别](https://blog.csdn.net/yikunbai5708/article/details/101999352)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值