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 变量的操作。
-
LOCAL_HEADER_LIBRARIES :=
:- 使用
:=
赋值运算符会无条件地赋值,即每次使用时都会重新赋值。 - 如果之前有值被赋给
LOCAL_HEADER_LIBRARIES
,使用:=
会覆盖之前的值。 - 通常在
Android.mk
文件中首次定义LOCAL_HEADER_LIBRARIES
时使用:=
。
- 使用
-
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
值,或者只是追加新的值。