//Rocky@20110312
Android.mk文件时android 中的一个非常重要的概念。我们有以下几个方便的时候需要使用它。
1:添加新的apk源码文件编译。这里我们先参考下AlarmClock的Android.mk文件
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_PACKAGE_NAME := AlarmClock
include $(BUILD_PACKAGE)
简单的解释下:
第一行,赋予LOCAL_PATH一个新的值,表示当前的路径。
第二行,清楚所有的系统自带的标准变量值。我们通过查找CLEAR_VARS变量定义,可以发现它实际上代表的是
source/build/core/config.mk中有定义如下:
CLEAR_VARS:= $(BUILD_SYSTEM)/clear_vars.mk
所以查看clear_vars.mk文件可以得到知道:
###########################################################
## Clear out values of all variables used by rule templates.
###########################################################
LOCAL_MODULE:=
LOCAL_MODULE_PATH:=
LOCAL_MODULE_STEM:=
LOCAL_DONT_CHECK_MODULE:=
LOCAL_CHECKED_MODULE:=
LOCAL_BUILT_MODULE:=
LOCAL_BUILT_MODULE_STEM:=
OVERRIDE_BUILT_MODULE_PATH:=
....
它把这些变量都清空了。
注意它这里没有去清空LOCAL_PATH变量。所以这个步骤放在第二行,是没有关系的。它的这个写法有点误导人哈。
第三、四行,给变量赋予新值。这里赋予的是LOCAL_SRC_FILES,LOCAL_PACKAGE_NAME
第五行,执行BUILD_PACKAGE。它的定义也是在config.mk中定义如下:
BUILD_PACKAGE:= $(BUILD_SYSTEM)/package.mk,更多更加具体的,自己去看看吧。
这里其实有很多的,
# ###############################################################
# Build system internal files
# ###############################################################
BUILD_COMBOS:= $(BUILD_SYSTEM)/combo
CLEAR_VARS:= $(BUILD_SYSTEM)/clear_vars.mk
BUILD_HOST_STATIC_LIBRARY:= $(BUILD_SYSTEM)/host_static_library.mk
BUILD_HOST_SHARED_LIBRARY:= $(BUILD_SYSTEM)/host_shared_library.mk
BUILD_STATIC_LIBRARY:= $(BUILD_SYSTEM)/static_library.mk
BUILD_RAW_STATIC_LIBRARY := $(BUILD_SYSTEM)/raw_static_library.mk
BUILD_SHARED_LIBRARY:= $(BUILD_SYSTEM)/shared_library.mk
BUILD_EXECUTABLE:= $(BUILD_SYSTEM)/executable.mk
BUILD_RAW_EXECUTABLE:= $(BUILD_SYSTEM)/raw_executable.mk
BUILD_HOST_EXECUTABLE:= $(BUILD_SYSTEM)/host_executable.mk
BUILD_PACKAGE:= $(BUILD_SYSTEM)/package.mk
BUILD_HOST_PREBUILT:= $(BUILD_SYSTEM)/host_prebuilt.mk
BUILD_PREBUILT:= $(BUILD_SYSTEM)/prebuilt.mk
BUILD_MULTI_PREBUILT:= $(BUILD_SYSTEM)/multi_prebuilt.mk
BUILD_JAVA_LIBRARY:= $(BUILD_SYSTEM)/java_library.mk
BUILD_STATIC_JAVA_LIBRARY:= $(BUILD_SYSTEM)/static_java_library.mk
BUILD_HOST_JAVA_LIBRARY:= $(BUILD_SYSTEM)/host_java_library.mk
BUILD_DROIDDOC:= $(BUILD_SYSTEM)/droiddoc.mk
BUILD_COPY_HEADERS := $(BUILD_SYSTEM)/copy_headers.mk
BUILD_KEY_CHAR_MAP := $(BUILD_SYSTEM)/key_char_map.mk
基本上你有用到的就已经提前给你设计好了。你要做的很简单了。
这里的思想其实和makefile的是一样的。
目标:信赖文件
执行命令
只是android在这里进行了高度的封装和简化。
前面四行相当于设置目标文件。
最后一行相当于执行命令。
所以,如果我们要添加自己的apk,就按照这种思想添加就可以了。
2:变量的使用
makefile文件有一个基础的东西就是变量。大家可以自己了解下。这里我们说说android.mk这个变量的不同的地方。主要是用它来做代码管理。这个部分是我同事小强总结出来的,我就cp过来。
替它总结下。
首先在执行make文件的时候这些变量是全局有效的,一些公共的变量会通过include $(CLEAR_VARS)给清除掉。我们这里主要是添加自己的变量。
我们在使用自己定义变量的时候有两种情况,一种是在mk中使用,一种是在cpp中使用。注意java不支持的。
这两种情况有点不同,请注意。
首先我们得定义这个变量,一般来讲都是在产品的BoardConfig.mk中定义,例如:
TARGET_MEMORY_STYLE := TARGET_MEM_256MB
#TARGET_MEMORY_STYLE := TARGET_MEM_256MB_ST
#TARGET_MEMORY_STYLE := TARGET_MEM_512MB
#TARGET_MEMORY_STYLE := TARGET_MEM_512MB_ST
# board-specific configuration
BOARD_OPENCORE_FLAGS := -DTELECHIPS_ALSA
ifeq ($(BOARD_KERNEL_BASE),0x40000000)
BOARD_MEM_FLAGS := -DTCC_MEM_256MB
else
BOARD_MEM_FLAGS := -DTCC_MEM_512MB
endif
这里总共有两个我们经常用的东西。
第一:
如果是mk总使用,定义如前四行就可以了。
变量 := 字符串
在mk中的使用方法就像后面例子一样。
ifeq($(变量),对比值)
else
endif
第二:如果你想在cpp中使用,请定义方式如下
变量 := -D+变量名
如后面几行示例一样的。
如果想在cpp中应用,首先必须在cpp对于的mk文件中,声明如下
LOCAL_CFLAGS += $(BOARD_MEM_FLAGS)
格式:
LOCAL_CFLAGS += $(变量)
然后它的cpp中就可以引用如下:
此时去掉了-D前缀。
ifdef TCC_MEM_512MB
......
endif
特此感谢小强同学的代码控制.doc。
相关推荐
【Cadence】Virtuoso@LayoutXL 差分电路版图镜像同步技巧详解
本文详细介绍了在Cadence Virtuoso LayoutXL中实现差分电路版图镜像同步的技巧,包括核心需求、环境配置、分步操作指南及高级技巧。通过使用LayoutXL的Group功能,工程师可以高效保持差分电路的对称性,提升版图迭代效率,确保高速信号处理的稳定性。特别适用于深亚微米工艺下的差分放大器设计。
android make
跳转到主要内容 登录 (或注册) 中文 技术主题 软件下载 社区 技术讲座 developerWorks 中国 技术主题 Open source 文档库 理解 Android Build 系统 强 波, Java 软件工程师, 富士通南
详解各类以太网标准10BASE-T/100BASE-T4/100BASE-FX/1000BASE-X等
以太网是现实世界中最普遍的一种计算机网络。以太网有两类:第一类是经典以太网,第二类是交换式以太网,使用了一种称为交换机的设备连接不同的计算机。经典以太网是以太网的原始形式,运行速度从3-10 Mbps不等;而交换式以太网正是广泛应用的以太网,可运行在100Mbps、1000Mbps和10000Mbps高速率,分别以快速以太网、千兆以太网和万兆以太网的形式呈现
【Android 】Prebuilt预编译
Android Prebuilt编译方式 Android提供了Perbuilt编译方式,处理已经编译好的库或配置文件 # perbuilt.mk BUILD_PERBUILT # multi_perbuilt.mk BUILD_MULTI_PERBUILT Perbuilt 针对独立文件的操作。 Multi_Perbuilt 针对多个文件,对多个文件进行判断,调用Prebuilt依...
大白映射 宝马Esys编程设码映射、USB设备映射
大白映射,宝马Esys设码编程、USB设备映射
2022年华为ICT大赛 全球总决赛!中文综合任务书-网络赛道真题!
2022年华为ICT大赛 全球总决赛!综合任务书-网络赛道真题-中文翻译版
Android.mk文件学习,将工程编译到系统中(实践篇)
前言 千呼万唤使出来,答应的事儿一定做到;之前在一篇文章中说到自己会出一篇比较详细介绍Android.mk文件的文章,一言既出,必须得出!本文主要是介绍一些比较常用的mk文件里面的标签使用,同时也给出一些使用实例供大家做模板参考使用,话不多说,上小菜儿! 正文 本文是基于本人测试使用的一个demo来说明android.mk文件属性,我觉得用实例说话会让人更加理解其含义,所以自己写了一个比较全的工程...
Agent智能体:核心概念与架构——建立系统认知
本文摘要介绍了Agent智能体的核心概念与架构设计。主要内容包括: Agent定义与分类:阐述了Agent作为能够感知环境、决策执行的智能实体,重点分析了现代基于大语言模型(LLM)的Agent架构。 核心模块组成:详细说明了Agent的五大核心模块(感知、规划、记忆、工具和执行)及其交互流程。 UML建模展示:通过类图和序列图,清晰呈现了Agent系统的静态结构和动态执行过程。 项目结构设计:给出了模块化的代码目录结构,为实际开发提供参考框架。
android makefile prebuild
如果把source code放到Android下编译,可以参照其它Andorid.mk写对应的Makefile。 如果在编译Android之前已经有编译好的库或者配置文件时,如何加入到Android中呢? Android提供了Prebuilt编译方法,两个文件prebuilt.mk和multi_prebuilt.mk,对应的方法宏是BUILD_PREBUILT和 BUILD_MUL
基于STM32设计的太阳能智慧路灯_444
本文设计并实现了一种基于 STM32 的太阳能智慧路灯系统。系统以 STM32F103C8T6 单片机为核心,集成温湿度检测、空气质量检测、环境光照检测、行人检测和路灯故障检测等功能,实现对路灯运行环境和工作状态的实时感知。
基于simulink的多能源系统协同控制的复杂场景实例:氢燃料电池+锂电池混合动力电动汽车能量管理仿真
本文介绍了基于Simulink的氢燃料电池与锂电池混合动力电动汽车能量管理系统的建模与仿真方法。系统包含驾驶循环输入、氢燃料电池、锂电池、能量管理和电机驱动等模块,通过Simulink实现各模块的协同控制。文章详细说明了从模型创建到性能评估的完整流程,包括驾驶循环输入设置、燃料电池和锂电池子系统建模、能量管理策略设计等关键步骤。该仿真模型可验证不同工况下的系统响应和能量利用效率,为优化混合动力汽车的能量管理策略提供有效工具。通过引入更复杂的物理细节和环境因素,可进一步提升模型的实用性和准确性。
Android.mk添加第三方jar包
最近引入第三方的jar包进工程,发现光红色的两条并不起作用,加入include $(BUILD_MULTI_PREBUILT) 才起作用,而且顺序很重要,在这里把我参考的两个例子都列出来。 以下为引用例子: ------------------------------------------------------------------------------------------
WOFOST作物模型(7):6.0.6版本的PCSE使用(多层水分平衡和SNOMIN碳氮模型的集成)
wofost81文件结构如上,其中所需的参数可从github上获取然后input下有两个需要调用的功能函数py文件,需要拖到自己的运行py文件同级目录下在使用土壤模块SNOMIN进行作物生长模型模拟时,需要为土壤剖面的不同层次提供多种输入变量。这些变量通常不随年份变化,因此会统一在土壤文件中定义。本节将说明如何将这些输入变量整合到一个字典中,进而生成SNOMIN能够读取的土壤文件。
android程序设计感悟,Android Android.mk 文件一点感悟
//Rocky@20110312Android.mk文件时android 中的一个非常重要的概念。我们有以下几个方便的时候需要使用它。1:添加新的apk源码文件编译。这里我们先参考下AlarmClock的Android.mk文件LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES := $(call all-subdir-j...
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
LinePhone3.2.7(android端最新版本) sip客户端
SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/
Android.mk感悟
//Rocky@20110312 Android.mk文件时android 中的一个非常重要的概念。我们有以下几个方便的时候需要使用它。 1:添加新的apk源码文件编译。这里我们先参考下AlarmClock的Android.mk文件 LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES := $(call al
老版QQ原生表情gif动态
这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。
Android JNI学习:Jni第一行代码
一 前言 Jni开发在Android开发中是一个比较重要的模块,网上虽然有很多文章,但我一开始学习的的时候还是参考了很多,有些文章有疏漏,或者一些小错误,这里我结合了网上那些文章,加上自己的一些感悟和心得,写了这篇文章,意在以前没有接触过 JNI 开发的新手能有一个良好的开端,写出自己第一个Jni程序。二 JNI开发 首先新建一个 Android 工程,我把工程命名为JNI...
ssm框架搭建
这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载
cocos项目移植android(一)
公司派我负责cocos项目移植android平台的任务,(我自己),之前搞过一点NDK,并没有cocos项目移植经验,身边也没人去问,所以本人开启苦逼模式。各种度娘,google,到目前已经4个月了,觉得应该总结整理一下自己这一段时间以来的感悟和收获。 首先svn上下载下cocos项目到eclipse工作区间,直接作为工作项目转出就可以了,转出后的工程目录结构就是这样子滴。 首先Cla
一点关于android的个人感受
android已经很长时间没有接触了,上一份工作是做android相关的,关于系统编译,驱动移植,平台移植的相关工作。不过已经很一年多以前的事情了。从一个城市,换到另一个城市,由于工作内容不同,所以对android系统可以说是很生疏了。android的发展实在的是太快了,所以也一直想做一些相关的工作,学习或者其它的事情。由于自己给自己种种借口,所以到现在也没有展开。今天晚上有些时间,所以停下来写一
扫地僧是怎样练成的,前辈学51单片机的感悟是怎么样的
从事安卓底层开发,工作八年,个人看法 。个人感脚51就是就是搞嵌入式第一门技术。把c语言,模数电,硬件画板等第一次联系起来。在学校的时候我们的学习路线是: 1 :51单片机正在上传…重新上传取消(大二上学期的时候,我感觉我还是接触的挺晚的,嵌入式) 2:stm32+ucos ii正在上传…重新上传取消(大二下学期到大三下学期) 3:Arm+linux (大四到毕业) 4.安卓驱动 ,JNI(工作,mtk平台) 然并卵,这句话适合51,但是也是非常非常非常重要的基础。如果作为学生的话,参加比赛啥..
调试SAR SENSOR的一些感悟
手机工作时是有电磁辐射辐射的https://zhuanlan.zhihu.com/p/353591714,那怎样能降低电磁辐射呢。 sar sensor能感应到有人在使用手机,从而发消息让modem降低发射功率(从而达到标准)。如果没人在使用手机,手机可以按正常功率工作。sar sensor的工作原理不描述,芯片目前接触到是艾为的aw9610x系列,sar sensor(可理解为一个接近传感器)一般有现成的驱动,调试也比较简单。 sar sensor默认有一个...
python打印七段数码管引脚图_前辈学51单片机的感悟是怎么样的?说说看
从事安卓底层开发,工作一年,个人看法 ,处女答。个人感脚51就是就是搞嵌入式第一门技术。把c语言,模数电,硬件画板等第一次联系起来。在学校的时候我们的学习路线是:1 : 51单片机(大二上学期的时候,我感觉我还是接触的挺晚的,嵌入式)2:stm32+ucos ii (大二下学期到大三下学期)3:Arm+linux (大四到毕业)4.安卓驱动 ,JNI(工作,mtk平台)然并卵,这句话适合51,但是...
323



被折叠的 条评论
为什么被折叠?



