技术经验分享: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
相关文章
|
Java Android开发 C++
Android Studio JNI 使用模板:c/cpp源文件的集成编译,快速上手
本文提供了一个Android Studio中JNI使用的模板,包括创建C/C++源文件、编辑CMakeLists.txt、编写JNI接口代码、配置build.gradle以及编译生成.so库的详细步骤,以帮助开发者快速上手Android平台的JNI开发和编译过程。
1119 1
|
存储 前端开发 测试技术
Android kotlin MVVM 架构简单示例入门
Android kotlin MVVM 架构简单示例入门
302 1
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
498 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
编译器 Android开发
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
|
Ubuntu Shell API
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
|
2月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
337 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
2月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
313 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
2月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
723 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
3月前
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
583 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
|
2月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
190 0

热门文章

最新文章