HarmonyOS鸿蒙Next中咨询类问题:百度云的BOS对象存储

HarmonyOS鸿蒙Next中咨询类问题:百度云的BOS对象存储 【问题描述】:百度云的BOS对象存储,是否可以使用js的SDK在RN中使用,让安卓,ios,鸿蒙公用一套

cke_3628.png

【问题现象】:百度云的BOS对象存储,是否可以使用js的SDK在RN中使用,在文档中没找到RN的SDK

【版本信息】:不涉及

【复现代码】:不涉及

【尝试解决方案】:不涉及


更多关于HarmonyOS鸿蒙Next中咨询类问题:百度云的BOS对象存储的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

不建议这么做!

JavaScript SDK是给浏览器用的,它并不能保证在安卓和iOS、鸿蒙上正确运行。

建议在鸿蒙上使用官方鸿蒙的SDK即可~~

cke_2089.png

更多关于HarmonyOS鸿蒙Next中咨询类问题:百度云的BOS对象存储的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


官方是有纯血鸿蒙SDK的,不过更新不是很及时,可以试试:

SDK中心

运行环境

BOS鸿蒙SDK可以在API 5.0.0(12)及以上环境下运行。

安装SDK

  1. 在官网下载BOS 鸿蒙SDK工具包
  2. 将其置于您的工程目录下,例如./lib/sdk.har(假设当前目录为工程的根目录)
  3. 修改entry目录下的oh-package.json5文件中的dependencies项,以添加依赖。
    "dependencies": {
      "@bdbase/bos": "file:../lib/sdk.har"
    }
  1. File -> Sync And Refresh Project 以更新生效依赖

由于 React Native (RN) 的运行环境(Hermes/JSC)与浏览器环境(Browser DOM)存在差异,直接使用百度云官方的 Web JS SDK 会遇到 File 对象、Blob 以及二进制流处理的兼容性问题。
 

可以尝试在App里请求你后端服务器:“我要上传一个文件”。后端利用百度 BOS SDK 生成一个临时的、带签名的 PUT URL 返回给 App。App 拿到这个 URL,直接通过 fetchaxios 发送 PUT 请求把文件传上去。

不是有鸿蒙的SDK 吗?

cke_333.png

鸿蒙Next中集成百度云BOS对象存储,需使用鸿蒙SDK进行适配。目前官方未提供BOS原生SDK,可通过REST API调用。需在config.json配置网络权限,使用@ohos.net.http模块发起HTTPS请求。上传文件时需处理multipart/form-data格式,下载时需管理本地文件路径。注意鸿蒙Next的沙箱机制对文件访问的限制。

针对您关于在HarmonyOS Next中使用百度云BOS对象存储JS SDK的问题,我的分析如下:

核心结论: 理论上,百度云BOS的JS SDK无法直接在HarmonyOS Next的原生应用开发中运行。您提到的“让安卓、iOS、鸿蒙共用一套”的目标,在HarmonyOS Next的当前架构下,通过React Native(RN)或纯JS SDK的路径行不通

详细原因:

  1. HarmonyOS Next的系统架构变革:HarmonyOS Next已移除传统的AOSP代码和Linux内核,采用了全新的纯鸿蒙内核和系统服务。这意味着它不再兼容安卓的运行时环境。百度云BOS的JS SDK,无论是其本身还是其依赖的Node.js/Browser环境,都默认构建在传统的操作系统(如Linux、Windows、安卓的V8引擎)之上,其底层API调用(如网络、文件系统、加密模块)与HarmonyOS Next的ArkTS/ArkUI原生API完全不匹配。

  2. React Native (RN) 的兼容性问题:RN框架本身严重依赖底层原生(iOS/Android)的桥接和组件。目前,HarmonyOS官方并未提供对RN框架的官方支持。因此,即使您能在RN项目中引入BOS的JS SDK包,在构建和运行时也会因为缺乏HarmonyOS对应的原生模块和桥接实现而无法正常工作。在HarmonyOS Next上运行未经适配的RN应用是不可行的。

  3. SDK的运行时环境不匹配:百度云BOS的JS SDK通常设计运行在Node.js环境或浏览器中。HarmonyOS Next的应用开发使用ArkTS语言,运行在方舟运行时上。两者是完全不同的执行环境,JS SDK无法直接调用HarmonyOS的系统能力(如网络请求、安全加密等)。

可行的替代方案建议:

要实现跨安卓、iOS、HarmonyOS Next三端的对象存储功能共用,您需要采用以下架构:

  1. 开发统一的HarmonyOS Next原生SDK(推荐且必要)

    • 这是最根本的解决方案。您或您的团队需要基于HarmonyOS的ArkTS/ArkUI,参照百度云BOS的API文档,重新开发一个原生的HarmonyOS SDK。这个SDK应使用HarmonyOS的网络、安全、文件管理等原生API来实现与BOS服务端的交互。
    • 该原生SDK可以封装成Har模块,方便在HarmonyOS Next应用中集成。
  2. 维护多端SDK,统一业务逻辑层

    • 安卓端:继续使用百度云官方提供的Android SDK或JS SDK(在WebView或特定容器中,但非RN)。
    • iOS端:使用百度云官方提供的iOS SDK或JS SDK。
    • HarmonyOS Next端:使用您新开发的上述原生ArkTS SDK。
    • 在三端的上层,您可以封装一个统一的业务逻辑层接口层,定义相同的操作接口(如uploadFile, downloadFile, listObjects),底层分别调用对应平台的SDK实现。这样,您的核心业务代码可以保持最大程度的复用。
  3. 考虑使用跨平台开发框架(需评估和适配)

    • 关注华为官方推出的跨平台替代方案,例如ArkUI-X。它旨在使用ArkTS语言开发能跨HarmonyOS、iOS、Android的应用。如果ArkUI-X成熟并得到百度云或社区的支持,未来可能有机会用一套ArkTS代码调用统一的API。但目前,您仍然需要为ArkUI-X在iOS和Android上的运行环境准备相应的原生SDK或适配层。

总结: 对于HarmonyOS Next,无法通过直接引入现有JS SDK或RN方案来使用百度云BOS。必须为其开发独立的原生ArkTS SDK。跨三端统一功能的正确做法是“接口统一,实现分离”,即定义统一的业务API,然后在安卓、iOS、HarmonyOS Next三个平台上分别使用各自平台兼容的SDK来实现这些接口。

回到顶部