android - 在启用 VNDK 的情况下构建供应商模块时使用 NDK 标头
问题描述
我有一个使用 AOSP (android 9.0.0_r35) 构建的本机供应商模块。该模块使用android/input.h
标题。请注意,此标头包含在 android NDK中。
启用VNDK时,构建模块失败并fatal error: 'android/input.h' file not found
出现错误。
这是由 android 构建系统(请参阅compiler.go)在CommonGlobalIncludes
启用 VNDK 时未导出,因此 frameworks/native/include(包含 input.h)不在包含列表中。
我尝试将 libandroid 添加到 LOCAL_SHARED_LIBRARIES 但没有成功。提到标头的android 文档并不指 NDK 包含。这个文件应该保持稳定,所以我认为从供应商模块中使用它是安全的。
是否包含一个模块(LOCAL_SHARED_LIBRARIES 或 LOCAL_HEADER_LIBRARIES)以允许使用 NDK 标头?否则,添加$(ANDROID_BUILD_TOP)/out/soong/ndk/sysroot/usr/include/
到包含路径是否安全?
测试代码:Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE:= testIncludeInput_vendor
LOCAL_PROPRIETARY_MODULE := true
LOCAL_SRC_FILES := test.cpp
LOCAL_SHARED_LIBRARIES := libandroid
include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE:= testIncludeInput_system
LOCAL_SRC_FILES:= test.cpp
LOCAL_SHARED_LIBRARIES := libandroid
include $(BUILD_STATIC_LIBRARY)
测试.cpp:
#include <android/input.h>
解决方案
推荐阅读
- c++ - 存储多个可变大小的标准数组
- gitlab - 如何使用 gitbeaker 删除 GitLab 上的项目?
- android - Google Play 服务丢失或未经正确许可以及其他错误永久破坏了我的 blanc 应用
- wordpress - WordPress | 如何限制非管理员访问 /uploads 文件夹
- spring-boot - 更新数据库中的记录时,Spring Boot“只读集合不支持操作”
- typescript - 可写存储不能正确更新值?
- linux - 如何在 Linux 中创建/安装自定义键盘布局
- express - 如何在 Node JS 上获取有关经过身份验证的用户的信息
- node.js - 术语“NODE_ENV=development”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称
- mysql - 如何在 Jpa 存储库中按字段列表名称排序