技术经验分享: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天前
|
Java API 开发工具
如何将python应用编译到android运行
【6月更文挑战第27天】本文介绍在Ubuntu 20上搭建Android开发环境,包括安装JRE/JDK,设置环境变量,添加i386架构,安装依赖和编译工具。并通过`p4a`命令行工具进行apk构建和清理。
20 6
如何将python应用编译到android运行
|
7天前
|
C# Android开发 开发者
Android gradle编译时字节码处理
Android gradle编译时字节码处理
13 1
|
8天前
|
安全 Java Android开发
安卓开发中的新趋势:Kotlin与Jetpack的完美结合
【6月更文挑战第20天】在不断进化的移动应用开发领域,Android平台以其开放性和灵活性赢得了全球开发者的青睐。然而,随着技术的迭代,传统Java语言在Android开发中逐渐显露出局限性。Kotlin,一种现代的静态类型编程语言,以其简洁、安全和高效的特性成为了Android开发中的新宠。同时,Jetpack作为一套支持库、工具和指南,旨在帮助开发者更快地打造优秀的Android应用。本文将探讨Kotlin与Jetpack如何共同推动Android开发进入一个新的时代,以及这对开发者意味着什么。
|
3天前
|
Java 开发工具 Android开发
探索Android与iOS开发的差异:平台选择对项目成功的影响
在移动应用开发的广阔天地中,Android和iOS两大平台各自占据着半壁江山。本文将深入探讨这两个平台在开发过程中的关键差异点,包括编程语言、开发工具、用户界面设计、性能优化以及市场覆盖等方面。通过对这些关键因素的比较分析,旨在为开发者提供一个清晰的指南,帮助他们根据项目需求和目标受众做出明智的平台选择。
|
4天前
|
编解码 Android开发 iOS开发
深入探索Android与iOS开发的差异与挑战
【6月更文挑战第24天】在移动应用开发的广阔舞台上,Android和iOS两大操作系统扮演着主角。它们各自拥有独特的开发环境、工具集、用户基础及市场策略。本文将深度剖析这两个平台的开发差异,并探讨开发者面临的挑战,旨在为即将踏入或已在移动开发领域奋斗的开发者提供一份实用指南。
26 13
|
3天前
|
监控 Android开发 iOS开发
探索Android与iOS开发的差异:平台、工具和用户体验的比较
【6月更文挑战第25天】在移动应用开发的广阔天地中,Android和iOS两大平台各领风骚,它们在开发环境、工具选择及用户体验设计上展现出独特的风貌。本文将深入探讨这两个操作系统在技术实现、市场定位和用户交互方面的关键差异,旨在为开发者提供一个全景式的视图,帮助他们在面对项目决策时能够更加明智地选择适合自己项目需求的平台。
|
5天前
|
XML Java 开发工具
Android Studio开发Android TV
【6月更文挑战第19天】
|
2天前
|
缓存 测试技术 Shell
详细解读Android开发命令行完全攻略
详细解读Android开发命令行完全攻略
|
9天前
|
存储 Java 数据库连接
Android Java开发异步
【6月更文挑战第15天】
|
7天前
|
Java 开发工具 Android开发
安卓与iOS开发差异解析
【6月更文挑战第21天】本文旨在深入探讨安卓和iOS两大移动操作系统在应用开发过程中的主要差异。通过对比分析,揭示各自的设计哲学、编程语言选择、用户界面构建、性能优化策略以及发布流程的异同。文章将提供开发者视角下的实用信息,帮助他们更好地理解各自平台的特点和挑战,从而做出更明智的开发决策。