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

4 回复

系统应用可以修改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中,将普通应用转为系统应用需要修改应用配置和签名方式。具体步骤如下:

  1. 修改应用的bundle.json文件,添加"systemApp": true标识:
{
  "app": {
    "bundleName": "com.example.myapp",
    "systemApp": true
  }
}
  1. 使用系统签名证书对应用进行签名(需要获取华为提供的系统签名证书文件)

  2. 在应用的module.json5中声明所需的系统权限:

{
  "module": {
    "requestPermissions": [
      {
        "name": "ohos.permission.ACCESS_SYSTEM_LIBRARIES"
      }
    ]
  }
}
  1. 对于依赖的HDF接口,还需要在配置中声明hdf相关权限。

注意:系统应用通常需要预置到系统镜像中,无法通过常规方式安装。您需要将应用打包到系统镜像或通过系统OTA更新方式部署。

关于您遇到的libsec_shared.z.so加载问题,除了转为系统应用外,也可以考虑将这些依赖库打包到应用的libs目录下,或者使用动态加载方式加载这些库。

回到顶部