• [技术干货] 【华为开发者布道师】鸿蒙操作系统的图形子系统原理解析——东北大学 张昊阳
    参考书籍资料:《鸿蒙操作系统设计原理与架构》 (李毅,任革林)布道活动地点:东北大学(浑南校区)
  • [互动交流] 目前CodeArts Snap对于鸿蒙ArkTS的支持情况如何?
    华为云bilibili官方账号在今年六月底发布了视频 【盘古研发大模型重塑CodeArts,支持鸿蒙应用智能高效开发】 ,演示了CodeArts Snap在 根据原型图生成ArkUI代码 和 Java代码转为ArkTS代码 上的功能,但是我今天试了一下,CodeArts Snap在ArkTS代码方面的回答依然不是那么让人满意,更别提那个视频中展示的内容了。这个情况是因为ArkTS目前仍在更新中吗?还是有其他的什么原因?
  • [产品体验官] 【开发者日武汉站】产品体验官:仓颉鸿蒙应用开发初体验
    华为云开发者日·武汉站来啦!参加“仓颉鸿蒙应用开发初体验”体验项目提出你的建议或使用体验有机会获得开发者盲盒礼包惊喜不容错过,快叫上小伙伴一起来参加吧~【体验项目】仓颉鸿蒙应用开发初体验【活动时间】2024年10月16日-10月20日【参与方式】直接在此活动帖下方回帖提建议/提建议即可比如对产品功能的改进建议、对活动流程的感想、对现场活动的感悟等等PS:不要少于30字哦~【获奖规则】奖项设置有效回复楼层评选条件获奖名额激励礼品优质建议奖20对产品功能有改进价值的建议1名开发者盲盒礼品价值50-100元积极反馈奖20优质建议奖轮空的情况下进行抽取每满20层抽取1名开发者盲盒礼品价值50元【活动规则】1、本帖的回帖建议不少于30字,仅限于对“仓颉鸿蒙应用开发初体验”体验项目,其他项目建议不参与此次活动,否则将视为无效内容。2、本次活动将根据实际参与情况发放奖励,包括但不限于用户百分之百中奖或奖项轮空的情况;以上奖品均为实物奖品,具体发放视出库情况而定;3、活动预计于结束后七天内完成奖项公示,并于结束后15个工作日内完成邮寄。【温馨提示】1、请务必使用个人实名账号参与活动(IAM、企业账号等账号参与无效)。如一个实名认证对应多个账号,只有一个账号可领取奖励,若同一账号填写多个不同收件人或不同账号填写同一收件人,均不予发放奖励。2、所有获得奖品的获奖用户,请于获奖后3日内完成实名认证,否则视为放弃奖励。
  • [技术干货] 【DTSE Tech Talk 精选问答】NO.66丨鸿蒙上云,加速开发者成长
    鸿蒙千帆起,越来越多的开发者启动鸿蒙原生应用开发,开发者创新中心提供全面的合作资源与支持服务,从了解、到学习评估、到开发上架以及技术支持,帮助不了解鸿蒙应用开发的伙伴快速转身、快速具备鸿蒙应用开发的能力。诚邀您加入鸿蒙生态,开启鸿蒙原生应用开发!直播链接:cid:link_0Q:鸿蒙应用的市场分析工具有哪些?是否有配套用户行为分析工具?A:在 HarmonyOS 中,开发者可以通过集成 Huawei Analytics Kit、Firebase Analytics、Google Analytics 或 Mixpanel 等分析 SDK 来实现用户行为分析。此外,还可以定义自定义事件、存储和处理数据、并使用数据可视化工具(如 Tableau 或 Power BI)来深入分析用户行为数据。这些技术和工具帮助开发者理解用户的使用模式,优化应用体验。Q:HarmonyOS 的元服务有哪些优势A:免安装,更轻量化地将服务带给用户,一键服务直达,将用户感兴趣的内容前置、外显。跨端转移,多终端设备间无缝流转。情景智能卡片推荐,随心定制、更懂用户。支持多端协同,如手机用作文档翻页和批注,配合智慧屏显示完成分布式办公;手机作为手柄,与智慧屏配合玩游戏。Q:鸿蒙开发者有哪些市场需求岗位?职业发展路径如何规划?A:从市场调研数据来看,2024年鸿蒙开发相关岗位的需求同比增长超过30%,尤其在智能设备开发、用户界面设计和系统安全等领域表现尤为突出。这些岗位不仅提供了丰厚的薪资待遇,平均月薪达到2,0000至30,000元。Q:HarmonyOS后续发展方向是怎么样的?A:HarmonyOS的核心愿景是实现万物互联,而HarmonyOS NEXT在这一点上做得更为彻底。 未来,随着物联网设备的普及和5G技术的进一步成熟,HarmonyOS NEXT将在智能家居、智慧城市、智能交通等领域发挥更大的作用。Q:鸿蒙的微内核设计相比于传统内核有哪些优势?A:鸿蒙操作系统采用了微内核架构,与传统宏内核架构相比,微内核具有更轻量、更安全、更灵活等优点。Q:开发者创新中心提供的合作资源具体包含哪些类型?A:华为开发者创新中心赋能产教融合,提供体验、学习、实践、职业发展一站式平台。通过“技术科普、互动体验、动手实操“多元化的展示方式,培养学生的动手实践以及创新能力,助力院校培养高水平应用型学生,制定并提供人才培养的解决方案。详情请查看:https://bbs.huaweicloud.com/blogs/346023Q:arkTS可以直接在仓颉里面使用吗?A:在 OpenHarmony 系统上,ArkTS 具备完整广泛的生态,为复用 ArkTS 生态,仓颉支持与 ArkTS 高效跨语言互通。 仓颉-ArkTS 互操作基于仓颉 CFFI 能力,通过调用 ArkTS 运行时接口,为用户提供库级别的 ArkTS 互操作能力。 一、使用场景: 1.在 ArkTS 应用开发仓颉模块:把用户仓颉代码封装成为 ArkTS 模块,能够被 ArkTS 代码加载和调用。 2.在仓颉应用里使用 ArkTS 存量库:在仓颉代码里创建新的 ArkTS 运行时,并加载和执行 ArkTS 的字节码。Q:如何在鸿蒙操作系统中实现设备间的通信?A:鸿蒙操作系统提供了多种API来实现设备间的数据共享和交互,主要包括以下几个方面:分布式数据管理:鸿蒙的分布式数据管理API允许开发者在设备间同步和共享数据,这些数据可以存储在分布式数据库中,并由各个设备共享和访问。远程调用与消息传递:通过远程调用(RPC)和消息传递机制,开发者可以在不同设备间进行数据交换和命令传递。这使得一个设备可以控制或获取另一个设备上的数据或执行某些操作。数据虚拟化与共享:鸿蒙还提供数据虚拟化和共享的API,如虚拟卡片、虚拟列表等,这些可以帮助开发者在多设备间同步和展示数据。安全与隐私保护:在设备间共享数据时,安全性是非常重要的。鸿蒙提供了强大的安全机制来保护数据的隐私和完整性,包括数据加密、访问控制等。多设备协同与任务流转:鸿蒙的API还支持多设备协同工作和任务流转,如任务接力、多设备同时编辑等,这需要设备间紧密的数据交互和同步。使用这些API,开发者可以轻松地实现设备间的数据共享和交互,从而提供更加丰富和无缝的用户体验。同时,鸿蒙操作系统也为开发者提供了许多工具和文档,以简化开发过程和提高开发效率。Q:鸿蒙系统有哪些开发框架?A:ARKUI,ARKUI-XQ:鸿蒙系统对游戏开发者有哪些特别支持?开发者如何参与鸿蒙生态的共建?A:主流的游戏引擎如cocos,unity已经完成了鸿蒙适配,支撑游戏开发者可以快速的将自己的游戏进行鸿蒙适配。Q:鸿蒙应用开发语言主要有哪些?A:鸿蒙应用开发主要使用ArkTS作为应用开发语言,它提供了简洁自然的声明式语法和组件化机制,为开发者带来易学、易懂、简洁开发的优质体验1。此外,鸿蒙系统还支持其他语言,包括Java、C/C++、JS和Kotlin23。Q:如何能成为鸿蒙合作伙伴?A:1.注册华为企业开发者账号、2.申请加入合作伙伴、3.审核企业资质、4.签署合作协议、5.产品认证/申请认证、6.成为合作伙伴。Q:鸿蒙生态与其他操作系统生态的竞争优势有哪些?A:技术先进性:鸿蒙系统采用微内核设计,具有更高的安全性和稳定性。 与传统的宏内核系统相比,微内核系统在资源占用和运行效率上具有明显优势。 此外,鸿蒙系统还采用了分布式技术,能够实现设备间的无缝连接和协同工作,为用户带来更好的体验。Q: ArkCompiler有哪些应用场景/优势?A:ArkCompiler是华为自研的统一编程平台,包含编译器、工具链、运行时等关键部件,支持高级语言在多种芯片平台的编译与运行,并支撑应用和服务运行在手机、个人电脑、平板、电视、汽车和智能穿戴等多种设备上的需求。Q:前端开发和flutter兼容吗?A:兼容Q:鸿蒙系统在智能汽车领域有哪些案例?A:伴随着自动驾驶能力的成熟,智能座舱 域将与自动驾驶域实现联动,以调用、集成 ADAS 的能力,从而扩大其使用场景的范围,并在 此基础上联动手机、家电、可穿戴设备等多种智能终端,驱动车机生态从“手机-汽车”移动 互联向“汽车-AIoT”万物互联转变。Q:鸿蒙系统的原生智能功能是如何实现的?A:有别于传统的 AI 能力开放,在鸿蒙原生智能架构下,AI 能力与鸿蒙各子系统深度融合,将图像智能,通话智能,文档智能,跨应用协同等能力向应用开放,通过 AI 控件、API 的方式为开发者提供体验好、接入快、功能丰富的 AI 开放能力,让 HarmonyOS 的开发者可以快速友好地构筑鸿蒙原生智能应用。Q:个人开发者在鸿蒙生态合作中能获得哪些发展机会?A:更多的工作机会。可以参加鸿蒙开发者大赛、耀星计划、HDD等活动,助力开发者实现业务发展。Q:HarmonyOS 在性能调优方面有哪些功能?A:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-profiler-introduction-V5Q:有哪些渠道可以向技术支持反馈开发过程中的问题?A:https://developer.huawei.com/consumer/cn/support/feedback/#/Q:有哪些渠道可以向技术支持反馈开发过程中的问题?A:https://developer.huawei.com/consumer/cn/support/feedback/#/Q:HarmonyOS鸿蒙5.0将会有哪些功能 ?A:https://developer.huawei.com/consumer/cn/doc/?ha_source=sem&ha_sourceId=89000605Q:DevEco Studio是否有接入云服务?对AR/VR应用的支持程度如何?A:https://developer.huawei.com/consumer/cn/deveco-studio/想要了解更多鸿蒙应用开发相关知识,欢迎观看DTSE Tech Talk 系列技术直播
  • [技术干货] 鸿蒙版cordova/PhoneGap介绍
    鸿蒙版cordova/PhoneGap介绍鸿蒙版cordova或PhoneGap,这里统称为鸿蒙版Cordova,遵守cordova官方,不再使用鸿蒙版PhoneGap了。 cordova移动端跨平台研发的重要框架之一,支持Android和Ios,官方并不支持鸿蒙系统,harmony-cordova是鸿蒙的cordova,这里主要介绍鸿蒙版corddova,安卓和Ios请查看cordova官方文档,cordova除了cordova sdk外,还有很多的插件,开发者根据自己的APP的需要可以选择使用相关的插件,鸿蒙版cordova  sdk地址鸿蒙版cordova已经上架鸿蒙三方库中心,开发者可以直接在DevEco studio中直接使用。cordova sdk 三方库地址:https://ohpm.openharmony.cn/#/cn/detail/harmony-cordova鸿蒙版cordova支持的插件插件ID接口地址说明cordova-plugin-whitelistcid:link_12白名单cordova-plugin-network-informationcid:link_0网络管理cordova-plugin-inappbrowsercid:link_8内置浏览器cordova-sqlite-storagecid:link_11嵌入式数据库cordova-plugin-cameracid:link_14相机功能cordova-plugin-filecid:link_15本地文件管理cordova-plugin-file-transfercid:link_5上传和下载文件cordova-plugin-dialogscid:link_13弹窗cordova-plugin-datepickercid:link_1日期选择phonegap-plugin-barcodescannercid:link_3扫码cordova-plugin-media-capturecid:link_6视频录制cordova-plugin-alipay-v2调用接口:cid:link_9依赖插件:https://ohpm.openharmony.cn/#/cn/detail/@cashier_alipay%2Fcashiersdk自定义支付宝支付插件,只是按照文档接口调用了支付宝插件依赖支付宝官方插件aliyun.uploadvod暂无文档,需联系开发者阿里云OSS插件,实现移动端直接上传文件到阿里云OSScordova-plugin-android-permissionscid:link_2授权插件,接口永远返回为拥有权限,主要为兼容android移植到harmony使用的,避免修改Android端的代码,harmong授权已下放到各个插件,无需单独编写代码phonegap-bluetooth-plugincid:link_10经典蓝牙插件cordova-plugin-ble-centralcid:link_10低功耗蓝牙插件cordova-base64-to-gallerycid:link_7保存图片到相册cordova-plugin-huawei-pushcid:link_4华为推送,自定义插件,详细使用请咨询开发者Android移植鸿蒙步骤1,打开DevEco创建项目,选择Empty Ability进入下一步,填写必要信息,这里要注意,bundle name 先填写com.example.myapplication,也就是保持默认不变,因为在没有cordova.crt证书的情况下,cordova鸿蒙版要求bundle name必须为com.example.myapplication,主要用于研发测试,如果开发测试完成要修改bundle name上架鸿蒙应用市场,请联系开发者申请cordova.ert证书,或者事先联系开发者提供技术服务。2,项目创建成功后,复制原有Android studio的工程assests/www目录下面的所有文件到鸿蒙工程entry/src/main/resources/目录下,注意直接复制原andriod工程www目录下的文件,不包含www。3,复制原android工程res/xml目录下的config.xml文件到鸿蒙工程entry/src/main/resources/目录下。4,打开DevEco studio的Terminal终端,进入工程目录,执行 ohpm install harmony-cordova 安装本插件。5,打开鸿蒙工程文件entry/src/main/etx/pages/Index.ets文件,修改代码如下:import { MainPage, pageBackPress, pageHideEvent, pageShowEvent } from 'harmony-cordova/Index';  @Entry  @Component  struct Index {    onPageShow(){      pageShowEvent(); //页面显示通知cordova    }      onBackPress() {      pageBackPress(); //拦截返回键由cordova处理      return true;    }    onPageHide() {      pageHideEvent(); //页面隐藏通知cordova    }      build() {      RelativeContainer() {        MainPage(); //webview首页index.html      }      .height('100%')      .width('100%')    }  }6,打开鸿蒙工程文件/entry/src/main/ets/entryAbility/EntryAbility.ets文件,修改onCreate函数如下import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';      import { hilog } from '@kit.PerformanceAnalysisKit';      import { window } from '@kit.ArkUI';      import { webview } from '@kit.ArkWeb';      import { setSchemeHandler } from 'harmony-cordova/Index';...onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {webview.WebviewController.initializeWebEngine();//webview引擎初始化setSchemeHandler();//设置webview schemehilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');}7,鸿蒙混合研发,也许您会增加其他page页面,不一定应用的首页为cordova webview(index.html)的首页,例如应用增加了鸿蒙的原生的启动页面,包含首页弹窗,同意隐私政策后,然后再从启动页面进入cordova的页面,这样避免在用户没有同意隐私政策的情况下,初始化cordova sdk,因为初始化cordova sdk,系统读取了设备的网络状态,因为国内相关法律规定,在用户没有同意隐私政策的情况下,不允许读取设备的网络标识。8,做以上代码修改后,鸿蒙的移植已经完毕,可以使用模拟器或者真机进行编译和测试了。Ios移植鸿蒙步骤如果您的项目有android和Ios的工程,请参考android项目移植项目的鸿蒙下,如果您的项目没有andriod工程,只有Ios工程,请使用如下方法移植,移植时大部分内容和安卓一样,只是复制的文件的路径不一致,以下只介绍不同部分,相同部分请参考android移植步骤。1,复制Xcode的Ios工程目录下的Staging/www目录下的所有文件到鸿蒙工程entry/src/main/resources/目录下。 2,Xcode工程的config.xml文件在Staging目录下,Xcode工程的该文件不能直接被鸿蒙版cordova使用,需要进行转换,该文件主要记录的是插件的名称和初始化的类,因为鸿蒙版是根据android的config.xml进行插件初始化的,因此需要将Xcode工程config.xml转为安卓的config.xml,请将Xcode工程使用node加入安卓平台,系统会自动生成android版的config.xml。然后将文件复制到鸿蒙版工程的entry/src/main/resources/下。附加说明:本人认为使用cordoca跨平台研发,一般至少都会包含android和ios两大平台,很少只有ios平台,没有android平台的,所以大部分移植鸿蒙参考android移植步骤,后续升级SDK会兼容Ios工程的config.xml,无需转换就可以使用。新项目,一次开发适用于andriod、Ios和Harmony三大平台由于cordova官方当前并不支持HarmonyOS平台,使用node无法直接将HarmonyOS加入到cordova,也无法直接安装插件到HarmonyOS,因此对于新项目要一次开发满足三大平台的话,建议先通过node加入Android和Ios平台和安装插件,后续研发可以使用Android studio研发和调试,待研发成功后,然后再在Xcode和DevEco做跨平台适配。Xcode适配请参考cordova的官方文档,HarmonyOS适配请参考以上Android的移植步骤。特别说明当前版本不支持使用者自定义插件研发,如果该版本没有包含您要使用的插件,或者您的项目中有Android或Ios的自定义插件,需要移植到HarmonyOS平台,请您和本开发者联系,获取技术支持。使用鸿蒙版cordova sdk在开发测试阶段务必将bundle name修改为com.example.myapplication,如果将bunlde name改为正式的Id,鸿蒙版cordova sdk会读取entry/src/main/resources/目录的cordova.crt证书文件,用于验签,如果该文件不存在,启动应用后,应用会闪退。如果应用的bundle name为com.example.myapplication,鸿蒙版 cordova sdk会跳过验签,不检测cordova.crt文件。但是上架鸿蒙应用市场,必须将bundle name改为正式的id,所以请联系开发者申请cordova.ert证书,另外由于操作系统之间的差异,虽然保持了cordova的插件接口不变,但是返回值会有所调整,后续文档会逐步完善,在使用本插件跨平台研发时请联系开发者提供技术服务。
  • [技术干货] 鸿蒙中页面的生命周期
    在鸿蒙ArkTs中,页面的生命周期是指页面从创建到销毁所经历的一系列状态和事件。这些生命周期事件为开发者提供了在特定时刻执行代码的机会,从而能够更好地管理页面的行为和资源。以下是对鸿蒙ArkTs中页面生命周期的详细介绍:页面生命周期接口鸿蒙ArkTs中的页面生命周期主要由被@Entry装饰的组件来调用,这些组件作为页面的入口,拥有特定的生命周期函数。以下是页面生命周期的主要接口:onPageShow:触发时机:页面每次显示时触发一次,包括路由过程、应用进入前台等场景。作用:这是进行页面数据加载、动画启动等操作的理想时机。onPageHide:触发时机:页面每次隐藏时触发一次,包括路由过程、应用进入后台等场景。作用:此时页面仍然保留在内存中,但不再对用户可见。开发者可以在此函数中暂停一些不必要的后台操作,以节省系统资源。onBackPress:触发时机:当用户点击返回按钮或执行其他返回操作时触发。作用:开发者可以在此函数中执行一些清理工作,如保存用户输入、确认用户是否真的要离开页面等。生命周期调用时机示例以下是一个简单的示例,展示了如何在鸿蒙ArkTs页面中使用这些生命周期函数:@Entry @Component struct MyComponent { @State showChild: boolean = true; // 页面每次显示时触发一次 onPageShow() { console.info('Index onPageShow, 页面每次显示时触发一次'); } // 页面每次隐藏时触发一次 onPageHide() { console.info('Index onPageHide, 页面每次隐藏时触发一次'); } // 当用户点击返回按钮时触发 onBackPress() { console.info('Index onBackPress, 当用户点击返回按钮时触发'); } // 组件即将出现时回调该接口 aboutToAppear() { console.info('MyComponent aboutToAppear'); } // 在组件销毁之前执行 aboutToDisappear() { console.info('MyComponent aboutToDisappear'); } build() { Column() { // this.showChild为true, 创建Child子组件, 执行Child aboutToAppear if (this.showChild) { Child() } // this.showChild为false, 删除Child子组件, 执行Child aboutToDisappear Button('delete Child').onClick(() => { this.showChild = false; }) // push到Page2页面, 执行onPageHide Button('push to next page').onClick(() => { router.pushUrl({ url: 'pages/Page2' }); }) } } }在上面的示例中,MyComponent是一个被@Entry装饰的页面组件,它拥有页面生命周期函数onPageShow、onPageHide和onBackPress。同时,它还拥有组件生命周期函数aboutToAppear和aboutToDisappear,但这两个函数在页面组件中通常不是必需的,因为它们更多地用于自定义组件。注意事项只有被@Entry装饰的组件才可以调用页面的生命周期函数。开发者应根据页面的具体需求,在合适的生命周期函数中执行相应的操作,以优化应用性能和用户体验。综上所述,鸿蒙ArkTs中的页面生命周期为开发者提供了在特定时刻执行代码的机会,有助于更好地管理页面的行为和资源。通过合理利用这些生命周期函数,可以打造更加高效、流畅且用户友好的鸿蒙应用。
  • [技术干货] 鸿蒙ArkTs项目配置 —— AppScope/app.json5
    鸿蒙ArkTs项目中的AppScope/app.json5文件是一个配置文件,用于定义应用程序的基本信息和属性。这个文件是鸿蒙应用开发框架(ArkTS)中不可或缺的一部分,它帮助开发者在构建和打包应用时提供必要的元数据信息。鸿蒙中 AppScope 的目录结构如下图AppScope/app.json5 文件的内容如下{ "app": { "bundleName": "com.harmony.utils", "vendor": "example", "versionCode": 1000003, "versionName": "1.0.3", "icon": "$media:app_icon", "label": "$string:app_name" } }下面是对AppScope/app.json5文件中各个字段的详细解释:bundleName: "com.harmony.utils"这是应用程序的唯一标识符(包名),用于在系统中区分不同的应用。通常,这个名称会遵循反向域名格式,以确保全局唯一性。vendor: "example"表示应用的供应商或开发者名称。这个信息主要用于管理和识别应用的来源。versionCode: 1000003这是一个整数,表示应用的版本号,用于区分应用的不同版本。每次发布新版本时,这个值应该增加,以确保系统能够正确识别并更新应用。versionName: "1.0.3"这是一个字符串,表示应用的版本名称,通常用于向用户展示。它可以是任何易于理解的格式,比如“1.0.3”、“2.1 Beta”等。icon: "$media:app_icon"指定应用的图标。这里使用了$media:前缀,表示图标资源位于应用的媒体资源目录下,并且app_icon是资源文件的名称(不包含文件扩展名)。label: "$string:app_name"指定应用的标签或名称,这个名称会显示在设备的应用列表中。这里使用了$string:前缀,表示这个名称是一个字符串资源,app_name是在应用的字符串资源文件中定义的资源名称。app.json5文件采用JSON5格式,这是一种JSON的超集,允许一些JavaScript语法特性,如尾随逗号、注释等,这使得配置文件更加易读和易维护。AppScope/app.json5文件是鸿蒙ArkTs项目中非常重要的配置文件,它包含了应用的基本信息,如包名、版本、图标和名称等,这些信息对于应用的构建、打包和分发都是必不可少的。
  • [技术干货] 鸿蒙ArkTs项目结构
    鸿蒙ArkTS项目结构主要遵循HarmonyOS应用开发的典型组织方式,旨在提高代码的可维护性和项目的可扩展性。鸿蒙ArkTs项目结构(>表示是文件夹,-表示是文件)> .hvigor > .idea > AppScope > entry > hvigor > oh_modules - .gitignore - build-profile.json5 - code-linter.json5 - hvigorfile.ts - local.properties - oh-package.json5 - oh-package-lock.json5以下是鸿蒙ArkTS项目结构的详细解释:文件夹解释.hvigor这个文件夹通常包含与HVigor(可能是一个构建系统或特定工具链的引用,但并非广泛认可的HarmonyOS标准术语)相关的配置文件或缓存。它可能用于存储编译过程的中间文件或日志,具体取决于项目配置。.idea这是一个由IntelliJ IDEA(或其派生IDE如DevEco Studio)创建的文件夹,用于存储项目的IDE特定设置,如代码风格、工作区设置、编译选项等。这有助于团队成员在统一的开发环境中工作。AppScope这个文件夹可能是项目中的一个特定作用域或模块,用于组织与应用逻辑紧密相关的代码或资源。具体内容将取决于项目的需求和设计。entry入口文件夹,通常包含应用的入口文件,如主Ability(Ability是HarmonyOS应用的基本构成单元,用于表示应用的一个页面或功能)的定义。这是用户与应用交互的起点。hvigor与第一个.hvigor文件夹相似,这个hvigor文件夹的存在可能是项目特定配置的一部分,用于存储与构建、测试或部署相关的额外文件。然而,由于它不以点(.)开头,它更可能是项目源代码的一部分,而非IDE自动生成或使用的隐藏文件夹。oh_modules远程模块文件夹,HarmonyOS允许应用通过模块化的方式组织和复用代码。oh_modules文件夹可能包含从远程仓库下载的模块或库,这些模块或库在编译时被引入到应用中。文件解释.gitignoreGit忽略文件,用于指定哪些文件或文件夹不应该被Git跟踪(即不需要提交到版本控制系统中)。这有助于避免将编译产物、临时文件或敏感信息(如密码和密钥)提交到代码仓库。build-profile.json5编译配置文件,使用JSON5格式(JSON的超集,允许一些语法上的宽松),定义了编译过程中的配置选项,如优化级别、包含的库、插件等。code-linter.json5代码检查配置文件,定义了代码风格和格式检查的规则。这些规则帮助维护代码的一致性和质量。hvigorfile.ts可能是项目特定的配置文件,用于指定项目的编译、构建或运行时的特定选项。尽管不是HarmonyOS标准文件,但根据项目命名约定,它可能与构建过程或配置有关。local.properties本地属性文件,用于存储项目本地环境的特定配置,如SDK路径、数据库连接信息等。这些信息通常不会提交到版本控制系统中,因为它们可能因开发者的环境而异。oh-package.json5HarmonyOS应用的包配置文件,类似于Web开发中的package.json,定义了应用的元数据、依赖项、脚本等。这是HarmonyOS应用开发和部署的核心文件之一。oh-package-lock.json5依赖锁文件,记录了项目依赖项的精确版本,以确保在不同环境中构建和部署应用时的一致性。它类似于Node.js的package-lock.json文件。鸿蒙ArkTS项目结构通过合理的文件夹和文件组织,提高了代码的可读性、可维护性和可扩展性。每个部分都承担着不同的角色,共同支持应用的开发和部署。
  • [技术干货] 鸿蒙模拟器支持与不支持的功能
    HarmonyOS NEXT Developer Beta5作为鸿蒙系统的一个开发者预览版本,主要面向开发者提供了一系列的功能和更新。以下是对其支持的功能、不支持的功能以及与真机测试区别的详细分析:支持的功能性能和稳定性增强:在Beta3的基础上,进一步增强了开放能力的性能和稳定性,确保开发者在使用过程中能够获得更加稳定和高效的系统体验。对部分开放能力的缺陷进行了修复,提高了系统的整体可靠性和用户体验。新增和增强特性:引入了少量新增特性,如支持媒体库创建资源、文件选择能力等,为开发者提供更多灵活性和便利性。针对元服务,新增了Core File Kit(文件基础服务)的支持,如选择音频文件相关接口AudioViewPicker,以及媒体文件管理服务(Media Library Kit)的新增支持“使用安全控件创建媒体资源”的方式。开发工具和文档更新:IDE(如DevEco Studio)更新到了相应的Beta5版本,提供了更丰富的开发功能和更稳定的开发环境。文档也更新到了Beta5版本,为开发者提供了更详细的开发指导和参考。安全和隐私保护:引入了涉诈剧本检测功能,金融支付类应用在用户转账、支付前,可以通过调用Device Security Kit检测用户是否受到欺诈威胁,并根据检测结果对用户进行有效提示或拦截。不支持的功能部分旧特性的移除:如RichText组件在元服务中的使用被移除,开发者需要使用其他方式(如AtomicServiceWeb/Web/ArkUI原生替代)来实现类似的功能。特定硬件功能的直接模拟:虽然鸿蒙模拟器提供了器件仿真功能,但可能无法完全模拟所有硬件设备的特定功能,特别是那些需要特定硬件支持的功能。实时硬件交互:鸿蒙模拟器主要是一个软件工具,它无法提供与真实硬件设备实时交互的能力。对于需要实时硬件交互的应用测试,可能需要使用真实设备或远程模拟器。目前的鸿蒙next模拟器上应用少的可怜,只有设置、图库、文件管理这3个应用而已与真机测试的区别环境差异:鸿蒙模拟器是在计算机上运行的软件环境,而真机测试则是在真实的鸿蒙系统设备上进行的。因此,模拟器可能无法完全模拟真实设备的所有硬件和软件特性。性能表现:由于模拟器是在计算机上运行的,其性能表现可能受到计算机硬件配置的影响。而真机测试则能够更准确地反映应用在实际设备上的性能表现。测试范围:模拟器通常用于初步的功能测试和界面测试,帮助开发者快速发现和修复问题。而真机测试则更侧重于验证应用在实际使用场景下的稳定性和兼容性。用户体验:模拟器无法提供与真实设备相同的用户体验,如触摸反馈、传感器数据等。因此,在开发过程中,开发者需要结合真机测试来确保应用的实际使用效果。综上所述,HarmonyOS NEXT Developer Beta5为开发者提供了丰富的功能和更新,但也有一些不支持的功能和与真机测试的区别。开发者在开发过程中应充分利用模拟器的优势进行初步测试,并结合真机测试来确保应用的质量和稳定性。
  • [技术干货] 鸿蒙ArkTs项目配置 —— oh-package.json5
    在鸿蒙(HarmonyOS)的ArkTS(Ark TypeScript)项目中,oh-package.json5 文件扮演着类似于传统Web开发中的 package.json 或Android开发中的 build.gradle(或 AndroidManifest.xml)文件的角色,但它是专门为鸿蒙系统应用设计的。这个文件用于定义鸿蒙应用的基本信息、依赖关系、构建配置等。下面是oh-package.json5的默认文件内容{ "name": "entry", "version": "1.0.0", "description": "Please describe the basic information.", "main": "", "author": "", "license": "", "dependencies": {} }具体到你的 oh-package.json5 文件内容,它包含了一些基本的信息字段,虽然有些字段(如 main、author、license)在这个上下文中可能不是必须的或当前未被使用,但它们为未来的扩展或特定构建任务提供了空间。下面是对这些字段的简要说明:name: 应用的名称,这里被设置为 "entry",这通常指的是应用的入口模块或组件。version: 应用的版本号,格式为 主版本号.次版本号.修订号,这里为 "1.0.0"。description: 应用的描述信息,这里提示“Please describe the basic information.”,实际开发中应填写应用的详细描述。main: 应用的入口文件或模块,但在鸿蒙ArkTS项目中,这个字段的具体作用可能依赖于项目的具体构建配置。在某些情况下,它可能不是必需的,因为鸿蒙应用可以有多个入口点(如页面),这些入口点可能通过其他方式指定。author: 应用的作者或开发者,这里为空,实际使用时应该填写作者的信息。license: 应用的许可证类型,这里为空,表示没有指定许可证。在实际应用中,应该根据项目的开源协议填写相应的许可证信息。dependencies: 应用的依赖项,这里为空对象 {},表示当前应用没有声明任何依赖。在需要时,可以在这里列出项目所需的npm包或其他鸿蒙模块。需要注意的是,oh-package.json5 使用了 .json5 扩展名,这意味着它遵循 JSON5 而不是严格的 JSON 格式。JSON5 是一种 JSON 的超集,它允许一些额外的语法,比如尾随逗号、注释等,这使得文件更加易读和易于维护。在鸿蒙ArkTS项目中,oh-package.json5 文件是构建和部署应用时的重要配置文件之一。通过编辑这个文件,开发者可以控制应用的构建行为、定义应用的元信息和依赖关系等。
  • [技术干货] 鸿蒙ArkTs项目配置 —— obfuscation-rules.txt
    obfuscation-rules.txt 文件在鸿蒙ArkTS项目中用于定义代码混淆的规则。这些规则指定了哪些代码元素(如属性名、顶层作用域名称、文件名等)应该被混淆,以及哪些应该被保留不被混淆。通过合理配置这些规则,可以在保护代码不被轻易反编译的同时,避免混淆导致的应用运行时错误。其默认配置如下# Define project specific obfuscation rules here. # You can include the obfuscation configuration files in the current module's build-profile.json5. # # For more details, see # https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5 # Obfuscation options: # -disable-obfuscation: disable all obfuscations # -enable-property-obfuscation: obfuscate the property names # -enable-toplevel-obfuscation: obfuscate the names in the global scope # -compact: remove unnecessary blank spaces and all line feeds # -remove-log: remove all console.* statements # -print-namecache: print the name cache that contains the mapping from the old names to new names # -apply-namecache: reuse the given cache file # Keep options: # -keep-property-name: specifies property names that you want to keep # -keep-global-name: specifies names that you want to keep in the global scope -enable-property-obfuscation -enable-toplevel-obfuscation -enable-filename-obfuscation -enable-export-obfuscation配置方法基础配置在obfuscation-rules.txt文件中,你可以直接写入混淆选项和保留选项。这些选项会指导编译器如何对代码进行混淆。# 禁用所有混淆 -disable-obfuscation # 开启属性名混淆 -enable-property-obfuscation # 开启顶层作用域名称混淆 -enable-toplevel-obfuscation # 开启文件名混淆 -enable-filename-obfuscation # 开启导出名称混淆 -enable-export-obfuscation注意:这些选项默认可能已经在obfuscation-rules.txt中启用,具体取决于你的开发环境和项目配置。保留选项保留选项用于指定哪些代码元素不应该被混淆。这对于保持应用功能正常非常关键。# 保留特定属性名 -keep-property-name age firstName # 保留全局名称 -keep-global-name MyClass MyFunction # 保留文件名 -keep-file-name index entry # 保留.d.ts文件中的名称 -keep-dts ./path/to/file.d.ts这些保留选项可以确保即使开启了混淆,指定的代码元素也会保持原样,不会被混淆。配置文件引用在build-profile.json5文件中,你需要引用obfuscation-rules.txt文件,以便编译器能够识别并使用这些混淆规则。{ "arkOptions": { "obfuscation": { "ruleOptions": { "enable": true, "files": ["./obfuscation-rules.txt"] } } } }如果你有多个混淆规则文件,可以将它们全部添加到files数组中。注意事项性能影响:代码混淆会增加编译时间和运行时的一些开销,因为编译器需要处理额外的混淆逻辑。调试难度:开启混淆后,代码的错误栈跟踪将不再直接反映源码中的名称,这可能会增加调试的难度。兼容性:确保你的应用或库与鸿蒙系统的版本兼容,因为不同版本的鸿蒙系统可能对混淆的支持有所不同。通过以上步骤,你可以在鸿蒙ArkTS项目中配置和使用obfuscation-rules.txt文件来定义代码混淆规则,从而保护你的代码不被轻易反编译。
  • [技术干货] 鸿蒙ArkTs项目配置 —— hvigorfile.ts
    在鸿蒙(HarmonyOS)ArkTS项目中,hvigorfile.ts(或类似的配置文件,具体名称可能因项目或构建工具的不同而有所变化)通常不是鸿蒙官方SDK或ArkTS框架直接提供的一个标准文件。然而,从您提供的代码片段来看,这个文件似乎是一个自定义的配置文件,用于配置与构建过程相关的任务或插件,特别是通过引入了一个名为@ohos/hvigor-ohos-plugin的插件。默认配置如下:import { hapTasks } from '@ohos/hvigor-ohos-plugin'; export default { system: hapTasks, /* Built-in plugin of Hvigor. It cannot be modified. */ plugins:[] /* Custom plugin to extend the functionality of Hvigor. */ }hvigorfile.ts 的作用配置构建任务:该文件可能用于定义和配置项目的构建任务。这些任务可能包括编译、打包、混淆、测试等各个阶段。集成插件:通过引入和配置插件,hvigorfile.ts 可以扩展构建系统的功能。在您的例子中,它引入了@ohos/hvigor-ohos-plugin,这可能是一个专门用于鸿蒙应用构建的插件。配置方式根据您提供的代码片段,hvigorfile.ts 的配置方式相对简单,因为它只包含了一个系统插件的引用和一个空的插件数组。但是,这里有几个可能的扩展点:添加自定义插件:如果您需要添加自定义插件或第三方插件来扩展构建功能,您可以在plugins数组中添加相应的插件配置。这些插件可能需要您先通过npm或其他包管理工具安装到项目中。配置系统插件:虽然您提供的代码示例中system字段被设置为hapTasks且注释说明不能修改,但在实际应用中,您可能需要查看@ohos/hvigor-ohos-plugin的文档来了解是否有任何可配置的选项。如果有的话,您可能需要在hvigorfile.ts中或通过其他方式提供这些配置。环境变量和条件构建:虽然hvigorfile.ts本身可能不直接支持环境变量和条件构建,但您可以通过构建脚本或命令行参数来传递不同的配置,然后在hvigorfile.ts中根据这些参数来调整构建行为。与项目结构集成:确保hvigorfile.ts位于项目的正确位置,并在构建脚本中正确引用。这通常取决于您使用的构建工具或IDE。注意事项文档和社区:由于@ohos/hvigor-ohos-plugin和hvigorfile.ts看起来像是特定于某个项目或构建工具的,因此建议查阅相关的文档或社区资源来获取更详细的信息和示例。版本兼容性:鸿蒙OS和ArkTS框架都在不断发展中,因此请确保您使用的插件和构建工具与您的鸿蒙OS版本兼容。自定义与标准:虽然自定义配置文件如hvigorfile.ts可以带来很大的灵活性,但也要注意不要过度自定义,以免在将来升级鸿蒙OS或构建工具时遇到兼容性问题。
  • [技术干货] 鸿蒙ArkTs项目配置 —— build-profile.json5
    在鸿蒙(HarmonyOS)ArkTS项目中,build-profile.json5 文件用于定义构建配置。这个文件允许开发者为不同的构建目标(如调试版本、发布版本等)和平台(如手机、平板、穿戴设备等)设置不同的构建选项和参数。通过使用 .json5 扩展名,这个文件支持 JSON5 语法,这意味着它比标准的 JSON 语法更加灵活,允许使用尾随逗号、注释等特性。默认配置如下{ "apiType": "stageMode", "buildOption": { }, "buildOptionSet": [ { "name": "release", "arkOptions": { "obfuscation": { "ruleOptions": { "enable": false, "files": [ "./obfuscation-rules.txt" ] } } } }, ], "targets": [ { "name": "default" }, { "name": "ohosTest", } ] }build-profile.json5 的作用定义API类型:通过 apiType 字段指定API的兼容性类型,如 "stageMode" 表示使用阶段性API模式。配置构建选项:在 buildOption 字段中定义全局构建选项,但在您的示例中它是空的。实际使用中,这里可以包含影响整个构建过程的设置。设置构建选项集:buildOptionSet 字段允许定义多个构建选项集,每个选项集都对应一个构建目标(如 release 表示发布版本)。每个选项集可以包含特定的Ark编译选项(arkOptions),这些选项影响ArkTS代码的编译过程。指定构建目标:targets 字段列出了所有可用的构建目标。在您的示例中,有两个目标 default 和 ohosTest,但实际上它们并没有与 buildOptionSet 中的选项集直接关联。在更复杂的配置中,可能会看到构建目标与特定的构建选项集相关联。配置方式根据您的示例,以下是一些配置方式的说明和可能的扩展:启用混淆:在 release 构建选项集中,obfuscation 字段定义了混淆相关的配置。您可以通过将 enable 设置为 true 来启用混淆,并指定 files 字段中的 obfuscation-rules.txt 文件作为混淆规则文件。添加构建选项:如果您需要为构建过程添加其他选项(如优化级别、资源压缩等),可以在 buildOption 或 buildOptionSet 的相应字段中定义它们。关联构建目标与选项集:虽然您的示例中没有直接展示,但在某些情况下,您可能需要将特定的构建目标与 buildOptionSet 中的选项集关联起来。这通常通过构建脚本或IDE的构建设置来完成。调整API类型:如果您的应用需要使用不同版本的API,可以通过修改 apiType 字段的值来切换API兼容性模式。注意事项文档和兼容性:确保查阅最新的鸿蒙OS和ArkTS文档,以了解可用的构建选项和兼容性要求。测试:在更改构建配置后,务必进行全面的测试以确保应用的功能没有受到影响。版本控制:将 build-profile.json5 文件纳入版本控制,以便在团队中共享和跟踪更改。请注意,由于鸿蒙OS和ArkTS框架的不断发展,build-profile.json5 文件的具体配置选项和可用性可能会发生变化。因此,建议定期查看官方文档以获取最新信息。
  • [技术干货] 鸿蒙ArkTs项目配置 —— .gitignore
    在鸿蒙ArkTs项目中,.gitignore 文件扮演着重要的角色,它用于告诉Git版本控制系统哪些文件或目录应该被忽略,不纳入版本控制中。这有助于保持仓库的整洁,避免提交不必要或敏感的文件,如编译产物、临时文件、依赖库等。.gitignore 的用途忽略敏感信息和不必要的文件:避免将包含敏感信息(如API密钥、密码等)的文件或大型二进制文件(如依赖库、编译产物等)提交到仓库中,以保护项目安全和减少仓库体积。提高仓库性能:减少不必要的文件提交,可以降低仓库的复杂度,提高Git操作的速度和效率。减少冲突:在多人协作的环境中,忽略经常变化的文件(如日志文件、临时文件等)可以减少合并冲突和错误。.gitignore 的配置方法在鸿蒙ArkTs项目中配置.gitignore文件,可以按照以下步骤进行:创建.gitignore文件:在项目的根目录下创建一个名为.gitignore的文件。可以使用文本编辑器手动创建,也可以使用命令行工具(如touch .gitignore)在Unix/Linux系统中创建。编写忽略规则:打开.gitignore文件,每行编写一个忽略规则。规则可以是具体的文件路径、文件名,也可以是使用通配符和正则表达式匹配的文件模式。示例中的规则/node_modules、/oh_modules、/.preview、/build、/.cxx、/.test分别表示忽略根目录下的node_modules、oh_modules、.preview、build、.cxx、.test目录及其所有内容。保存并提交:保存.gitignore文件的修改。将.gitignore文件添加到Git版本控制中,并使用git commit命令提交到仓库。示例解析/node_modules /oh_modules /.preview /build /.cxx /.test每条规则前面的/表示从仓库的根目录开始匹配。这些规则确保了Git在版本控制过程中会忽略这些指定的目录及其所有内容,从而避免它们被意外地提交到仓库中。注意事项.gitignore文件只对尚未被Git跟踪的文件有效。如果文件已经被Git跟踪,即使它在.gitignore文件中被列出,Git也不会停止跟踪它。要从Git中删除已经跟踪的文件,需要使用git rm --cached <file>命令。可以在.gitignore文件中使用注释(以#开头的行)来添加说明信息,帮助其他开发者理解忽略规则。可以通过在全局Git配置中设置core.excludesfile变量来指定一个全局的.gitignore文件,这样所有仓库都会应用这个全局的忽略规则。但是,这通常不推荐用于项目特定的忽略规则,因为项目间的需求可能不同。
  • [技术干货] 鸿蒙ArkTs项目配置 —— hvigor-config.json5
    在鸿蒙ArkTS项目中,hvigor/hvigor-config.json5 文件(或类似命名的配置文件,具体取决于项目的构建系统和插件)通常用于配置与ArkTS编译过程相关的选项和参数。这个文件可能不是鸿蒙官方SDK直接提供的一部分,而是由某个特定的构建工具或插件(如可能的Hvigor插件,尽管这不是鸿蒙官方直接提供的)使用的。hvigor/hvigor-config.json5 的默认配置如下{ "modelVersion": "5.0.0", "dependencies": { }, "execution": { // "analyze": "normal", /* Define the build analyze mode. Value: [ "normal" | "advanced" | false ]. Default: "normal" */ // "daemon": true, /* Enable daemon compilation. Value: [ true | false ]. Default: true */ // "incremental": true, /* Enable incremental compilation. Value: [ true | false ]. Default: true */ // "parallel": true, /* Enable parallel compilation. Value: [ true | false ]. Default: true */ // "typeCheck": false, /* Enable typeCheck. Value: [ true | false ]. Default: false */ }, "logging": { // "level": "info" /* Define the log level. Value: [ "debug" | "info" | "warn" | "error" ]. Default: "info" */ }, "debugging": { // "stacktrace": false /* Disable stacktrace compilation. Value: [ true | false ]. Default: false */ }, "nodeOptions": { // "maxOldSpaceSize": 8192 /* Enable nodeOptions maxOldSpaceSize compilation. Unit M. Used for the daemon process. Default: 8192*/ // "exposeGC": true /* Enable to trigger garbage collection explicitly. Default: true*/ } }.hvigor/hvigor-config.json5 的作用编译选项配置:允许开发者为ArkTS代码的编译过程指定各种选项,如分析模式、是否启用守护进程编译、增量编译、并行编译等。日志和调试:配置日志级别和调试选项,以帮助开发者在编译过程中获取更多信息或进行问题排查。Node.js选项:为构建过程中使用的Node.js进程配置内存限制和垃圾回收选项。配置方法在提供的示例中,hvigor-config.json5 文件包含了一些被注释掉的配置项。要配置这些选项,您只需取消注释相应的行,并根据需要修改其值。以下是一些可能的配置示例:启用高级分析模式:"execution": { "analyze": "advanced" }禁用增量编译:"execution": { "incremental": false }设置日志级别为调试:"logging": { "level": "debug" }调整Node.js的最大旧空间大小:"nodeOptions": { "maxOldSpaceSize": 4096 // 设置为4GB }注意事项文档和插件支持:由于.hvigor/hvigor-config.json5可能不是鸿蒙官方SDK直接提供的一部分,因此建议查阅与Hvigor插件或您正在使用的构建系统相关的文档,以获取有关如何配置和使用此文件的最新和最准确的信息。默认值:请注意,配置文件中列出了许多带有默认值的选项。如果您不确定某个选项的用途,可以保留其默认值,或查阅相关文档以获取更多信息。兼容性:随着鸿蒙OS和ArkTS框架的发展,构建系统和插件可能会发生变化。因此,请确保您的配置文件与当前使用的鸿蒙OS版本和构建系统兼容。安全性:如果配置文件包含敏感信息(尽管在这个特定的配置文件中不太可能),请确保妥善处理这些信息,以防止未经授权的访问。
总条数:208 到第
上滑加载中