• [技术干货] 【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 系列技术直播
  • [技术干货] harmony-cordova如何快速Android APP和Ios APP生成原生态鸿蒙APP
    harmony-cordova摘要cordova是美国Apache基金会下的移动端跨平台开源项目,目前并不支持HarmonyOS next版本,但是在鸿蒙三方库中心的harmony-cordova主要用于鸿蒙版跨平台研发,特别是原Android和Ios的cordova项目,无需投入任何研发即可轻松生成鸿蒙版APP。背景知识Android是谷歌旗下的操作系统,由于制裁原因,华为已不能使用Android操作系统,从HarmonyOS Next版本之后,华为手机也慢慢将不再兼容安卓APP,原安卓APP,如果继续要在华为手机上用,必须适配鸿蒙操作系统,说适配是好听的,真实情况是在HarmonyOS next操作系统上全部重新研发,不是简单的适配工作,原Android的代码已一无是处了,这样势必增加研发成本。对于大厂这些都是小case了,但是对于中小企业在新的操作系统投入研发,投入的时间成本和资金势必难以接受,另外由于HarmonyOS是一个新的生命,社区支持不够成熟,人才短缺很多中小企业就会望而生畏了。为此我推荐cordova混合研发,只有cordova才是真正的混合研发免费且开源,调用原生态API,一次研发满足安卓、Ios和鸿蒙操作系统。对于市场上流行的开源项目,我可以好不夸张的说只有cordova,没有之一了。国内也有也有一个开发框架,托管了APP的打包工作,虽然也是打着免费的口号,确强制集成了不该集成的SDK,以至于在上架的时候无法满足应用市场的要求和国家法律的要求,因为要说明这些SDK的作用是什么,但是很多开发者就不知道集成有这个SDK,因此隐私政策写不好而不能上架,因为盈利性公司不是基金会,不会提供免费的午餐。我们能够理解,这里我就不明说了。因此对于用心运营的APP的企业,我推荐混合式研发,也不要装X全部使用原生研发,后面维护和升级拿石头砸自己脚。鸿蒙原生开发原生鸿蒙研发支持ArkTS和C/C++语言。并不支持Java,Java的同学可能比较难过,其实也不用担心,看我接下来的分析,ArkTS是华为在TS语言上的进一步优化的后开发语言,不同于TS语言,学起来并不难,只需要几分钟看看就可以上手了,当然这是对于之前熟练的掌握了Java、Js或C/C++的基础上,说实在的如果有了前面的基础TS无需单独学习,直接就可以上手,如果使用native c/c++就不同了,C/C++语言会使很多开发者心里发怵,以致于不敢轻易创建native C++项目,所以有一个部分开发者只能使用ArkTS开发原生鸿蒙APP了,但这样就失去了优势,只能开发更上层应用性的内容,涉及框架或者底层的开发就无法胜任了.harmony-cordova就是使用C/C++研发的,cordova的插件也是C/C++研发的,只有涉及到鸿蒙UI层的必须使用ArkTS了。所以是两者结合开发的,harmony-cordova所涉及的技术方案,我这里不过多的说明,大家只要会用就可以了。接下来说一下harmonyOS吧,HarmonyOS 内核并不是Linux内核,虽然支持C/C++研发,但是并不是现存所有的Linux的开源项目都可以集成到HarmonyOS上的,在加上DevEco采用的是CMake编译,如果原Linux的开源项目是Makefile编译的,要移植到HarmonyOS上,也并非易事,需要Linux C/C++开发的熟手才可以做到,并非入门级别的就可以胜任。如果原Linux下的开源项目,源文件数量少,可以直接拷贝源码集成,如果原Linux下的开源项目文件众多,编译复杂,就需要使用交叉编译移植到HarmonyOS上,为什么要移植Linux开源项目呢?因为大多项目都会依赖Linux的动态库so,所以要进行移植,如果不移植很多C/C++程序就很难开发。但是并不是所有的Linux的开源项目都可以移植的,因为HarmonyOS并不是Linux内核,使用的编译器也不是gcc,所以Linxu下面的so之间互相依赖,因此在Harmony OS上有些so无法移植。另外Linux下面的C/C++的程序和HarmonyOS也有差异,HarmonyOS也预制集成了类似Linux下的so,虽然有预制so,但是并不是所有的函数都可以使用,因为接口并不全,特别是一些涉及到内核的调用和Linux并不一样。综上所述,在HarmonOS平台上,使用native c/c++研发框架类的har,则需要更多的C/C++开发经验,这方面的人才会更少。因此您在网上看到最多的都是ArkTS开发的。harmony-cordova为什么要研发鸿蒙版cordova,公司研发harmony cordova是因为公司内的APP原使用cordova框架研发,很遗憾的是Apache基金会不支持,所以我们公司就自己研发了,研发好以后首先使用在我们公司自己的产品上,1.0版本首先满足了我们公司自己需要插件,后面会慢慢升级以兼容大部分cordova插件。自定义插件,很多Android项目或者Ios项目,集成了自定义插件,例如每个手机厂商的推送功能,都是自定义插件研发的,这里插句话,不要集成第三方的统一推送的SDK,会让你的APP由于隐私政策审核起来出现很多的问题,所以建议集成所有手机厂商自己的推送SDK,因为手机厂商并不多,集成也没有太多的工作。还有OSS对象存储等都需要自定义插件,harmony-cordova也集成了一些常用的自定义插件。如果您的项目中有自定义插件,需要使用harmony-cordova的,就需要开发者支持了。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的插件接口不变,但是返回值会有所调整,后续文档会逐步完善,在使用本插件跨平台研发时请联系开发者提供技术服务。                                                               
  • 【隐私安全】呼吁华为加强剪贴板权限管理,共同守护用户隐私!
    【隐私安全】呼吁华为加强剪贴板权限管理,共同守护用户隐私!随着移动设备在我们日常生活中的重要性日益增加,用户对于个人隐私的关注也随之提高。众所周知,苹果iPhone手机在保护用户隐私方面做得相当出色,特别是在处理应用程序对剪贴板的访问方面。iPhone不仅会提醒用户哪些应用试图访问剪贴板,而且还提供了详细的权限设置,让用户可以控制哪些应用可以读取剪贴板内容。 相比之下,华为手机虽然在剪贴板管理方面提供了一定程度上的透明度——当应用尝试读取剪贴板时,系统会给出提示,但遗憾的是,这种提示机制并不足以保护用户的隐私。实际上,尽管有提示存在,用户依然无法有效地控制哪些应用可以访问剪贴板内容。这为用户隐私、甚至是商业机密和国家秘密带来了潜在的风险。   据调查,目前已有超过50款应用被发现可以在未经明确授权的情况下,随意读取用户的剪贴板记录。这种行为不仅侵犯了用户的隐私权,还可能导致敏感信息如密码、商业机密等在用户不知情的情况下被上传至云端服务器进行分析或用于训练某些大型模型。即使这些数据在训练过程中进行了脱敏处理,但仍有可能因为疏忽导致非敏感特征的信息被泄露,从而进一步在网络上传播,造成不可预见的后果。   鉴于此情况,我们强烈呼吁华为公司采取行动,加强其操作系统中对于剪贴板访问的权限管理。华为作为一家领先的科技企业,在保障用户信息安全方面负有重大责任。通过引入更严格的剪贴板权限控制机制,不仅可以提升用户体验,更能增强用户对品牌的信任感。   希望华为能尽快响应这一呼吁,推出更加完善的剪贴板权限管理系统,为用户提供更好的隐私保护服务。让我们共同努力,守护每个人的数字生活安全!  
  • [分享交流] 产教融合专家大讲堂·第②期官网直播平台获奖用户名单公示
    产教融合专家大讲堂·第②期官网直播平台获奖用户名单公示:185****8920157****7269139****2457189****3693在直播过程中,被讲师选中的优质问题如下:您认为校企合作在人才培养创新中优势有哪些?在咱们学校,是怎样结合学校的优势,来推动校企合作的人才培养?【请以上获奖嘉宾在8月29号18点前填写问卷反馈获奖的个人收货信息,方便我们发放礼品,过期不候!】https://survey.huaweicloud.com/survey/#/qtn?id=2bfde47aa0c64f658df5295f8c128075//////////////////////////////////​“产教融合专家大讲堂”系列直播活动第二期来啦,本期主题为““校企合作·协同育人”人培模式探索与实践分享”,我们邀请到了山东科技职业学院 物联网应用技术专业主任王延亮、郑州电力高等专科学校 信息通信学院院长冯明卿、山东信息职业技术学院 软件与大数据系主任武洪萍,为大家分享《深化产教融合共同体合作,画好产教融合、校企合作同心圆》、《行业高职院校信创人才培养的探索与实践》、《科教融汇 协同创新 产教深度融合的软件与大数据专业群建设》三大议题。直播链接:https://bbs.huaweicloud.com/live/edu_live/202408261600.html直播时间:8月26日(星期一)16:00-18:00福利1:发送口令,参与抽奖官网以及视频号直播间发口令“校企合作”,抽手持便携风扇。注:官网随机抽取3名,视频号随机抽取3名。官网直播链接:https://bbs.huaweicloud.com/live/edu_live/202408261600.html视频号直播链接:请扫描上图二维码。福利2:有奖提问直播过程中,每位直播讲师会评选1个优质问题送便携水杯。欢迎大家踊跃提问~名额有限。【请获奖嘉宾在8月29号18点前在官网以及视频号平台私信反馈获奖的个人收货信息,方便我们发放礼品,过期不候!】
  • [分享交流] OpenHarmony 兼容性认证介绍
    注附件ppt为兰州大学2024年2022级人工智能暑期学校暨华为开发者布道师活动的部分讲义PPT备注首先,先简要介绍一下OpenHarmony。OpenHarmony是一个开源项目,是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的,它的代码仓部署在gitee上。然后不同公司组织可以基于这个开源项目,开发自己的商用设备、发行版等产品。最后既然它是一个开源项目,就需要一个具有活力的开发者社区,所以我们可以看到这些指标中有一个社区贡献者5100+的数据。然后我将从什么是兼容性测试、为什么要进行兼容性测试、以及兼容性测试的流程 这三个方面进行介绍,也就是What、Why、How,首先是What。刚才我们提到了OpenHarmony是一个开源项目,其次OpenHarmony也是一个操作系统,它针对不同性能需求的设备定义了三种基础系统类型:轻量系统、小型系统、标准系统。区分这三种类型的一个最主要的指标就是,设备支持内存的大小。轻量系统设备的最小内存为128KB,例如一些传感器、穿戴类设备等;小型系统设备的最小内存为1MB,一些比较典型的产品比如电子猫眼、路由器以及行车记录仪等;而标准系统设备的最小内存为128MB,例如冰箱显示屏以及我们前一段时间做的水质监测设备,这些设备需要更强的图形交互能力以及完整的应用框架。在我们进行OpenHarmony应用以及设备的开发时,需要根据实际需求选择这三种系统类型之一。兼容性认证主要分为两项内容:第一项是向兼容性工作组提交兼容性规范自测表,这张图展示了一部分填写内容;兼容性认证的第二项内容是提交XTS测试报告,包括应用兼容性测试、分布式兼容性测试、系统安全漏洞测试等共计五项测试,而每项测试包含若干个模块。进行每项测试需要从OH官网获取测试套件,比如你将测试代码放到个人PC,然后将OpenHarmony设备与PC连接,再通过命令行启动测试框架就可以了。接下来介绍 “为什么需要兼容性认证”在2024年的今天,我们生活中常见的智能终端是多种多样的,手机、电脑、智能手表、等等。到2025年,预计人均持有的智能终端设备(比如手机、电脑、智能手表等)将超过9台。然而,更多的设备并没有带来更好的全场景体验。设备之间的连接复杂,生态无法共享,数据难以互通。系统的碎片化从底层制约了万物互联时代的业务创新,亟需一个统一的解决方案。既然智能终端领域存在这么一些问题,华为给出的解决方案就是在各种终端使用同一个操作系统——也就是鸿蒙,并且对鸿蒙生态的展望是:构建一个万物互联的智能世界,这种统一的生态具有两个关键特征:第一:每个APP只需开发、维护一套代码、第二:APP之间跨设备流转方便快捷。
  • [技术干货] HarmonyOS FA和Stage模型中,应用能否确认系统的内存是不是足够创建以及指定UIAbility在那个进程运行
     在 HarmonyOS 中,FA(Feature Ability)模型和 Stage 模型都提供了管理应用生命周期的机制,但它们在处理系统资源和进程管理方面有一些不同。关于确认系统内存是否足够以及指定 `UIAbility` 在特定进程中运行的问题,以下是详细说明。  ### 内存检查  无论使用 FA 模型还是 Stage 模型,应用本身无法直接控制或查询系统的内存分配情况,因为这是操作系统的职责。然而,可以通过某些 API 获取当前进程的内存状态,并做出相应的决策。  #### 示例代码(Java)  下面是获取当前进程内存信息的示例代码:  ```java import ohos.system.MemoryInfo; import ohos.app.Context;  public class MemoryHelper {     public static void checkMemory(Context context) {         MemoryInfo memoryInfo = new MemoryInfo();         boolean success = memoryInfo.refresh(context);                  if (success) {             long availableMemory = memoryInfo.getAvailMem(); // 可用内存             long totalMemory = memoryInfo.getTotalMem();     // 总内存                          // 打印内存信息             System.out.println("Available Memory: " + availableMemory);             System.out.println("Total Memory: " + totalMemory);              // 根据可用内存进行判断             if (availableMemory < SOME_THRESHOLD) {                 // 内存不足时采取措施,例如减少功能或提示用户             }         }     } } ```  你可以在适当的时候调用 `checkMemory` 方法来获取内存信息并根据需要做出相应的处理。  ### 指定 `UIAbility` 在特定进程中运行  在 HarmonyOS 中,默认情况下,一个应用的所有能力(包括 `UIAbility` 和 `DataAbility` 等)都运行在同一个进程中。如果需要,你可以通过在配置文件中指定使其在单独的进程中运行。  #### 在 `config.json` 中指定进程  你可以在 `config.json` 文件中为每个 `UIAbility` 指定不同的进程。以下是一个示例:  ```json {   "module": {     "abilities": [       {         "name": "MainAbility",         "type": "page",         "label": "MainAbility",         "description": "Main ability",         "icon": "$media:icon",         "launchType": "standard",         "process": "main_process"   // 指定进程名       },       {         "name": "SecondaryAbility",         "type": "page",         "label": "SecondaryAbility",         "description": "Secondary ability",         "icon": "$media:icon",         "launchType": "standard",         "process": "secondary_process" // 指定另一个进程名       }     ]   } } ```  在上述示例中,`MainAbility` 将在 `main_process` 进程中运行,而 `SecondaryAbility` 将在 `secondary_process` 进程中运行。这样可以在必要时将不同的能力隔离在不同的进程,以减少内存压力或提高稳定性。  ### 使用 Stage 模型指定进程  在 Stage 模型中,也可以通过类似的方法在配置文件中指定不同的进程。  #### 在 `config.json` 中指定进程(Stage 模型)  ```json {   "module": {     "mainAbility": {       "name": "MainAbility",       "type": "page",       "label": "MainAbility",       "description": "Main stage ability",       "icon": "$media:icon",       "launchType": "standard",       "process": "main_process"   // 指定进程名     },     "abilities": [       {         "name": "SecondaryAbility",         "type": "page",         "label": "SecondaryAbility",         "description": "Secondary stage ability",         "icon": "$media:icon",         "launchType": "standard",         "process": "secondary_process" // 指定另一个进程名       }     ]   } } ```  ### 总结  - **内存检查**:可以通过 `MemoryInfo` 类获取当前进程的内存信息,并根据实际情况做出相应的处理。 - **指定进程**:可以在 `config.json` 文件中为不同的 `Ability` 指定不同的进程,以实现进程隔离和更好的资源管理。  通过以上方法,你可以在 HarmonyOS 中更加灵活地管理应用的资源和进程。
  • [技术干货] HarmonyOS 如何实现匿名内部类
    在 HarmonyOS 中,Java 代码环境下你仍然可以使用传统的匿名内部类。这里有一个详细示例,展示了如何在 HarmonyOS 中实现匿名内部类。示例代码1. 使用匿名内部类处理按钮点击事件import ohos.aafwk.ability.Ability;import ohos.aafwk.content.Intent;import ohos.agp.components.Button;import ohos.agp.components.Component;import ohos.agp.window.service.WindowManager;public class MainAbility extends Ability { @Override public void onStart(Intent intent) { super.onStart(intent); setUIContent(ResourceTable.Layout_ability_main); Button myButton = (Button) findComponentById(ResourceTable.Id_my_button); myButton.setClickedListener(new Component.ClickedListener() { @Override public void onClick(Component component) { // 按钮点击事件处理逻辑 showToast("Button clicked!"); } }); } private void showToast(String message) { // 显示提示信息 getUITaskDispatcher().asyncDispatch(() -> { new ToastDialog(getContext()) .setText(message) .setAlignment(LayoutAlignment.CENTER) .show(); }); }}在这个示例中,我们创建了一个按钮点击事件的匿名内部类 new Component.ClickedListener() 来处理按钮的点击事件。解释setUIContent(ResourceTable.Layout_ability_main):将布局文件 ability_main 设置为当前页面的内容。findComponentById(ResourceTable.Id_my_button):从布局中找到 ID 为 my_button 的按钮组件。setClickedListener(new Component.ClickedListener() {...}):为按钮设置点击事件监听器,通过匿名内部类来实现点击事件回调。2. 使用匿名内部类执行任务匿名内部类不仅可以用于事件监听,还可以用于执行其他异步任务,如在 HarmonyOS 中运行后台任务。示例代码(执行异步任务)import ohos.aafwk.ability.Ability;import ohos.aafwk.content.Intent;import ohos.agp.components.Text;import ohos.agp.window.service.WindowManager;import ohos.app.dispatcher.TaskDispatcher;import ohos.app.dispatcher.task.TaskPriority;public class MainAbility extends Ability { private Text statusText; @Override public void onStart(Intent intent) { super.onStart(intent); setUIContent(ResourceTable.Layout_ability_main); statusText = (Text) findComponentById(ResourceTable.Id_status_text); // 执行异步任务 TaskDispatcher globalTaskDispatcher = getGlobalTaskDispatcher(TaskPriority.DEFAULT); globalTaskDispatcher.asyncDispatch(new Runnable() { @Override public void run() { // 模拟耗时任务 try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } // 更新UI getUITaskDispatcher().syncDispatch(new Runnable() { @Override public void run() { statusText.setText("Task completed!"); } }); } }); }}在这个示例中,我们使用匿名内部类 new Runnable() {...} 来执行异步任务,并更新 UI。总结通过 Java 的匿名内部类,你可以轻松在 HarmonyOS 中实现各种事件处理和任务执行。以上两个示例分别展示了如何使用匿名内部类处理按钮点击事件和执行异步任务。
  • [技术干货] 在 HarmonyOS 中使用 ArkTS 的 Image 组件加载本地 rawfile 目录下的 WebP 和 GIF 动图时,出现帧间割裂和跳动的问题
    在 HarmonyOS 中使用 ArkTS 的 Image 组件加载本地 rawfile 目录下的 WebP 和 GIF 动图时,如果出现帧间割裂和跳动的问题,可能是由于以下几个原因:帧率不匹配:动图的帧率与渲染帧率不匹配,会导致动画播放不流畅。内存资源:大文件(如多帧的 WebP 或 GIF)加载和解码消耗较多内存,可能导致性能问题。解码库问题:底层解码库在处理特定格式或复杂动图时可能存在问题。解决方案1. 确保图片资源正确首先检查你的 WebP 和 GIF 文件是否正确编码并且没有损坏。可以尝试使用其他工具查看这些动图是否有类似问题。2. 使用较小的帧尺寸如果动图的每一帧分辨率较高,尝试压缩或减少分辨率,以减低内存和 CPU 负担。3. 调整 Image 组件属性确保你正在使用适当的 Image 组件属性来优化渲染。例如,设置合适的宽高比,尽量避免动态调整大小。4. 使用循环属性确保 Image 组件的循环播放属性已正确设置。import { View, Image } from 'deveco';function Carousel() { return ( <View> <Image src="$rawfile$/path/to/your/image.webp" // or .gif repeatCount={-1} // 无限循环 fit="cover" // 根据需要设置 /> </View> );}5. 动态加载控制通过控制动图的加载时机和频率,可以优化动画效果。比如,通过使用计时器或帧步进机制进行逐帧加载。import { createAnimationFrameTask } from '@system.frame';let frameIndex = 0;const totalFrames = 100; // 假设有100帧const frameDuration = 1000 / 30; // 每秒30帧function playAnimation() { const task = createAnimationFrameTask(() => { frameIndex = (frameIndex + 1) % totalFrames; updateFrame(frameIndex); if (frameIndex === 0) { stopAnimation(task); } }); startAnimation(task, frameDuration);}function updateFrame(index: number) { // 更新 Image 组件显示帧}function startAnimation(task, duration) { setTimeout(() => { requestAnimationFrame(task); }, duration);}function stopAnimation(task) { cancelAnimationFrame(task);}6. 使用缓存优化通过缓存动图的帧,可以减少解码时间和内存占用,从而提高动画播放的流畅度。7. 检查系统资源确保设备有足够的系统资源供应用使用。关闭其他不必要的应用和服务,以释放内存和 CPU。总结帧率同步:确保动画帧率与渲染帧率匹配。资源管理:降低图片分辨率,确保内存资源充足。组件优化:正确配置 Image 组件属性。动态控制:通过程序控制动画的加载和播放。缓存优化:使用缓存技术提升性能。如果以上方法仍然无法解决问题,建议尝试更新 HarmonyOS SDK 和 DevEco Studio 到最新版本,并查看官方文档和示例代码以获得更多支持。
  • [技术干货] HarmonyOS 获取Token报错 1000900010 Illegal application identity
    在 HarmonyOS 中,如果你遇到获取 Token 报错 1000900010 Illegal application identity,这通常表示应用的身份验证失败。这个错误码意味着你在向服务端请求 Token 时提供的应用身份信息不合法或无效。可能原因及解决方案签名问题:确保你的应用已经正确签名。在开发和发布过程中,HarmonyOS 应用需要使用合法的签名证书。检查签名文件是否正确配置。确保你在开发环境中使用了正确的调试签名文件,在发布环境中使用了正式签名文件。配置问题:检查你的项目配置文件(如 config.json 或 profile 文件),确保应用 ID、包名等信息与注册的开发者账户一致。账号权限问题:确保你使用的华为开发者账号有足够的权限来请求 Token。确保你的开发者账号已通过认证,并且相关应用信息已经在华为开发者平台上进行了正确配置。网络问题:确认你的设备能够正常访问外网,确保网络连接没有被防火墙或其他安全软件阻拦。SDK 配置问题:确保您正在使用最新版本的 SDK,并且 SDK 配置正确。示例:检查和修复配置文件检查 config.json{ "app": { "package": "com.example.myapp", "name": "MyApp", "version": { "code": 1, "name": "1.0" } }, "deviceConfig": { "default": { "features": [ {"name": "ace"} ] } }, "reqPermissions": [ { "name": "ohos.permission.INTERNET" } ]}确保 package 字段与华为开发者平台上的应用信息一致。签名文件配置在 HarmonyOS 工程中,确保 signingConfigs 正确配置:android { ... signingConfigs { debug { keyAlias 'debugKey' keyPassword 'password' storeFile file('debug.keystore') storePassword 'password' } release { keyAlias 'releaseKey' keyPassword 'password' storeFile file('release.keystore') storePassword 'password' } } buildTypes { debug { signingConfig signingConfigs.debug } release { signingConfig signingConfigs.release } }}请求 Token 示例代码确保你按照 API 文档正确实现了 Token 请求逻辑。例如,使用 HTTP 请求获取 Token:import fetch from '@system.fetch';function getToken() { fetch({ url: 'https://api.example.com/get_token', method: 'POST', data: { app_id: 'YOUR_APP_ID', app_secret: 'YOUR_APP_SECRET' }, success: function(response) { console.log('Token:', response.data.token); }, fail: function(error) { console.error('Failed to get token:', error.data); } });}在实际应用中,你需要替换 YOUR_APP_ID 和 YOUR_APP_SECRET 为实际的应用 ID 和密钥,并确保服务器端正确配置以接受这些信息。总结报错 1000900010 Illegal application identity 通常与应用签名、配置文件、开发者账号权限等因素有关。通过检查并确保应用签名和配置文件正确,使用合法的开发者账号,并验证网络连接,可以有效解决这一问题。
  • [问题求助] 华为鸿蒙系统 安卓原生APP做VPN连接时手机息屏后就断
    我开发了一个安卓VPN应用,安装在华为鸿蒙系统上   一按电源键息屏就会发现数据包不发送了,已经设置了wakelock和手机设置息屏状态下wifi始终保持连接均不好使,请教各位需要怎么做
  • [问题求助] HarmonyOS在APP内分享到微信不起作用
    系统:HarmonyOS版本: 3.0.0APP是用uniapp开发的,调用了系统的分享能力打开分享界面,传的文件是pdf格式的,选微信,分享不成功,其它机型都没有问题。plus.share.sendWithSystem({ type: 'image', pictures: [imgPath] },() => {console.log('成功')},(err) => {console.log('失败', err)})
  • [课程学习] HarmonyOS案例——掌上云音乐播放器
    项目的目标是实现一款掌上云音乐播放器。该播放器可以实现分类管理、云端存储、音频播放、歌曲文件上传、播放器封面上传设计等功能。
  • [课程学习] HarmonyOS案例——辞艺
    该项目是一个艺术品搜索应用,旨在帮助艺术从业者和学生快速找到感兴趣的艺术家和艺术品。该应用的主要框架包括每日推送、关键词搜索和数据汇总。
  • [课程学习] HarmonyOS案例——享睡
    该APP帮助每一位熬夜的人合理安排睡眠时间,帮忙人们拥有健康的睡眠。项目共分为4大模块:登录注册模块、Tonight今晚模块、Achievement成就模块、User模块。
  • [课程学习] HarmonyOS案例——车载导航组件
    该项目是设计一款基于HarmonyOS的车载导航组件。该组件基础面板总共分为四个板块,分别用来实现四个界面的功能。 四个界面的名称分别为主页,地图,音乐,电话。
总条数:88 到第
上滑加载中