Myhera_L 2023-03-09 21:51 采纳率: 0%
浏览 72
已结题

安卓bp文件动态编译

在主文件夹中

soong_config_module_type {
    name: "adv_vs_vda_cc_defaults",
    module_type: "cc_defaults",
    config_namespace: "adv_vs_vda",
    variables: ["adv_or_vda"],
    properties: ["cflags", "include_dirs", "static_libs", "whole_static_libs", "srcs", "required"],
}

然后再其他文件中

bootstrap_go_package {
    name: "soong-ADV",
    pkgPath: "android/soong/ADV",
    deps: [
        "blueprint",
        "blueprint-pathtools",
        "soong",
        "soong-android",
        "soong-cc",
        "soong-genrule",
    ],
    srcs:[
        "adv.go"
    ],
    pluginFor:["soong_build"],
}

soong_config_module_type_import {
    from: "device/AAA/missi/Android.bp",
    module_types: [
         "adv_vs_vda_cc_defaults",
    ],
}

adv_vs_vda_cc_defaults{
    name: "adv_stack_cc-default",

    soong_config_variables: {
        adv_or_vda: {
           advvda: {
              cflags: [
                 
              ],
           }
       }
   }
}

然后go语言编写

package ADV

import (
    "android/soong/android"
    "android/soong/cc"
    "fmt"
)

func init() {
    android.RegisterModuleType("adv_vs_vda_cc_defaults", AdvAduioFeature_Cflag)
}

func AdvAduioFeature_Cflag() (android.Module) {
    module := cc.DefaultsFactory()
    android.AddLoadHook(module, AdvAduioFeature_Defaults)
    return module
}

func AdvAduioFeature_Defaults(ctx android.LoadHookContext) {
    type props struct {
        Soong_config_variables struct {
            Adv_or_vda struct {
                Advvda struct {
                    Cflags []string
                }
            }
        }
    }
    p := &props{}

    p.Soong_config_variables.Adv_or_vda.Advvda.Cflags = []string{"-DAAAAA=1"}
    ctx.AppendProperties(p)
}

但是编译失败了,out/host/linux-x86/bin/go/soong-BTIF/pkg/android/soong/BTIF.a
应该是实际的结构并不是这么弄的,哪位大 佬知道该怎么写,万分感谢
可以参考一下:https://android.googlesource.com/platform/build/soong/+/refs/heads/master/android/soong_config_modules.go

  • 写回答

4条回答 默认 最新

  • 「已注销」 2023-03-09 21:56
    关注

    “Devil组”引证GPT后的撰写:

    • 首先,在 adv_vs_vda_cc_defaults 中,定义了变量 adv_or_vda,但在其他文件中的 adv_vs_vda_cc_defaults 模块实例化中并没有使用该变量。
    • 其次,在 adv_vs_vda_cc_defaults 模块实例化中,没有指定 defaults 属性,这会导致在 AdvAduioFeature_Cflag 函数中使用 cc.DefaultsFactory() 时会抛出一个 panic。因此,要将 adv_vs_vda_cc_defaults 实例化的 defaults 属性设置为 "adv_stack_cc-default"。
    • 此外,在 AdvAduioFeature_Defaults 函数中,在尝试更新属性时使用了一个未定义的结构体 Adv_or_vdastruct 和 Advvdastruct。要将它们改为与 adv_vs_vda_cc_defaults 中定义的变量和属性匹配的名称。
    • 最后,在 adv.go 中,要将 AdvAduioFeature_Cflag 函数中的 android.Module 类型改为 android.ModuleFactory 类型。
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 3月17日
  • 赞助了问题酬金15元 3月10日
  • 修改了问题 3月10日
  • 修改了问题 3月10日
  • 展开全部

悬赏问题

  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用