开源软件Notice是与项目开源相关的文件,收集这些文件的目的是为了符合开源的规范。
收集目标
只收集打包到镜像里面的模块对应的License;不打包的都不收集,比如构建过程使用的工具(如clang、python、ninja等)都是不收集的。
静态库本身是不会被打包的,一般是作为动态库或者可执行程序的一部分被打包到系统中的,为了确保完备,静态库的都会收集。
最终合并的NOTICE.txt要体现出镜像中每个文件都是用了哪些License,模块和License要有对应关系。
最终合并的NOTICE.txt文件在/system/etc/ 目录下。
收集规则
按照优先级收集License,以下由1到4,优先级依次降低。
ohos_shared_library("example") {
...
license_file = "path-to-license-file"
...
}
2.如果模块没有显式声明,那么编译脚本会在BUILD.gn所在的当前目录中查找Readme.OpenSource文件,解析该文件,找出该文件中声明的license,将其作为模块的License。 如果Readme.OpenSource文件中配置的license文件不存在,直接报错。
3.如果Readme.OpenSource文件不存在,编译脚本会从当前目录开始,向上层目录寻找(一直找到源码的根目录),默认查找License、Copyright、Notice三个文件,如果找到,则将其作为模块的License。
4.如果上面三种方式都未找到license,则使用默认的license作为该模块的license;默认license是Apache2.0 License。
需要注意及检查的问题
编译时,适当选择添加以下的编译参数可以加快编译的过程。
out/rk3568/.ninja_log文件记录了每个模块编译的开始和结束时间(ms),结束时间和开始时间间隔越短表示模块的编译时间越短,编译性能越高。
从左到右分别表示:start time|end time|mtime|command hash。
图形化显示编译时间。
1.点击静态检查下的“成功”;
2.点击输出列的“输出”即可在左侧的build_trace列看到build.trace.html文件,单击该文件即可打开。
针对同一个芯片解决方案下的子产品的定制能力,将差异能力放到 chip_prod 分区,因此需要支持对不同子产品生成对应的 chip_prod.img。
{
"product_name": "MyProduct", # 产品名称
"version": "3.0", # config.json的版本号, 固定"3.0"
"chipprod_config_path": "", # 存放chipprod配置文件路径,可选项
"subsystems": [
{
"subsystem": "arkui", # 选择的子系统
"components": [
{
"component": "ace_engine",
"features":[ "ace_engine_feature_enable_web = true",
"ace_engine_feature_enable_accessibility = true" ] }
]
},
{
......
}
......
更多子系统和部件
}
}
2.模块编译配置:
某个配置文件在不同的子产品中有差异,比如要打包到productA对应的chip_prod.img中,则模块编译需要配置install_images和module_install_dir。
以ohos_prebuilt_executable示例:
ohos_prebuilt_executable("moduleXXX"){
install_images = [ "chip_prod" ]
module_install_dir = "productA/etc/***" # module_install_dir指定的路径需要以productA开始。
}
3.编译命令
./build.sh --product-name {product_name} --build-target chip_prod_image
4.打包结果:
如果定义了子产品productA和productB,即chip_product_list = ["productA", "productB"],并且有模块安装到了该产品下,则打包后镜像输出路径如下:
images/productA/chip_prod.img
images/productB/chip_prod.img
那么很多小伙伴肯定主要是查找一些鸿蒙开发相关的内容提升自己,在这里,我为大家准备了一套《Open Harmony4.0&Next》的学习导图,从入门到进阶再到南北向开发实战的一整套完整体系,想要学习了解更多鸿蒙开发的相关知识可以借鉴:《做鸿蒙应用开发到底学习些啥?》
除了以上的知识内容,我还为大家整理了一份《鸿蒙 (Harmony OS)开发学习手册》都是整理成PDF文档方式,分享给大家参考学习:《鸿蒙基础入门开发宝典!》
《鸿蒙 (Harmony OS)开发学习手册》
一、入门必看
1.?应用开发导读(ArkTS)
2.?应用开发导读(Java)
3.......
二、HarmonyOS 概念
1.?系统定义
2.?技术架构
3.?技术特性
4.?系统安全
5......
三、如何快速入门?《鸿蒙开发学习指南》
1.?基本概念
2.?构建第一个ArkTS应用
3.?构建第一个JS应用
4.?……
四、开发基础知识
1.?应用基础知识
2.?配置文件
3.?应用数据管理
4.?应用安全管理
5.?应用隐私保护
6.?三方应用调用管控机制
7.?资源分类与访问
8.?学习ArkTS语言
9.?……
五、基于ArkTS 开发
1.?Ability开发
2.?UI开发
3.?公共事件与通知
4.?窗口管理
5.?媒体
6.?安全
7.?网络与链接
8.?电话服务
9.?数据管理
10.?后台任务(Background Task)管理
11.?设备管理
12.?设备使用信息统计
13.?DFX
14.?国际化开发
15.?折叠屏系列
16.?……
更多了解更多鸿蒙开发的相关知识可以参考:《做鸿蒙应用开发到底学习些啥?》