Harmony Next 跨平台开发入门
ArkUI-X 官方介绍
官方文档:https://gitee.com/arkui-x/docs/tree/master/zh-cn
ArkUI跨平台框架(ArkUI-X)进一步将ArkUI开发框架扩展到了多个OS平台:目前支持OpenHarmony、Android、 iOS,后续会逐步增加更多平台支持。开发者基于一套主代码,就可以构建支持多平台的精美、高性能应用。
创建工程
在主菜单栏,单击Build > Build Hap(s)/APP(s) > Build APP(s)
编译后的ArkTS代码、资源和平台胶水代码已生成到 Android
和 iOS
应用工程中,存放在 .arkui-x
目录下,后续安装、运行和调试请使用 Android Studio
和 Xcode
,也可使用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 调用 鸿蒙 方法
本以为鸿蒙的实现只需要写一个方法,直接调用就可以结果编译时报错
需要新建后缀为 .ts
的文件,并在不支持跨平台的接口上方增加注释 // @ts-ignore
或 // @ts-nocheck
屏蔽警告,并保证这个方法只会在 OpenHarmony应用平台
调用。
本文由博客一文多发平台 OpenWrite 发布!
原文地址:https://blog.csdn.net/brian512/article/details/145306851
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!