自学内容网 自学内容网

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 发布!


原文地址:https://blog.csdn.net/brian512/article/details/145306851

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!