OpenHarmony模块闭源修改方案
简介:
产品开发过程中,可能涉及多方合作伙伴,需要提供给伙伴可用的工程,但是有定制化模块可能针对伙伴不开源的情况,所以要进行闭源处理。
组件编译:
-
编译方式
openharmony中将组件编译成动态库使用的是gn模版ohos_shared_library(libname),该模版将组件源码编译成libname.z.so
可以看到该模版中包含了编译所需的源码和头文件,使用属性sources和include_dirs设置,另外还包含了cflags属性设置编译参数。组件名为libhal,编译完成后将在out/产品下的子系统/部件目录生成libhal.z.so动态库。
闭源处理
对该组件进行闭源处理,ohos也提供了另一种预编译模版ohos_prebuilt_shared_library(libname),用于将已生成的so库做为编译组件。
通过source属性设置so库文件路径,此处填写的是相对于BUILD.gn文件的路径。
ohos_prebuilt_shared_library模版属性描述如下:
模版属性 | 是否需要 | 描述 |
---|---|---|
sources | 不需要 | 用于源码编译 |
include_dirs | 不需要 | 用于源码编译 |
deps | 不需要 | 用于源码编译 |
cflags | 不需要 | 用于源码编译 |
source | 需要 | so文件路径 |
public_configs | 按需配置 | 用于对外暴露的头文件配置 |
install_images | 需要 | 通用属性 |
subsystem_name | 需要 | 通用属性 |
part_name | 需要 | 通用属性 |
如闭源库有需要对外暴露的头文件,需要配置public_configs属性,在public_configs中添加include_dirs属性设置头文件包含路径。
并且组件所在的部件bundle.json中需要将该组件添加到inner_kits属性中,header_base为对外暴露的头文件路径,header_files可以指定头文件目录下具体暴露的头文件,而非目录下所有头文件。
静态库处理
静态库源码编译模版ohos_static_library,预编译模版ohos_prebuilt_static_library,模版属性参考 动态库模板属性。
多架构
组件可能有多cpu架构支持的需求,那么就需要提供不同架构的闭源库,在编译时,我们需要根据当前产品是什么架构来选择使用对应的闭源库。
可以看到,ohos_prebuilt_static_library模版中使用的条件判断,target_cpu变量是ohos编译子系统提供的,该变量会根据所编译产品配置进行初始化。
更多推荐
所有评论(0)