96SEO 2026-07-23 00:33 2
Soong 是 Android 后引入的建立程序,旨在取代更快的编译速度和更严谨的依赖管理。按理说,
接收文件列表的属性也支持使用 glob 模式和输出方法

Glob 模式可以包含标准的 Unix 通配符 。也可以包含单方法元素 **,例如 java/**/*.java 会匹配 java/Main.java 和 java/com/android/Main.java。
输出方法 格式为 :module 或 :module{.tag}。module 是产出输出文件的模块名,它会 为这些文件的列表。可选的 {.tag} 后缀允许模块根据不同标签产出不同的输出列表。这常用于引用 filegroup 模块。
变量的作用域限于声明它的文件及其子 Android.bp 文件。变量是不可变的,但有一个例外:可以使用 += 进行追加赋值。但仅限于该变量被引用之前。
支持 C 风格的多行注释 /* */ 和 C++ 风格的单行注释 //。
变量和属性是强类型的。变量根据第一次赋值动态确定类型,属性根据模块类型静态确定类型。支持的类型包括:
映射可以包含任何类型的值,包括嵌套映射。列表和映射在最终一个值后可以有逗号。字符串中的双引号可以使用 " 转义。
字符串、字符串列表和映射可以使用 + 运算符追加。整数可以使用 + 求和。追加映射会产生键的并集,并追加两个映射中都存在的任何键的值。
建立过程被组织成“包”。怎么说呢,包是相关文件的集合,还有它们之间以模块形式体现的依赖规范。包定义为包含 Android.bp 文件的目录。包名是其相对于顶层目录的方法。一个包包含其目录下及其所有子目录下的所有文件,除非子目录中本身包含 Android.bp 文件。
In
Android.bp
。加入
soong_namespace {..}
,即可定义命名空间。该方法下所有模块名必须唯一,但可以与外部重名。
# 在设备配置目录下的 BoardConfig.mk 中设置
$
hostsupported: true
,同时支持手机和电脑;devicesupported: false
,仅仅电脑,架构差异化配置:
arch
,其取值
arm64
,x8664
,等。目标设置:
target
,其取值
android
,host
,等,android源码使用频繁的就是arch,这不就妥妥的神似厂商配置,VINTF机制,当程序启动时它会扫描所有的,vintffragments,并把它们拼成一个完整的 Device Manifest。如果你的服务跑起来了但没有对应的 VINTF,声明。客户端(比如 Framework,层)就无法通过 getService,找到。这个属性通常出现在
ccbinary
。或
cclibrary
,等可执行模块中;列表内为xml配置文件,xml文件内定义了接口的版本、名称和实例;如下面示例,
"device"
"hidl" // 服务名字android.hardware.automotive.vehicle.IVehicle/default
android.hardware.automotive.vehicle
hwbinder //aidl无需配置
IVehicle
default
// aidl format。也可以直接使用fqname代替interface
IVehicle/default
配置了
vintffragments
,后编译程序会自动将这个 XML,文件拷贝到:,,/vendor/etc/vintf/manifest/
,(最常见,因为 VHAL,属于 Vendor)
,或者
/system/etc/vintf/manifest/
,自定义规则,Android,建立程序中,genrule
,是一个主要的“逃生通道”。当内置的模块类型(如
ccbinary
,或
java_library
。)无法满足你的特定需求时
genrule
,允许你通过,运行自定义的 Shell 命令,,来生成文件。,本质是一个,中间产物生成器。,它将一组输入文件,,:根据协议文件(如 JSON。XML,Excel,D娱乐)自动生成 C++/Java 源代码或头文件。怎么说呢,格式转换。: 将原始图片转为 WebP,或将配置文件转为二进制格式。信息注入。: 在编译期获取 Git 版本号、编译时间,并写入代码。文件打包/解压。
: 将多个碎片文件合并,或从预编译的压缩包中提取特定库。主要属性这方面,
可以将其处理过程分为以下三个主要阶段:,发现与解析阶段 Soong 的解析引擎 Blueprint 是一个深度优先 的扫描过程。包 Package 的界定 Soong 会扫描源码树中的所有目 录。一个目 = 一个包 :只要目 录下有 Android.b p,它就是一个独立 的包。作 用域递 :一个包包含当前目 录及其子目 录,直到在某个子目 录下发现另一个 Android.b p 为止。
词法 与 类型检查 Soong 读取 An droid.b p 并将其映射到 Go 言定 的结构 体 Struct 中 由于是强类 型检查 如果你在 c c_binary 中写了一个该模 型不支持的属性 解析会在初期直接报错退出
命名空 Namespace 间隔 这是处 “组织关系”的第 道防墙 如果在 device/ 或 vendor/ 目 下发现了 s oongnamespace {} 解析器会把该方法下的模 “装进盒子” 关 点 这些模 默认对全 不见 除非在程序的 Makefile 中通 PRODUCTSOONG_NAMESPACES 量激 了该方法
串联 模块之间并不是通过文 件包含 Include 来组织的 而是通过逻 用
纵向关系 :继承与复用 通过 d efaults 属性 Soo ng 实 了属性 的层级传
底层定 cc_defaults 上层模 通过名字用 解析逻 在解析阶 Soo ng 会自动将 d efaults 中的属性 值合 到用 它 的模 中
横向关系 :依赖 与产物 模块通 s haredlibs staticli bs header_li bs 相互连接
解析逻 Soo ng 会根据模 名 name 在已解析 的内存表中查找 跨 包用 通 :modulename 或 :filegroupname 模块可 以跨越物理路 直接获 其他包的文件或产物
确定 编不编的主要逻 解析了 An droid.b p并不代表里面的代 码就会被编
静态确定 :活跃状 路激 对于厂 代 码必 在 B oardConfig.mk 中通 PRODUCTSOONGNAMESPACES 明了该方法 该 .bp 里 的模 才会被标记 为“活跃 Active ” 属 开关 如果模 显示明了 e nabled false 它会被直接剔除出构 图
动态触 Soo ng 用 “按需构 ” 一个活跃 的模只有在以下两种情况下才会被真正触 编 作为镜像组件 该模 名出现在了 P RODUCT_PACKAGES 列里 作为依赖组件某个已经确 定要编 的模比如系 核服 dependency 了这个模
Go语言配合使用 当 bp声明式语法无 法满足复杂逻 如源 列 时 就需要用到 Go 实现原理 Soo ng 的构逻 是用 Go 编写的 基于 Blueprint框 它通过反射 Reflection 将 bp定 解析 为 Go 结 体 并生 成 Ninja构 则 要在 Go 中写复杂逻 通常有三个步 定义 Go 模块 编写处 理逻 注册插件 通 a ndroid.RegisterModuleType 注册自 定 的模 类型 在 BP 中用 bootstrapgopackage载 你 的 Go 代 码
Go 处理后的属 有效应遵循 “块在哪逻在哪”的则 它不是通过物理路 强行覆 而是通过 BP 文 件引 系 Defaults/Module Type 来生效 如果你在子目 An droid.b p 里定 了一个模 并用了该插件 那么该插件逻涉及到的所有文 当前目 及子目 下涉及 srcs都会受到影 这里就不写示例 技术变化都很快 但基础技术 理论永远都是那些 作者希望在余后的生活中 对常用技术点进行基础知识分享 如果你觉得文章写的不错 请给予关注和点赞 如果文章存在错误 也请多多指教
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback