当前位置: 首页 > news >正文

MTK使用atms获取app包名编译报错

vendor/mediatek/proprietary/hardware/mtkcam/aaa/source/common/hal3a/v3.0/Hal3AAdapter3.cpp:98:10: fatal error: 'ATMsEventMgr.h' file not found
#include <ATMsEventMgr.h>^~~~~~~~~~~~~~~~
20 warnings and 1 error generated.   

之所以编译报错,是因为添加位置不对

makefile log

$(info MTKCAM_AAA_PLATFORM=$(MTKCAM_AAA_PLATFORM))
$(info NELSON CHECK AE)

在 Android.mk 或其他 Makefile 中,$(info …) 是一个常用的命令,用于在构建过程中打印信息。这个命令会被 GNU Make 解析,并在构建过程中输出指定的字符串。
使用场景

调试:在构建过程中打印变量值或消息,帮助开发者理解构建环境或跟踪构建过程。记录:记录构建过程中的关键步骤或决策,特别是在复杂的构建系统中。条件编译:虽然这里不是条件编译,但 $(info ...) 可以用来在满足特定条件时打印信息。

在这里插入图片描述
在这里插入图片描述
-include ( T O P ) / (TOP)/ (TOP)/(MTK_PATH_SOURCE)/hardware/mtkcam/mtkcam.mk
在 Android 构建系统(使用 Android.mk 文件)中,-include 指令用于包含另一个 Makefile 文件。这允许你在一个集中的位置定义通用的构建规则和变量,然后在多个 Android.mk 文件中使用这些规则和变量。
目的和用途:

通用配置:mtkcam.mk 文件可能包含了多个 MediaTek 相机模块共享的配置,如编译器标志、头文件路径、库依赖等。代码复用:通过包含 mtkcam.mk,你可以在不同的 Android.mk 文件中重用 mtkcam.mk 中定义的规则和变量,避免在每个 Android.mk 文件中重复相同的配置。维护性:集中管理构建配置可以简化维护工作,因为任何更改只需要在 mtkcam.mk 文件中进行,而不需要在每个 Android.mk 文件中重复更改。

注意事项

确保 $(TOP) 和 $(MTK_PATH_SOURCE) 变量在包含 mtkcam.mk 之前已经被正确定义。确保 mtkcam.mk 文件存在于指定的路径下,否则 -include 指令将被忽略。如果你的项目结构发生变化,可能需要更新这些路径变量,以确保 mtkcam.mk 文件仍然可以被正确包含。

include $(CLEAR_VARS)

在 Android 的构建系统(基于 Makefile)中,include $(CLEAR_VARS) 是一个常用的指令,用于清除之前定义的所有局部变量,以便在新的模块或目标中重新定义它们。这在构建多个模块时非常有用,因为它可以确保每个模块的变量不会相互干扰。

详解 include $(CLEAR_VARS)
$(CLEAR_VARS):这是一个宏,它被定义在一个包含文件中(通常是 build/core/config.mk),当被包含时,它会清除所有之前通过 LOCAL_ 前缀定义的局部变量。这些变量包括但不限于 LOCAL_MODULE、LOCAL_SRC_FILES、LOCAL_CFLAGS、LOCAL_STATIC_LIBRARIES 等。
用途
模块隔离:在定义新的模块时,使用 include $(CLEAR_VARS) 可以确保新模块的构建配置不会受到之前模块配置的影响。这对于构建系统中的模块化和隔离性至关重要。

条件编译指令需要成对出现

在 Android.mk 文件中,使用条件编译指令(如 ifdef、ifndef、if、else 和 endif)时,确实需要成对出现。这些指令用于根据条件是否满足来包含或排除某些构建规则。

LOCAL_HEADER_LIBRARIES := 和 LOCAL_HEADER_LIBRARIES += 的区别

在 Android 的 Android.mk 构建系统中,LOCAL_HEADER_LIBRARIES 变量用于指定当前模块编译时所需包含的头文件库。这个变量的使用方法类似于其他 Makefile 变量的操作。

  1. LOCAL_HEADER_LIBRARIES :=

    • 使用 := 赋值运算符会无条件地赋值,即每次使用时都会重新赋值。
    • 如果之前有值被赋给 LOCAL_HEADER_LIBRARIES,使用 := 会覆盖之前的值。
    • 通常在 Android.mk 文件中首次定义 LOCAL_HEADER_LIBRARIES 时使用 :=
  2. LOCAL_HEADER_LIBRARIES +=

    • 使用 += 赋值运算符会追加值,即在已有的值基础上添加新的值。
    • 这允许你在不同的 Android.mk 文件中或在同一个文件的不同部分多次添加头文件库,而不会覆盖之前的设置。
    • 如果 LOCAL_HEADER_LIBRARIES 已经定义,+= 会将新的头文件库添加到现有的列表中。

示例

假设你有两个 Android.mk 文件或在同一文件的不同部分需要包含不同的头文件库:

文件 A:

LOCAL_HEADER_LIBRARIES := libfoo_headers

文件 B:

LOCAL_HEADER_LIBRARIES += libbar_headers

在文件 B 中使用 += 会将 libbar_headers 添加到由文件 A 定义的 LOCAL_HEADER_LIBRARIES 中,结果为 libfoo_headers libbar_headers

如果文件 B 使用 :=,则会覆盖文件 A 中的设置,结果仅为 libbar_headers

注意事项

  • 当你在多个 Android.mk 文件中包含同一个模块,或者在同一个文件中多次设置 LOCAL_HEADER_LIBRARIES 时,使用 += 可以确保所有的头文件库都被包含。
  • 如果你确定要从头开始定义 LOCAL_HEADER_LIBRARIES,或者你希望覆盖之前的设置,使用 :=
  • 在大多数情况下,如果你只是想添加额外的头文件库而不改变现有的设置,+= 是更好的选择。

总之,:=+= 的选择取决于你是否需要覆盖现有的 LOCAL_HEADER_LIBRARIES 值,或者只是追加新的值。


http://www.mrgr.cn/news/58426.html

相关文章:

  • 渗透测试导学
  • 【MySQL】C语言连接MySQL数据库3——事务操作和错误处理API
  • 【Java设计模式】1-15章
  • springboot常见题目
  • 软件架构复用的类型
  • docker打包
  • qss设置Q_PROPERTY不生效
  • 从零搭建Lazada自养号高效测评体系
  • 社交媒体与客户服务:新时代的沟通桥梁
  • vue2项目 上传文件时部分信息上传失败,并下载失败信息(.xlsx文件模板)
  • 什么是域名?什么是泛域名?
  • 多线程加锁与手搓智能指针实践
  • 深入拆解TomcatJetty——Tomcat如何实现IO多路复用
  • 获取每个访客的第一条访问日志(获取网站的UV)
  • 「 自动化测试 」面试题..
  • 请简述同步和异步的区别。
  • 【嵌入式】全面解析温度传感器:PT1000、热电偶、热敏电阻与红外传感器的原理与应用
  • 【密码学】隐语HEU同态加密算法解读
  • 5G NR NARFCN计算SSB中心频率MATLAB实现
  • 『 Linux 』网络传输层 - UDP
  • Python自动化测试+邮件推送+企业微信推送+Jenkins
  • css绘制s型(grid)
  • DDD重构-实体与限界上下文重构
  • 使用mock进行接口测试教程
  • 数据库之旅:从MySQL起航,领略数据的海洋
  • 基于KV260的基础视频链路通路(MIPI+Demosaic+VDMA)