当前位置: 首页 > article >正文

Harmony Next 跨平台开发入门

ArkUI-X 官方介绍

官方文档:https://gitee.com/arkui-x/docs/tree/master/zh-cn

ArkUI跨平台框架(ArkUI-X)进一步将ArkUI开发框架扩展到了多个OS平台:目前支持OpenHarmony、Android、 iOS,后续会逐步增加更多平台支持。开发者基于一套主代码,就可以构建支持多平台的精美、高性能应用。

创建工程

https://gitee.com/arkui-x/docs/blob/master/zh-cn/application-dev/quick-start/start-with-deveco-studio.md

在主菜单栏,单击Build > Build Hap(s)/APP(s) > Build APP(s)

file

编译后的ArkTS代码、资源和平台胶水代码已生成到 AndroidiOS 应用工程中,存放在 .arkui-x 目录下,后续安装、运行和调试请使用 Android StudioXcode,也可使用ACE Tools

平台桥接

ArkUI-X 未支持需要的功能实现,则需要使用平台桥接让原生平台各自实现相应的功能。

1、在ArkUI侧创建平台桥接。指定名称,该名称应与Android侧平台桥接的名称一致。

// 导入平台桥接模块
import bridge from '@arkui-x.bridge';

// 创建平台桥接实例
const bridgeImpl = bridge.createBridge('Bridge');

2、在Android侧创建BridgePlugin类。指定名称,该名称应与ArkUI侧平台桥接的名称一致。通过创建的该对象即可调用平台桥接的方法。

Bridge bridge = new Bridge(this, "Bridge", getBridgeManager());

ArkUI 调用 Android 方法

1、在ArkUI侧调用Android侧的方法。


const PLAT_ANDROID = 'Android'
const PLAT_IOS = 'iOS'
const PLAT_HARMONY = 'OpenHarmony'

const osFullNameInfo: string = deviceInfo.osFullName

function isAndroid() {
  return osFullNameInfo.startsWith(PLAT_ANDROID)
}

function isIOS() {
  return osFullNameInfo.startsWith(PLAT_IOS)
}

function isHarmony() {
  return osFullNameInfo.startsWith(PLAT_HARMONY)
}

const BRIDGE = 'Bridge'

export class PlatformHelper {

  static INSTANCE: PlatformHelper = new PlatformHelper();

  private bridgeImpl: bridge.BridgeObject|undefined = undefined;

  vibrate(duration: number) {
    this.crossPlatformMethod('vibrate', `${duration}`, () => {
      nativeVibrate(duration)
    })
  }

  crossPlatformMethod(methodName: string, param: string, onHarmony: ()=>void) {
    if (isHarmony()) {
      onHarmony()
    } else {
      if (this.bridgeImpl == undefined) {
        this.bridgeImpl = bridge.createBridge(BRIDGE);
      }
      if (this.bridgeImpl != undefined) {
        this.bridgeImpl.callMethod(methodName, param).then((res) => {
          let nativeResponse = '调用原生侧函数调用成功, 返回数据为 ' + res;
          console.log(nativeResponse);
        }).catch((err: Error) => {
          let nativeResponse = '调用原生侧函数调用失败: ' + err;
          console.log(nativeResponse);
        });
      }
    }
  }
}

2、在Android侧实现被调用的方法

    public void vibrate(String param) {
        ALog.i(TAG, "Android Bridge vibrate param is " + param);
        Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
        if (TextUtils.isDigitsOnly(param)) {
            vibrator.vibrate(Integer.parseInt(param));
        } else {
            vibrator.vibrate(60);
        }
    }

上面的代码就实现了在 ArkUI 侧调用 Android 侧的 vibrate 方法,能够成功实现振动。

ArkUI 调用 鸿蒙 方法

本以为鸿蒙的实现只需要写一个方法,直接调用就可以结果编译时报错

file

官网文档:https://gitee.com/arkui-x/docs/blob/master/zh-cn/application-dev/quick-start/platform-different-introduction.md#%E9%9D%9E%E8%B7%A8%E5%B9%B3%E5%8F%B0api%E5%A4%84%E7%90%86

需要新建后缀为 .ts的文件,并在不支持跨平台的接口上方增加注释 // @ts-ignore// @ts-nocheck 屏蔽警告,并保证这个方法只会在 OpenHarmony应用平台 调用。

本文由博客一文多发平台 OpenWrite 发布!


http://www.kler.cn/a/520344.html

相关文章:

  • ubuntu22安装issac gym记录
  • 求阶乘(信息学奥赛一本通-2019)
  • 【MCAL实战】MCU模块配置实践
  • es 3期 第26节-文本分词深入探查
  • 基于迁移学习的ResNet50模型实现石榴病害数据集多分类图片预测
  • 标记门牌号
  • 解锁高效办公文字提取新体验:C++文字识别OCR
  • 前端笔试面试策略
  • Hello Moto
  • HTML常见文本标签解析:从基础到进阶的全面指南
  • 图神经网络学习(1)- 安装部署指南
  • Spring Boot 整合 ShedLock 处理定时任务重复执行的问题
  • sysbench压力测试工具mysql以及postgresql
  • VSCode 中 Git 扩展的使用详解
  • 半小时速通flume-flume概述
  • 图像编辑器 Monica 之 CV 常见算法的快速调参
  • shallowRef和shallowReactive的用法以及使用场景和ref和reactive的区别
  • 企业信息化1:免费开源的董事会办公管理系统
  • sql中INNER JOIN、LEFT JOIN、RIGHT JOIN
  • 深入MapReduce——引入