技术经验分享:Android编译命令m、mm、mmm区别及工程搭建示例

简介: 技术经验分享:Android编译命令m、mm、mmm区别及工程搭建示例

"

1、要使用m、mm、mmm命令对Android代码进行模块编译,需要先执行如下命令初始化环境。

?12source build/envsetup.shlunch

执行lunch时一般会通过命令行提示选择版型,输入对应的序号回车即可。

2、各命令作用及用法:

mmm命令:编译指定路径下的模块,需要指定模块路径(必须为该模块的根目录,包含Android.mk的目录)。

mm命令:编译当前目录下的模块,需要进到模块所在目录,本质上跟mmm没什么区别。

m命令:编译全部模块。

3、如下为一个简单呼吸灯PWM控制调用示例:

(1)main.c

?123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051#include #include #include #include #include //代码效果参考:https://v.youku.com/v_show/id_XNjQwNjg0MTMwMA==.html

#include #include typedef struct PWM_CONFIG_S{int duty_cycle; //占空比int period; //周期int enable_flag; //开关}PWM_CONFIG; #define NODE_NAME ""/dev/breathing_light"" int main(int argc, char *argv【】){PWM_CONFIG pwm_config = {0};int fd = -1;int ret = -1; fd = open(""/dev/breathing_light"", O_RDWR);if(fd < 3){printf(""open %s fail!\n"", NODE_NAME);} printf(""please input params:【period duty_cycle enable_flag】:\n"");printf(""Example:1000000 500000 1\n""); scanf(""%d %d %d"",&pwm_config.period, &pwm_config.duty_cycle, &pwm_config.enable_flag);printf(""--- set period ->%d\n"",pwm_config.period);printf(""--- set duty_cycle ->%d\n"",pwm_config.duty_cycle);printf(""--- set enable_flag ->%d\n"",pwm_config.enable_flag);ret = ioctl(fd, 0, &pwm_config);if(ret >= 0){printf(""control pwm: period:%d duty_cycle:%d %s success!\n"",pwm_config.period,pwm_config.duty_cycle,pwm_config.enable_flag?""ON"":""OFF"");}else{printf(""control //代码效果参考: https://v.youku.com/v_show/id_XNjQwMDQwMDAyOA==.html

pwm fail!!\n"");} if(fd > 0)close(fd);return 0;}

(2)Android.mk

?1234567891011121314151617LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS)LOCAL_MODULE := pwm_testLOCAL_PROPRIETARY_MODULE := true#ALL_DEFAULT_INSTALLED_MODULES += $(LOCAL_MODULE)LOCAL_SRC_FILES := \main.c LOCAL_SHARED_LIBRARIES := \libbase \liblog \libdl \libutils \libhardware include $(BUILD_EXECUTABLE)

(3)工程编译:

进入到Android.mk 所在的目录下,执行mm命令,或者在SDK根目录下执行 mmm 【Android.mk文件所在路径】 即可开始编译。

这样编译的时间相对整包编译可以节省很多,调试时我们只需要将编译出来的可执行文件或者动态库文件替换到板子子上验证即可。


