1.海王星(Neptune)系列和大禹(DAYU)系列OpenHarmony智能硬件配置解决方案
2.Android 源码根目录介绍
3.Android VNDK/VSDK Snapshot编译框架
海王星(Neptune)系列和大禹(DAYU)系列OpenHarmony智能硬件配置解决方案
海王星(Neptune)系列和大禹(DAYU)系列OpenHarmony智能硬件配置解决方案,源码通过规范的适配目录树规则和源码路径规则,为产品适配、源码部件拼装、适配启动配置和文件系统配置提供指导。源码产品解决方案的适配查人源码源码路径规则定义为:vendor/{ 厂商名}/{ 产品名}_。新增产品时,源码必须遵循此规则建立目录与文件,适配以供编译构建系统扫描配置。源码 解决方案的适配目录结构遵循明确的规则,确保系统能有效识别并处理产品配置。源码关键目录与文件的适配详细说明如下,fs.yml文件为可选配置项,源码适用于有文件系统的适配设备。 产品配置过程支持灵活的源码芯片解决方案与部件拼装,形成定制化解决方案。此流程包括验证产品字段的有效性,确保与已知芯片解决方案匹配,以及与部件描述相符。配置完成后,通过编译构建系统,dbg源码并使用--patch参数,将配置文件集成至产品目录中,以进行后续编译。 特别推荐《鸿蒙开发学习手册》(共计页),为学习鸿蒙(HarmonyOS NEXT)开发技术提供全面指导。手册覆盖应用开发、基础知识、ArkTS语言、开发实践及面试题等内容,帮助开发者深入理解HarmonyOS的架构与开发方法。 手册内容包括: 应用开发导读(ArkTS) HarmonyOS概念介绍 开发基础知识:应用基础知识、配置文件、应用数据管理、应用安全管理、应用隐私保护、三方应用调用管控机制、资源分类与访问、ArkTS语言学习 基于ArkTS的开发实践:Ability开发、UI开发、公共事件与通知、pyecharts源码窗口管理、媒体、安全、网络与链接、电话服务、数据管理、后台任务管理、设备管理、设备使用信息统计、DFX、国际化开发、折叠屏应用开发 面试真题及答案,涵盖HarmonyOS开发的核心知识点Android 源码根目录介绍
整体目录结构概览
深入解析Android源码根目录的架构,让我们一起了解其组成部分及其作用。
在Android源码根目录中,首先映入眼帘的是“art”目录,其全称是Android Runtime,负责Android系统的运行时环境,是Android应用执行的核心。
紧接着是fishhook 源码“bionic”目录,内部包含了基础的库文件,这些库为Android系统的运行提供底层支持。
“bootable”目录,包含的是Android系统启动时需要的文件和目录,对于系统启动至关重要。
“build”目录,集中了构建Android系统的相关脚本和工具,开发者通过它来构建和测试Android系统。
“dalvik”目录,这里是Dalvik虚拟机的文件存放地,是早期Android系统中负责执行应用代码的主要虚拟机。
“developers”和“development”目录,专为开发者准备,包含了开发工具、文档等资源。
“device”目录,包含了针对不同硬件设备的配置文件和驱动程序,确保Android系统能够适配各种硬件。
“external”目录,存放了第三方库和工具,overview源码为Android系统提供额外的功能支持。
“frameworks”目录,包含了Android系统的框架层,为应用提供基础的API和组件。
“hardware”目录,集成了硬件相关的代码和库文件,确保与硬件设备的交互。
“libcore”目录,存储了Android核心库文件,为系统提供关键的基础支持。
“libnativehelper”目录,存放了用于Android应用中调用本地代码的辅助库。
“ndk”目录,全称为Native Development Kit,是为开发本地代码(C/C++)的Android应用准备的。
“packages”目录,包含了系统的应用包,包括预装应用和系统服务。
“pdk”目录,全称为Power Development Kit,提供与系统电源管理相关的代码和工具。
“platform_testing”目录,集中了用于测试Android系统的工具和脚本。
“prebuilts”目录,存放了构建工具和库的预编译版本,减少构建过程的时间。
“sdk”目录,包含了Android SDK(Software Development Kit),是开发者构建和测试应用的重要工具。
“system”目录,包含了系统层的应用程序和系统文件,是Android系统运行的基础。
“test”目录,集中了用于验证系统和应用功能的测试代码。
“tools”目录,包含了开发工具和脚本,帮助开发者进行代码调试、构建和分析。
“vendor”目录,存放了设备制造商提供的驱动程序和其他系统文件。
“cts”目录,全称为Compatibility Test Suite,包含了用于验证系统兼容性的测试用例。
最后,不要忘记“out”目录,它是编译过程中产生的临时目录,包含了编译结果。
以上是Android源码根目录的基本介绍,深入了解这些目录及其内容,有助于开发者更高效地进行Android应用的开发和调试。
Android VNDK/VSDK Snapshot编译框架
为了解决Android版本碎片化问题,引入了Treble架构。此架构提供了稳定的新SoC供应商接口,并引入了HAL接口定义语言(HIDL/Stable AIDL),用于指定vendor HAL 和system框架的接口,实现了system框架与Vendor HAL的解耦,使Vendor Freeze成为可能。然而,经过调查发现,AOSP源码的vendor组件有%~%的仓库与system组件耦合,这对架构的灵活性和稳定性产生了影响。Google进一步对Treble架构进行演进,引入了VNDK和VSDK的snapshot方案,旨在增强system/vendor组件之间的interface化能力。system组件通过预编译形成vendor Snapshot,可以提供给不同Android版本的vendor组件使用,这也是Treble方案落地的一个重要环节和基础支撑。
VNDK提供了对Native库进行划分的概念,以达到管控system/vendor组件之间模块耦合度的目的。主要包括core library、vendor-only(proprietary) library、vendor_available library、vndk library和vndk-sp library。这些类别的划分定义了不同类型的相互耦合程度和使用约束,使得system和vendor组件的功能更加独立。
VSDK则是在VNDK的基础上进一步扩展,包含了Vendor Snapshot。Vendor Snapshot包括系统源码维护的用于Vendor编译或集成的Native模块集合。这些模块主要由系统库、vendor可用库和vndk模块构成,其中vndk模块的使能与vendor模块的直接使用密切相关。
Snapshot设计旨在解决system和vendor不同时间、不同版本编译搭配的问题。通过预构建系统侧的库,用于vendor侧的编译,减少对system侧源码的依赖。这可以通过两种方法实现:一种是将system仓库直接包含在vendor的manifest文件中,使用旧版本的代码;另一种是使用Google的Snapshot设计,由system侧预构建生成vendor所需的内容,用于vendor侧编译。两种方法各有优缺点,前者简单直接,但可能导致vendor代码量增加和编译时间延长;后者代码量更精简,编译时间短,但需要额外的预构建系统支持。
Snapshot生成流程可以分为三个阶段:Generate Phrase、Install Phrase和Use Phrase。Generate Phrase阶段通过一定的规则从系统侧源代码中产生出vendor image编译依赖的预置编译模块产物。Install Phrase阶段通过py脚本将生成的prebuilt模块安装到指定源码目录,并生成对应Android.bp文件。Use Phrase阶段通过设置BOARD_VNDK_VERSION变量为具体版本号,触发编译系统使用预先生成的Snapshot参与编译。
VNDK Snapshot生成流程中,生成逻辑在soong/cc/vndk.go中通过定义VndkSnapshotSingleton实现,最终生成的bp文件包含了vndk_prebuilt_shared模块的配置信息,用于vendor侧的编译。VSDK Snapshot的生成逻辑与VNDK类似,主要通过vendor_snapshot.go的GenerateBuildActions方法实现,同样通过设置BOARD_VNDK_VERSION变量进行编译。
总的来说,VNDK/VSDK Snapshot的引入和设计旨在减少system和vendor组件之间的源码依赖,减少编译依赖,更容易形成Treble基线。这为构建更稳定、更高效的Android生态系统提供了有力支持。