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企服之家,中国第一个企服评测及商务社交产业平台。 |