• Android12之报错 error: BUILD_COPY_HEADERS is obsolete(一百六十七)


    简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

    优质专栏:Audio工程师进阶系列原创干货持续更新中……】🚀

    人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

    更多原创,欢迎关注:Android系统攻城狮

    欢迎关注Android系统攻城狮

    1.前言

    本篇目的:解决Android12编译报错:error: BUILD_COPY_HEADERS is obsolete。

    2.报错:

    error: BUILD_COPY_HEADERS is obsolete. See https://android.googlesource.com/platform/build/+/master/Changes.md#copy_headers.
    21:33:52 ckati failed with: exit status 1

    3.BUILD_COPY_HEADERS/LOCAL_COPY_HEADERS描述

    • build/make/Changes.md
    ## COPY_HEADERS usage now produces warnings {#copy_headers}
    
    We've considered `BUILD_COPY_HEADERS`/`LOCAL_COPY_HEADERS` to be deprecated for
    a long time, and the places where it's been able to be used have shrinked over
    the last several releases. Equivalent functionality is not available in Soong.
    
    See the [build/soong/docs/best_practices.md#headers] for more information about
    how best to handle headers in Android.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4.BUILD_COPY_HEADERS/LOCAL_COPY_HEADERS具体替代方案描述

    • build/soong/docs/best_practices.md
    ## Headers
    
    `LOCAL_COPY_HEADERS` is deprecated. Soong modules cannot use these headers, and
    when the VNDK is enabled, System modules in Make cannot declare or use them
    either.
    
    The set of global include paths provided by the build system is also being
    removed. They've been switched from using `-isystem` to `-I` already, and are
    removed entirely in some environments (vendor code when the VNDK is enabled).
    
    Instead, use `LOCAL_EXPORT_C_INCLUDE_DIRS`/`export_include_dirs`. These allow
    access to the headers automatically if you link to the associated code.
    
    If your library uses `LOCAL_EXPORT_C_INCLUDE_DIRS`/`export_include_dirs`, and
    the exported headers reference a library that you link to, use
    `LOCAL_EXPORT_SHARED_LIBRARY_HEADERS`/`LOCAL_EXPORT_STATIC_LIBRARY_HEADERS`/`LOCAL_EXPORT_HEADER_LIBRARY_HEADERS`
    (`export_shared_lib_headers`/`export_static_lib_headers`/`export_header_lib_headers`)
    to re-export the necessary headers to your users.
    
    Don't use non-local paths in your `LOCAL_EXPORT_C_INCLUDE_DIRS`, use one of the
    `LOCAL_EXPORT_*_HEADERS` instead. Non-local exported include dirs are not
    supported in Soong. You may need to either move your module definition up a
    directory (for example, if you have ./src/ and ./include/, you probably want to
    define the module in ./Android.bp, not ./src/Android.bp), define a header
    library and re-export it, or move the headers into a more appropriate location.
    
    Prefer to use header libraries (`BUILD_HEADER_LIBRARY`/ `cc_library_headers`)
    only if the headers are actually standalone, and do not have associated code.
    Sometimes there are headers that have header-only sections, but also define
    interfaces to a library. Prefer to split those header-only sections out to a
    separate header-only library containing only the header-only sections, and
    re-export that header library from the existing library. This will prevent
    accidentally linking more code than you need (slower at build and/or runtime),
    or accidentally not linking to a library that's actually necessary.
    
    Prefer `LOCAL_EXPORT_C_INCLUDE_DIRS` over `LOCAL_C_INCLUDES` as well.
    Eventually we'd like to remove `LOCAL_C_INCLUDES`, though significant cleanup
    will be required first. This will be necessary to detect cases where modules
    are using headers that shouldn't be available to them -- usually due to the
    lack of ABI/API guarantees, but for various other reasons as well: layering
    violations, planned deprecations, potential optimizations like C++ modules,
    etc.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    5.如何解决

    include $(BUILD_COPY_HEADERS)

    修改为:

    include $(BUILD_BROKEN_USES_BUILD_COPY_HEADERS)

  • 相关阅读:
    C高级-Linux终端基础指令
    Mysql基础
    CycloneDDS配置详细说明中文版(二)
    流媒体协议之RTSP详解
    SQL之窗口函数
    八大排序源码(含优化)
    C/C++ 通过域名获取服务器真实IP地址
    3D数字孪生
    仿射变换矩阵
    Vue核心 MVVM模型 数据代理
  • 原文地址:https://blog.csdn.net/u010164190/article/details/133870257