-
import notificationManager from '@ohos.notificationManager';@Entry@Componentstruct Index { @State message: string = 'Hello World' @State libraryName: string = 'APP名称' aboutToAppear(){ //发布APP通知 notificationManager.publish({ id: 1, content: { contentType: notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, // 普通文本类型通知 normal: { title: this.libraryName, text: '欢迎使用' + this.libraryName + ',好好学习,天天向上!' } } }); } build() { Column() { Text(this.message) .fontSize(50) .fontWeight(FontWeight.Bold) } .width('100%') }}
-
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的插件接口不变,但是返回值会有所调整,后续文档会逐步完善,在使用本插件跨平台研发时请联系开发者提供技术服务。
-
从模拟器相册中选择一个JPG图片,通过POST方式上传到服务器,服务器端用servlet负责接收,用servletInputStream输入流接收上传的图片内容,后来发现保存的图片格式不对,不知道哪里出了问题?
-
中奖结果公示感谢各位小伙伴参与本次活动,欢迎关注华为云DTSE Tech Talk 技术直播更多活动~本次活动获奖名单如下:请于4月23日下班前在此问卷中反馈您的中奖邮寄信息~直播简介【直播主题】手把手教你实现 mini版TinyVue组件库【直播时间】2024年4月17日 16:30-18:00【直播专家】阿健 华为云开源 DTSE 技术布道师【直播简介】在前端 Web 开发过程中,跨版本兼容性问题是一个普遍存在的挑战。为了解决这些痛点,OpenTiny 推出跨端、跨框架、跨版本组件库 TinyVue。本期直播聚焦于华为云的前端开源组件库 TinyVue,通过 Mini版 TinyVue 的代码实践与大家共同深入解读 Vue2/Vue3 不同版本间的差异。这对于提升用户体验,减低维护成本,提升开发者技术洞察有重要意义。活动介绍【互动方式】直播前您可以在本帖留下您疑惑的问题,专家会在直播时为您解答。直播后您可以继续在本帖留言,与专家互动交流。我们会在全部活动结束后对参与互动的用户进行评选。【活动时间】即日起—2024年4月18日【奖励说明】评奖规则:活动1:直播期间在直播间提出与直播内容相关的问题,对专家评选为优质问题的开发者进行奖励。奖品:华为云定制长袖卫衣活动2:在本帖提出与直播内容相关的问题,由专家在所有互动贴中选出最优问题贴的开发者进行奖励。奖品:华为云定制U型按摩枕更多直播活动直 播互动有礼:官网直播间发口令“华为云 DTSE”抽华为云定制雨伞、填写问卷抽华为云定制保温杯等好礼。有奖实操 :4月17日-4月18日,完成课后动手实验即送华为云定制T恤。【注意事项】1、活动期间同类子活动每个ID(同一姓名/电话/收货地址)提问数≤20个;所有参与活动的问题,如发现为复用他人内容或直播间中重复内容,则取消获奖资格。2、为保证您顺利领取活动奖品,请您在活动公示奖项后2个工作日内私信提前填写奖品收货信息,如您没有填写,视为自动放弃奖励。3、活动奖项公示时间截止2024年4月19日,如未反馈邮寄信息视为弃奖。本次活动奖品将于奖项公示后30个工作日内统一发出,请您耐心等待。4、活动期间同类子活动每个ID(同一姓名/电话/收货地址)只能获奖一次,若重复则中奖资格顺延至下一位合格开发者,仅一次顺延。5、如活动奖品出现没有库存的情况,华为云工作人员将会替换等价值的奖品,获奖者不同意此规则视为放弃奖品。6、其他事宜请参考【华为云社区常规活动规则】。
-
类似这种小型图片,如何放大展示到手机页面当中?
-
rt,运行程序后反馈runtime out,感觉没有爆栈,如何处理?
推荐直播
-
华为AI技术发展与挑战:集成需求分析的实战指南
2024/11/26 周二 18:20-20:20
Alex 华为云学堂技术讲师
本期直播将综合讨论华为AI技术的发展现状,技术挑战,并深入探讨华为AI应用开发过程中的需求分析过程,从理论到实践帮助开发者快速掌握华为AI应用集成需求的框架和方法。
去报名 -
华为云DataArts+DWS助力企业数据治理一站式解决方案及应用实践
2024/11/27 周三 16:30-18:00
Walter.chi 华为云数据治理DTSE技术布道师
想知道数据治理项目中,数据主题域如何合理划分?数据标准及主数据标准如何制定?数仓分层模型如何合理规划?华为云DataArts+DWS助力企业数据治理项目一站式解决方案和应用实践告诉您答案!本期将从数据趋势、数据治理方案、数据治理规划及落地,案例分享四个方面来助力企业数据治理项目合理咨询规划及顺利实施。
去报名
热门标签