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.osFullNamefunction 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 发布!
相关文章:
Harmony Next 跨平台开发入门
ArkUI-X 官方介绍 官方文档:https://gitee.com/arkui-x/docs/tree/master/zh-cn ArkUI跨平台框架(ArkUI-X)进一步将ArkUI开发框架扩展到了多个OS平台:目前支持OpenHarmony、Android、 iOS,后续会逐步增加更多平台支持。开发者基于一套主代码…...
阿里巴巴Qwen团队发布AI模型,可操控PC和手机
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
android 音视频系列引导
音视频这块的知识点自己工作中有用到,一直没有好好做一个总结,原因有客观和主观的。 客观是工作太忙,没有成段时间做总结。 主观自己懒。 趁着这次主动离职拿了n1的钱,休息一下,对自己的人生做一下总结,…...
STM32调试手段:重定向printf串口
引言 C语言中经常使用printf来输出调试信息,打印到屏幕。由于在单片机中没有屏幕,但是我们可以重定向printf,把数据打印到串口,从而在电脑端接收调试信息。这是除了debug外,另外一个非常有效的调试手段。 一、什么是pr…...
基于 Jenkins 的测试报告获取与处理并写入 Jira Wiki 的技术总结
title: 基于 Jenkins 的测试报告获取与处理并写入 Jira Wiki 的技术总结 tags: - jenkins - python categories: - jenkins在软件开发的持续集成与持续交付(CI/CD)流程里,及时、准确地获取并分析测试报告对保障软件质量至关重要。本文将详细…...
Vue.js组件开发-实现导出PDF文件可自定义添加水印及水印样式方向
使用 Vue 实现导出 PDF 文件并添加水印,同时支持设置水印样式、方向和自定义水印内容。 步骤 安装依赖:使用 html2canvas 将 HTML 内容转换为 canvas,使用 jspdf 生成 PDF 文件。创建 Vue 组件:在组件中实现水印生成、HTML 转 c…...
css中的animation
css的animation animation是一个综合属性,是animation-name, animation-duration, animation-timing-function, animation-delay, animation-iteration-count, animation-direction, animation-fill-mode, animation-play-state, and animation-timeline这些属性的简写 不过在…...
四.3 Redis 五大数据类型/结构的详细说明/详细使用( hash 哈希表数据类型详解和使用)
四.3 Redis 五大数据类型/结构的详细说明/详细使用( hash 哈希表数据类型详解和使用) 文章目录 四.3 Redis 五大数据类型/结构的详细说明/详细使用( hash 哈希表数据类型详解和使用)2.hash 哈希表常用指令(详细讲解说明)2.1 hset …...
基于Springboot + vue实现的洗衣店订单管理系统
“前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站:人工智能学习网站” 💖学习知识需费心, 📕整理归纳更费神。 🎉源码免费人人喜…...
用 Scoop 优雅管理 Windows 软件:安装、配置与使用全指南
本篇将主要讲讲如何用「Scoop」优雅管理 Windows 软件:安装、配置与使用全指南 一、Scoop 是什么? Scoop 是一款专为 Windows 设计的命令行软件包管理工具,它能让你像 Linux 系统一样通过命令快速安装、更新和卸载软件。其核心优势包括&…...
深度学习中常用的评价指标方法
深度学习中常用的评价指标方法因任务类型(如分类、回归、分割等)而异。以下是一些常见的评价指标: 1. 分类任务 准确率(Accuracy) 定义:正确预测的样本数占总样本数的比例。 公式:AccuracyTPT…...
多协议网关BL110钡铼6路RS485转MQTT协议云网关
多协议网关BL110钡铼6路RS485转MQTT协议云网关是一款集成了多种通信协议的工业级网关设备,专为物联网(IoT)应用设计。该网关能够将RS485总线设备的数据转化为MQTT协议,通过网络传输到云平台,实现远程监控和数据管理。以…...
Nginx 安装配置指南
Nginx 安装配置指南 引言 Nginx 是一款高性能的 HTTP 和反向代理服务器,同时也可以作为 IMAP/POP3/SMTP 代理服务器。由于其稳定性、丰富的功能集以及低资源消耗而被广泛应用于各种场景。本文将为您详细介绍 Nginx 的安装与配置过程。 系统要求 在安装 Nginx 之…...
二叉树介绍
一.树的概念 树的图: 1.结点的度:一个结点含有子树的个数称为该结点的度; 如上图:A的度为6 2.树的度:一棵树中,所有结点度的最大值称为树的度; 如上图:树的度为6 3.叶子结点或终…...
VLC-Qt: Qt + libVLC 的开源库
参考链接 https://blog.csdn.net/u012532263/article/details/102737874...
【四川乡镇界面】图层shp格式arcgis数据乡镇名称和编码2020年wgs84无偏移内容测评
本文将详细解析标题和描述中提到的IT知识点,主要涉及GIS(Geographic Information System,地理信息系统)技术,以及与之相关的文件格式和坐标系统。 我们要了解的是"shp"格式,这是一种广泛用于存储…...
Helm Chart 详解:从入门到精通
Helm 是 Kubernetes 的包管理工具,而 Helm Chart 是 Helm 的核心概念,用于定义、安装和升级 Kubernetes 应用。本文将详细介绍 Helm Chart 的结构、核心文件及其作用,帮助你从入门到精通 Helm Chart。 © ivwdcwso (ID: u012172506) 1. 什么是 Helm Chart? Helm Char…...
excel如何查找一个表的数据在另外一个表是否存在
比如“Sheet1”有“张三”、“李四”“王五”三个人的数据,“Sheet2”只有“张三”、“李四”的数据。我们通过修改“Sheet1”的“民族”或者其他空的列,修改为“Sheet2”的某一列。这样修改后筛选这个修改的列为空的或者为出错的,就能找到两…...
gesp(C++六级)(7)洛谷:P10376:[GESP202403 六级] 游戏
gesp(C六级)(7)洛谷:P10376:[GESP202403 六级] 游戏 题目描述 你有四个正整数 n , a , b , c n,a,b,c n,a,b,c,并准备用它们玩一个简单的小游戏。 在一轮游戏操作中,你可以选择将 n n n 减去 a a a&am…...
随机森林例子
完整代码: # 导入必要的库 from sklearn.datasets import load_iris from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score import numpy as np# 加载鸢尾花数…...
STM32驱动安信可Rd-04毫米波雷达:硬件改造、I2C驱动移植与参数调优全攻略
1. 项目概述:从零开始驱动安信可Rd-04雷达模组最近在做一个智能感应的小项目,需要用到人体存在检测,对比了几种方案后,最终选择了安信可的Rd-04毫米波雷达模组。这玩意儿体积小、功耗低,最关键的是价格相当亲民&#x…...
中小团队在ubuntu服务器利用taotoken管理多项目api密钥与用量
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 中小团队在 Ubuntu 服务器利用 Taotoken 管理多项目 API 密钥与用量 在 Ubuntu 服务器上运行多个 AI 实验项目是许多中小型技术团队…...
从设计到部署:一款面向轻量化产线的6轴关节机器人实战解析
1. 为什么轻量化产线需要6轴关节机器人 在小型工件装配场景中,传统机械臂常遇到两个致命问题:一是庞大的机身挤占产线空间,二是固定轨迹动作难以适应多变的工件姿态。去年我参与改造的一条散热器装配线就遇到过这种情况——原有直角坐标机器人…...
AI代码生成安全审查:实时检测与防范AI助手引入的安全漏洞
1. 项目概述:当AI生成代码遇上安全审查最近在搞一个内部项目,团队里开始大规模用GitHub Copilot、Cursor这类AI编码助手来提效。效率是上去了,但几次代码Review下来,我发现了一个让人后背发凉的问题:AI生成的代码里&am…...
oracle 大表(1亿以上)迁移笔记一
作者:蓝鸟 1974 CSDN:https://blog.csdn.net/weixin_42767242 关键字 大表迁移、存储过程批量归档、定时 JOB、索引维护、统计信息收集、NOLOGGING、BULK COLLECT、FORALL 一、场景概述 在医院 HIS/EMR 系统中,业务流水表、病历明细表数据增长极快,单表数据量轻松突破…...
终极B站视频下载指南:BilibiliDown一键解锁高清视频下载
终极B站视频下载指南:BilibiliDown一键解锁高清视频下载 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors…...
终极指南:Xmake构建缓存清理策略,彻底解决缓存一致性问题
终极指南:Xmake构建缓存清理策略,彻底解决缓存一致性问题 【免费下载链接】xmake 🔥 A cross-platform build utility based on Lua 项目地址: https://gitcode.com/gh_mirrors/xm/xmake 在软件开发过程中,构建工具的缓存机…...
如何高效管理fg-data-profiling版本控制:Git工作流完整指南 [特殊字符]
如何高效管理fg-data-profiling版本控制:Git工作流完整指南 🚀 【免费下载链接】fg-data-profiling 1 Line of code data quality profiling & exploratory data analysis for Pandas and Spark DataFrames. 项目地址: https://gitcode.com/gh_mi…...
深度学习入门实战:从PyTorch环境搭建到CNN模型调优全指南
1. 项目概述:一个面向初学者的深度学习实战指南 如果你刚刚踏入深度学习的大门,面对PyTorch、TensorFlow这些框架,以及各种复杂的模型代码感到无从下手,那么“datawhalechina/leedl-tutorial”这个开源项目,很可能就是…...
短路保护+过流保护+过热保护:MP9447GL-Z的车规级电源可靠性分析
MP9447GL-Z:36V/5A同步降压转换器的高密度电源方案在工业设备、通信基站以及消费电子电源适配器等应用中,电源管理单元需要同时满足宽输入电压、大输出电流和高转换效率的多重要求。传统的分立方案往往需要在PCB面积、BOM成本和散热设计之间做出权衡。MP…...
