IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android 10 根文件系统和编译系统(八):Android.mk 标志和控制编译 -> 正文阅读

[移动开发]Android 10 根文件系统和编译系统(八):Android.mk 标志和控制编译

配套系列教学视频链接:

Android 10.0 AOSP源码编译:https://edu.csdn.net/course/detail/35479

Android 10.0 根文件系统和编译系统:https://edu.csdn.net/course/detail/35480?


说明

系统:AOSP Android10.0

设备:Android模拟器

前言

Android.mk中可以使用很多标志位和控制逻辑, 语法遵从Makefile,本章节介绍常见的一些用法。


一, gcc中用到的各种标志

LOCAL_C_INCLUDES := -DMYDBG=1

LOCAL_C_INCLUDES?+= -DHAVE_CONFIG_H

LOCAL_C_INCLUDES += -DLOG_TAG=\"my_tag\"

LOCAL_C_INCLUDES += -g -O2 -Wall ?\

?-Wno-unused-parameter \

-Wno-implicit-function-declaration \

-Wno-unused-function \

-Wno-unused-variable ?\

????????-Wno-incompatible-pointer-types-discards-qualifiers \

????????-Wno-format \

????????-Wno-error \

????????-Wno-date-time \

-W-no-xxx在编译的时候用会比较多, 在Android系统中,编译器要求比较严格, 比如变量定义但没使用, 类型从大转换成小, 都会报错,根据出错信息添加-W-no-xx基本可以解决这种问题。

二, Android.mk中完成shell 命令?

在mk文件中经常要会用到shell脚本, 如下例子:

LOCAL_POST_INSTALL_CMD := \

cp -ravf ?lib/*.so ?$(TARGET_OUT_VENDOR_SHARED_LIBRARIES);

?通过make或者mmm命令编译时,?LOCAL_POST_INSTALL_CMD这个变量赋值的内容, 将会自动按照shell命令执行

或者用如下用法:

current_tag := $(shell git -C $(LOCAL_PATH) describe --tags)

三,条件判断

NEED_APP := y

ifeq ($(NEED_APP), y)

????????xxx

else

????????yyy

endif

如判断当前Android版本:

ifeq (1,$(strip $(shell expr $(PLATFORM_SDK_VERSION) \>= 27)))

? ? ? ? xxx

else

? ? ? ? yyy

endif

上面的意思是, 如果当前Android源码版本大于等于Android 8 (Android O,对应的API 级别是27)。 expr命令是用于数学计算的。?

四,?Android.mk中进行调试

$(warning ?"++PLATFORM_SDK_VERSION = $(PLATFORM_SDK_VERSION)")

$(info ?"++branch = $(current_branch)")

调试比较重要,类似我们在c代码中使用printf一样。

总结

以上只是我在开发中常用的, 后期如果有更多发现, 再补充进来

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-08-30 12:09:58  更:2021-08-30 12:12:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/31 6:00:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码