"
image.png
相关文章
|
2月前
|
安全 Android开发 iOS开发
安卓与iOS的较量:技术深度对比
【10月更文挑战第18天】 在智能手机操作系统领域,安卓和iOS无疑是两大巨头。本文将深入探讨这两种系统的技术特点、优势以及它们之间的主要差异,帮助读者更好地理解这两个平台的独特之处。
48 0
|
26天前
|
安全 搜索推荐 Android开发
揭秘安卓与iOS系统的差异:技术深度对比
【10月更文挑战第27天】 本文深入探讨了安卓(Android)与iOS两大移动操作系统的技术特点和用户体验差异。通过对比两者的系统架构、应用生态、用户界面、安全性等方面,揭示了为何这两种系统能够在市场中各占一席之地,并为用户提供不同的选择。文章旨在为读者提供一个全面的视角,理解两种系统的优势与局限,从而更好地根据自己的需求做出选择。
68 2
|
28天前
|
安全 搜索推荐 Android开发
揭秘iOS与安卓系统的差异:一场技术与哲学的较量
在智能手机的世界里,iOS和Android无疑是两大巨头,它们不仅定义了操作系统的标准,也深刻影响了全球数亿用户的日常生活。本文旨在探讨这两个平台在设计理念、用户体验、生态系统及安全性等方面的本质区别,揭示它们背后的技术哲学和市场策略。通过对比分析,我们将发现,选择iOS或Android,不仅仅是选择一个操作系统,更是选择了一种生活方式和技术信仰。
|
2月前
|
安全 Android开发 iOS开发
iOS与安卓:技术生态的双雄争霸
在当今数字化时代,智能手机操作系统的竞争愈发激烈。iOS和安卓作为两大主流平台,各自拥有独特的技术优势和市场地位。本文将从技术架构、用户体验、安全性以及开发者支持四个方面,深入探讨iOS与安卓之间的差异,并分析它们如何塑造了今天的移动技术生态。无论是追求极致体验的苹果用户,还是享受开放自由的安卓粉丝,了解这两大系统的内在逻辑对于把握未来趋势至关重要。
|
2月前
|
安全 搜索推荐 Android开发
揭秘iOS与Android系统的差异:一场技术与哲学的较量
在当今数字化时代,智能手机操作系统的选择成为了用户个性化表达和技术偏好的重要标志。iOS和Android,作为市场上两大主流操作系统,它们之间的竞争不仅仅是技术的比拼,更是设计理念、用户体验和生态系统构建的全面较量。本文将深入探讨iOS与Android在系统架构、应用生态、用户界面及安全性等方面的本质区别,揭示这两种系统背后的哲学思想和市场策略,帮助读者更全面地理解两者的优劣,从而做出更适合自己的选择。
|
2月前
|
存储 前端开发 测试技术
Android kotlin MVVM 架构简单示例入门
Android kotlin MVVM 架构简单示例入门
31 1
|
2月前
|
安全 Android开发 iOS开发
安卓vs iOS:探索两种操作系统的独特魅力与技术深度###
【10月更文挑战第16天】 本文旨在深入浅出地探讨安卓(Android)与iOS这两种主流移动操作系统的特色、优势及背后的技术理念。通过对比分析,揭示它们各自如何塑造了移动互联网的生态,并为用户提供丰富多彩的智能体验。无论您是科技爱好者还是普通用户,都能从这篇文章中感受到技术创新带来的无限可能。 ###
55 2
|
2月前
|
机器学习/深度学习 人工智能 Android开发
安卓与iOS:技术演进的双城记
【10月更文挑战第16天】 在移动操作系统的世界里,安卓和iOS无疑是两个最重要的玩家。它们各自代表了不同的技术理念和市场策略,塑造了全球数亿用户的移动体验。本文将深入探讨这两个平台的发展历程、技术特点以及它们如何影响了我们的数字生活,旨在为读者提供一个全面而深入的视角,理解这两个操作系统背后的哲学和未来趋势。
33 2
|
29天前
|
搜索推荐 安全 Android开发
安卓与iOS的哲学对话:技术生态中的选择与命运
【10月更文挑战第24天】 在智能设备的世界里,安卓和iOS不仅是操作系统的简单对立,它们代表了不同的技术哲学和生态策略。本文将探讨这两种系统背后的设计理念、用户体验差异以及它们如何塑造我们的数字生活,从而引发对于“我们如何选择技术”这一命题的深入思考。
|
29天前
|
安全 5G Android开发
安卓与iOS的较量:技术深度解析
【10月更文挑战第24天】 在移动操作系统领域,安卓和iOS无疑是两大巨头。本文将深入探讨这两个系统的技术特点、优势和不足,以及它们在未来可能的发展方向。我们将通过对比分析,帮助读者更好地理解这两个系统的本质和内涵,从而引发对移动操作系统未来发展的深思。
45 0