HarmonyOS鸿蒙Next中如何将一个Openharmony普通应用变为系统应用
HarmonyOS鸿蒙Next中如何将一个Openharmony普通应用变为系统应用 我有一个Napi工程,编写了一个应用,调用了一个自研的so库实现调用外接硬件的一些功能,自研的so库因为用到了hdf的一些接口,依赖了一些system/lib下的so,但是这个应用启动时闪退,报错为:
08-06 18:10:22.143 2083 2083 E C03f00/MUSL-LDSO: Error loading header libsec_shared.z.so, namespace ndk has no inherits, errno=2
08-06 18:10:22.143 2083 2083 E C03f00/MUSL-LDSO: Error loading header: can't find library libsec_shared.z.so in namespace: moduleNs_default
08-06 18:10:22.143 2083 2083 E C03f00/MUSL-LDSO: Error loading shared library libsec_shared.z.so: (needed by /data/storage/el1/bundle/libs/arm64/libhdf_utils.z.so)
表示应用找不到这些库。
如何让普通应用变为系统应用,从而使得应用可以看到system/lib下和vendor/lib下的so库呢?
更多关于HarmonyOS鸿蒙Next中如何将一个Openharmony普通应用变为系统应用的实战教程也可以访问 https://www.itying.com/category-93-b0.html
系统应用可以修改SDK下toolchains\lib\UnsgnedReleasedProfileTemplate.json文件
“apl”:“system_core”,
“app-feature”:“hos_system_app”
然后重新签名
更多关于HarmonyOS鸿蒙Next中如何将一个Openharmony普通应用变为系统应用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
我已经修改了,且重新签名,作为预装应用安装在了系统中,但是应用启动依然闪退,还是看不到需要的库。使用 bm dump -n xxx
查看应用信息,显示 isSystemapp:false
。
在HarmonyOS Next中,将OpenHarmony普通应用变为系统应用需要修改应用配置和签名方式。首先在config.json
中配置"system_basic"
或"system_core"
的app类型。然后使用系统级签名证书对应用进行签名,系统应用必须使用平台签名或厂商签名。修改应用权限配置文件,声明所需系统权限。最后将签名后的应用包放入系统预置目录(如/system/app
)中。系统应用需在设备烧录时预置,不能动态安装。
在HarmonyOS Next中,将普通应用转为系统应用需要修改应用配置和签名方式。具体步骤如下:
- 修改应用的bundle.json文件,添加"systemApp": true标识:
{
"app": {
"bundleName": "com.example.myapp",
"systemApp": true
}
}
-
使用系统签名证书对应用进行签名(需要获取华为提供的系统签名证书文件)
-
在应用的module.json5中声明所需的系统权限:
{
"module": {
"requestPermissions": [
{
"name": "ohos.permission.ACCESS_SYSTEM_LIBRARIES"
}
]
}
}
- 对于依赖的HDF接口,还需要在配置中声明hdf相关权限。
注意:系统应用通常需要预置到系统镜像中,无法通过常规方式安装。您需要将应用打包到系统镜像或通过系统OTA更新方式部署。
关于您遇到的libsec_shared.z.so加载问题,除了转为系统应用外,也可以考虑将这些依赖库打包到应用的libs目录下,或者使用动态加载方式加载这些库。