ToB企服应用市场:ToB评测及商务社交产业平台
标题:
Harmony Next 跨平台开发入门
[打印本页]
作者:
缠丝猫
时间:
2025-1-23 11:03
标题:
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)
编译后的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 调用 鸿蒙 方法
本以为鸿蒙的实现只必要写一个方法,直接调用就可以效果编译时报错
官网文档: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 发布!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4