当前位置: 首页 > news >正文

定义HarmonyOS IDL接口

HarmonyOS IDL简介

HarmonyOS Interface Definition Language(简称HarmonyOS IDL)是HarmonyOS的接口描述语言。HarmonyOS IDL与其他接口语言类似,通过HarmonyOS IDL定义客户端与服务端均认可的编程接口,可以实现在二者间的跨进程通信(IPC,Inter-Process Communication)。跨进程通信意味着可以在一个进程访问另一个进程的数据,或调用另一个进程的方法。

通常把应用接口提供方(供调用)称为服务端,调用方称为客户端。客户端通过绑定服务端的Ability来与之进行交互,类似于绑定服务。关于HarmonyOS IDL接口语言的详细描述请参考HarmonyOS IDL接口使用规范。

说明
1.只能使用Java或C++语言构建.idl文件,因此仅Java、Java+JS、C/C++工程支持IDL。
2.仅API 4-7的Gradle工程支持IDL。

创建.idl文件

1.在已经创建/打开的HarmonyOS工程中,选择module目录或其子目录,单击鼠标右键,选择New > Idl File
在这里插入图片描述
2.创建IDL File。可以直接输入IDL接口名称,也可以通过包名格式定义idl接口名称。两种方式的差异仅在于.idl文件的文件目录结构。

按名称创建,创建IDL File时,输入接口名称,直接单击OK在这里插入图片描述
DevEco Studio在相应“module”的src>main路径下生成idl文件夹,并按照对应模块的包名生成同样的目录结构及IDL文件。在这里插入图片描述
3.开发者可以使用Java或C++编程语言构建.idl文件,关于HarmonyOS IDL接口的实现请参考IDL开发指南。

4.单击工程右边栏的Gradle,在Tasks > ohos:debugohos:release中选择compileDebugIdlcompileReleaseIdl,对模块下的IDL文件进行编译。在这里插入图片描述
5.编译完成后,在build > generated > source > idl>debug/release> {Package Name}目录下,生成对应的接口类、桩类和代理类,如下图所示:在这里插入图片描述
要想成为一名合格的鸿蒙高级开发工程师,以上知识点是必须要掌握的,除此之外,还需要掌握一些鸿蒙应用开发相关的一些技术

为了节省大家一些查找的时间,这边联合几位行业大佬,为大家准备了一份《鸿蒙全栈技术 实战项目驱动式教学》的学习导图,从入门到进阶再到南北向开发实战的一整套完整体系,想要学习了解更多鸿蒙开发的相关知识可以借鉴:《鸿蒙4.0源码开发架构分析pdf》
在这里插入图片描述
除了上面整理的思维导图以外,这里还特别整理的一份《鸿蒙 (Harmony OS)开发学习手册》给大家进行参考学习:

一、入门必看

1.应用开发导读(ArkTS)

2.……在这里插入图片描述
二、HarmonyOS 概念

1.系统定义

2.技术架构

3.技术特性

4.系统安全

5…在这里插入图片描述
三、如何快速入门?《一小时快速认识HarmonyOS》

1.基本概念

2.构建第一个ArkTS应用

3.构建第一个JS应用

4.……在这里插入图片描述
四、开发基础知识

1.应用基础知识

2.配置文件

3.应用数据管理

4.应用安全管理

5.应用隐私保护

6.三方应用调用管控机制

7.资源分类与访问

8.学习ArkTS语言

9.……在这里插入图片描述

五、基于ArkTS 开发

1.Ability开发

2.UI开发

3.公共事件与通知

4.窗口管理

5.媒体

6.安全

7.网络与链接

8.电话服务

9.数据管理

10.后台任务(Background Task)管理

11.设备管理

12.设备使用信息统计

13.DFX

14.国际化开发

15.折叠屏系列

16.……在这里插入图片描述
更多了解更多鸿蒙开发的相关知识可以参考:《鸿蒙4.0源码开发架构分析pdf》

相关文章:

  • 【MybatisPlus篇】查询条件设置(范围匹配 | 模糊匹配 | 空判定 | 包含性判定 | 分组 | 排序)
  • stack_queue:三个关键注意事项解析
  • Mac M1使用PD虚拟机运行win10弹出“内部版本已过期立即安装新的windows内部版本”
  • 手机云控制发电机组 有网络随时随地操控监控运行
  • 【劳德巴赫 Trace32 高阶系列 3 -- trace32 svf 文件操作命令】
  • 场效应管学习笔记
  • 基于SpringBoot Vue学生成绩管理系统
  • 【Kafka】服务器Broker与Controller详解
  • 【unity小技巧】FPS简单的射击换挡瞄准动画控制
  • 如何确定子网地址(范例)?
  • 【论文解读】Collaboration Helps Camera Overtake LiDAR in 3D Detection
  • C++:this隐藏参数
  • anaconda离线安装包的方法
  • 海康威视有插件、无插件播放;webrtc直播;西瓜视频播放器;mpegts.js直播;flvjs直播
  • Map和Set的封装
  • “大数据应用场景”之隔壁老王(连载四)
  • Intervention/image 图片处理扩展包的安装和使用
  • iOS编译提示和导航提示
  • JavaScript新鲜事·第5期
  • Linux CTF 逆向入门
  • nginx 配置多 域名 + 多 https
  • python学习笔记 - ThreadLocal
  • Sequelize 中文文档 v4 - Getting started - 入门
  • 前端
  • 如何设计一个比特币钱包服务
  • 深度解析利用ES6进行Promise封装总结
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 我的zsh配置, 2019最新方案
  • 延迟脚本的方式
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 阿里云重庆大学大数据训练营落地分享
  • ​第20课 在Android Native开发中加入新的C++类
  • # centos7下FFmpeg环境部署记录
  • # 数论-逆元
  • #NOIP 2014# day.2 T2 寻找道路
  • $.ajax中的eval及dataType
  • (C++20) consteval立即函数
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (rabbitmq的高级特性)消息可靠性
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (原)本想说脏话,奈何已放下
  • ****Linux下Mysql的安装和配置
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .netcore如何运行环境安装到Linux服务器
  • .net下的富文本编辑器FCKeditor的配置方法
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • [20170705]lsnrctl status LISTENER_SCAN1
  • [ACL2022] Text Smoothing: 一种在文本分类任务上的数据增强方法
  • [AIGC] Spring Interceptor 拦截器详解
  • [Angular] 笔记 21:@ViewChild
  • [Angular] 笔记 8:list/detail 页面以及@Input
  • [autojs]autojs开关按钮的简单使用