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

Android13中Android.mk和Android.bp预编译多种架构文件

需求: 

1, 当前有多个架构的config文件,但是需要不同架构使用不同config文件

2, 必须将config文件拷贝到out/host目录下

常规思路 

在Android.bp中, 一般在编译多架构文件时,都会使用arch属性,如例子: 

cc_test {
    name: "kselftest_breakpoints_tests",
    relative_install_path: "linux-kselftest/breakpoints",
    srcs: [
        "tools/testing/selftests/breakpoints/step_after_suspend_test.c",
    ],
    defaults: ["kselftest_defaults"],
    arch: {
        arm: {
            enabled: false,
        },
        arm64: {
            srcs: [
                "tools/testing/selftests/breakpoints/breakpoint_test_arm64.c",
            ],
        },
        x86: {
            srcs: [
                "tools/testing/selftests/breakpoints/breakpoint_test.c",
            ],
        },

    },
}
 

Androd.bp中预编译主要有如下: 

var prebuiltTypes = map[string]string{
    "SHARED_LIBRARIES": "cc_prebuilt_library_shared",
    "STATIC_LIBRARIES": "cc_prebuilt_library_static",
    "EXECUTABLES":      "cc_prebuilt_binary",
    "JAVA_LIBRARIES":   "java_import",
    "ETC":              "prebuilt_etc",
}

 Android.bp相关文档中: 

所以可能满足需求的就是:prebuilt_etc_host,但是也没有找到arch属性: 

例子: 

prebuilt_etc_host {
    name: "kernel_config",
    src: "config",
    filename: "config",
    sub_dir: "kernel_config",
}

 即使强行加上arch,其实也是不生效的,如: 

prebuilt_etc_host {
    name: "kernel_config",
    src: "config",
    arch: {
        arm: {
            src: "arm/config",
        },
        arm64: {
            src: "aarch64/config",
        },
        x86: {
            src: "x86/config",
        },
        x86_64: {
            src: "x86_64/config",
        },
    },
    filename: "config",
    sub_dir: "kernel_config",
}

所以只能通过相关模板找解决方法,其中发现了TARGET_PREBUILT_TAG这个变量,这个变量的值可以通过 get_bulid_var获取: 

 get_build_var TARGET_PREBUILT_TAG
android-x86

也可以是android-arm64, 可以利用这个来进行区分。

解决方法

1,建立目录结构

android-arm  android-arm64  Android.bp  Android.mk  android-x86  android-x86_64
 

2, Android.bp和Android.mk编写

vim Android.bp

subdirs=["*"]

 vim Androd.mk

LOCAL_PATH:= $(call my-dir)


include $(CLEAR_VARS)
LOCAL_MODULE := config
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(HOST_OUT)/etc/kernel_config
LOCAL_SRC_FILES := $(TARGET_PREBUILT_TAG)/config
LOCAL_IS_HOST_MODULE := true
include $(BUILD_PREBUILT)


http://www.kler.cn/a/318627.html

相关文章:

  • 深入探索:Scrapy深度爬取策略与实践
  • 批量重命名Excel文件并排序
  • Dockerfile的使用
  • opencv常用api
  • 使用API有效率地管理Dynadot域名,编辑账户中whois联系人信息
  • 设计模式之装饰器模式(SSO单点登录功能扩展,增加拦截用户访问方法范围场景)
  • spark初步探索
  • LD3320语音识别模块的简单应用
  • 从 HDFS 迁移到 MinIO 企业对象存储
  • thinkphp6.0 伪静态失效404(win下)
  • 洛汗2保姆级辅助教程攻略:VMOS云手机辅助升级打怪!
  • 【C++取经之路】红黑树封装set
  • Qt 每日面试题 -1
  • TDengine 学习与使用经验分享:业务落地实践与架构升级探索
  • arkts基础知识
  • 获得ASPICE认证需要满足哪些条件?
  • GIS OGC之WMTS地图服务,通过Capabilities XML描述文档,获取matrixIds,origin,计算resolutions
  • 力扣 简单 206.反转链表
  • 跨平台数据库工具DataGrip v2024.2全新发布——增加智能刷新功能
  • 物理学基础精解【16】
  • 人机之间的边界
  • 最近的生活
  • 动态住宅IP的多元化应用
  • [Patriot CTF 2024]
  • 【解决】chrome 谷歌浏览器,鼠标点击任何区域都是 Input 输入框的状态,能看到输入的光标
  • WPF-基础-02 DispatcherObject类