鸿蒙next集成uni-app小程序SDK

发布于 1周前 作者 gougou168 来自 uni-app

鸿蒙next集成uni-app小程序SDK

function openUniMP(appID, config) {
let mp = getUniMP(appID);
if (mp) {
throw new Error(`UniMP: ${appID} already opened`);
}
mp = new UniMP(appID, config);
return mp;
}

这个 new UniMP 初始化一次,然后这个 UniMP 类中这个页面级储存也只初始化一次:

const storage = new LocalStorage();
storage.setOrCreate("storage", {
mp: this
});

是在什么情况下调用 getCurrentRenderingMP 方法,然后 LocalStorage.getShared()?.get("storage")?.mp 获取这个 mp 不存在?导致小程序无法运行。而且这个还不稳定,有时好用有时不好用,随缘运行。

报错原因是运行以下代码时:

const setStorageSync = defineSyncApi<void>(API_SET_STORAGE_SYNC, (key: string, value: Object) => {
createStore().putSync(key, stringifyStorageValue(value));
createStore().flush();
}) as SetStorageSync;

createStore 方法中 getCurrentMP4().id 获取这个 id 获取不到,直接报错无法获取 null 的 id。


更多关于鸿蒙next集成uni-app小程序SDK的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于鸿蒙next集成uni-app小程序SDK的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙(HarmonyOS)系统中集成uni-app小程序SDK是一个涉及多个技术栈的复杂任务,这通常包括在鸿蒙设备上配置开发环境、引入uni-app SDK,以及进行必要的适配工作。以下是一个简化的步骤和代码示例,帮助你理解如何在鸿蒙项目中集成uni-app小程序SDK。

1. 配置鸿蒙开发环境

首先,确保你已经安装了DevEco Studio和HarmonyOS SDK。这是开发鸿蒙应用的基础工具。

2. 创建鸿蒙项目

在DevEco Studio中创建一个新的鸿蒙项目,选择适当的模板(如Empty Ability)。

3. 引入uni-app SDK

由于uni-app官方可能尚未直接提供针对鸿蒙的SDK(具体需查看uni-app官方文档),你可能需要基于uni-app的跨平台能力,自己进行适配或寻找第三方库。假设你已经有了uni-app编译后的资源包(如.hbx.jsbundle),你可以通过以下方式集成:

3.1 在config.json中配置

在你的鸿蒙项目的config.json中,添加对uni-app资源的引用(假设资源放在assets目录下):

{
  "module": {
    "packageInfo": {
      "name": "your.module.name",
      "type": "entry",
      "distro": {
        "moduleName": "entry",
        "moduleType": "entry",
        "deliveryWithInstall": true
      },
      "abilities": [
        {
          "name": ".MainAbility",
          "label": "@string/app_name",
          "icon": "$media:icon",
          "description": "@string/app_desc"
        }
      ],
      "reqs": [
        {
          "name": "ohos.permission.INTERNET"
        }
      ],
      "assets": [
        {
          "files": [
            "assets/uni-app/**"
          ],
          "installMode": "on_demand",
          "updateMode": "on_demand"
        }
      ]
    }
  }
}

3.2 在代码中加载uni-app资源

在你的MainAbility中,通过鸿蒙的ResourceManager加载uni-app资源,并初始化uni-app的运行环境(这里需要自行实现或参考uni-app的文档进行适配):

@Override
public void onStart(Intent intent) {
    super.onStart(intent);
    super.setUIContent(ResourceTable.Layout_ability_main);
    
    // 加载uni-app资源
    ResourceManager resourceManager = getResourceManager();
    // 假设有一个方法initUniApp(ResourceManager)来初始化uni-app
    initUniApp(resourceManager);
}

private void initUniApp(ResourceManager resourceManager) {
    // 实现uni-app的初始化逻辑
    // 这里需要根据uni-app的SDK或文档进行具体实现
}

4. 编译与运行

在DevEco Studio中编译并运行你的鸿蒙项目,确保一切配置正确,且uni-app资源能够被正确加载和显示。

请注意,上述代码是一个简化的示例,实际集成过程中可能涉及更多的细节和适配工作。建议查阅uni-app和HarmonyOS的官方文档,以获取最新的集成指南和API支持。

回到顶部