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

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)

相关文章:

  • 碳纳米管成核过程中 subsurface carbide
  • Redis实战篇
  • 智能工厂的设计软件 设计目标:关乎对象的实践法则的认识论原则
  • 国产数据库盘点-亚信安慧AntDB独立模式部署
  • C++--类型转换
  • 【小bug】使用 RestTemplate 工具从 JSON 数据反序列化为 Java 对象时报类型转换异常
  • HTTP(超文本传输协议)基础
  • 从kafka和zookeeper中获取生产和消费偏移量
  • 手机也可以更换任意IP地址吗?
  • 【FasAPI】使用FastAPI来实现一个基于RBAC(基于角色的访问控制)的用户权限控制系统
  • Mysql之索引优化
  • 如意与葫芦:解读八卦福·门牌中的吉祥元素
  • K8s Calico替换为Cilium,以及安装Cilium过程(鲁莽版)
  • 嵌入式项目:STM32平衡车详解 (基础知识篇) (基于STM32F103C8T6)
  • Pytest-allure如何在测试完成后自动生成完整报告?
  • CVE-2024-46101
  • 本地服务器和云服务器区别在哪里
  • MobaXterm基本使用 -- 服务器状态、批量操作、显示/切换中文字体、修复zsh按键失灵
  • Rust 函数
  • 【JAVA高级】如何使用Redis加锁和解锁(一)、Lua脚本执行原理及流程
  • 冯德莱恩:欧美贸易谈判前不会前往美国会见特朗普
  • 上汽享道出行完成13亿元C轮融资,已启动港股IPO计划
  • 央行谈MLF:逐步退出政策利率属性回归流动性投放工具
  • “降息潮”延续!存款利率全面迈向“1时代”
  • 98年服装“厂二代”:关税压力下,我仍相信中国供应链|湃客Talk
  • 印度外交秘书:“朱砂行动”不针对军事设施,无意升级事态