-
当别人已在鸿蒙生态接单月入3万+,你还在Java内卷?当大模型重构IT岗位,传统运维正批量淘汰…体贴的深圳人社为您再次奉上信创技术/鸿蒙系统/麒麟系统等新一代信息应用技术生存技能大餐• 信创智算与大模型技术课程• 开源高斯数据库技术课程• 鸿蒙原生应用开发课程• 开源鸿蒙设备应用技术课程• 前沿 科技 国产系统应用 还等什么基于麒麟操作系统的信创基础软件适配迁移与运维课程 【理论授课、现场实战、组队攻坚】告别枯燥的理论推砌聘请行业专家担任讲师5门免费课程助你抢占信息技术高地,满级晋升!最重要的是全!免!费!咱不花一分钱就开启成长与蜕变的大门报名有啥要求?咋报名?快随我往下看吧!一、 报名条件报名学员需具有新一代电子信息应用技术相关的行业从业背景或具备相关专业背景,并满足以下条件之一即可:1.本市户籍人员;2.在本市正常缴交社会保险的人员;3.深圳市登记失业人员;4.在深圳市公共就业服务机构进行离校两年未就业实名登记的本市高校毕业生;5.本市高校或本市户籍在市外高校的毕业年度(指毕业时间在2025年1月1日至12月31日之间)毕业生(含技师学院高级工班、预备技师班)。温馨提示:(1)同一劳动者同一年度只能参加1次项目制培训哦。如果您已经参加2024年度项目制培训但未完成规定学时50%以上,很遗憾,那无法参加2025年度的项目制培训了哦。(2)同一劳动者同一年度内企业新型学徒制培训,学生学徒制培训、技培生学徒制培训只能参加一次,且均不能和项目制培训同时享受。等等先别急还没完!还有额外补贴!【额外补贴】如您满足以下条件之一:• 本市就业困难人员• 本市零就业家庭成员• 本市就业残疾人• 本市城市低保家庭成员• 本市毕业2年内的“两后生”中的农村学员• 本市求职就业的脱贫人员不仅可以免费学课程还可以再领500元的生活补贴金💴! 接下来咱们看一下具体学习内容吧!二、 学习内容以及报名方式 新一代电子信息应用技术项目制培训 指导单位:深圳市人力资源和社会保障局主办单位 :深圳市职业技能培训指导中心承办单位:深圳职业技术大学1、信创智算与大模型技术课程课程内容培训天数培训名额主要内容包括:1.基于昇腾平台的 DeepSeek 模型搭建与优化2.华为云昇腾算力支持下的私有场景大模型部署3.基于昇腾与 DeepSeek 的私有大模型自主训练4.电商场景下大模型的创新应用与拓展6天约300人 信创智算与大模型技术课程报名二维码及交流群(QQ群) 2、开源高斯数据库技术课程课程内容培训天数培训名额主要内容包括:1.高斯数据库安装与对象管理实操2.场景化高斯数据库实验探索3.数据库AI策略与技巧4.数据安全管理与防护6天约250人开源高斯数据库技术课程报名二维码及交流群(QQ群) 3、 鸿蒙原生应用开发课程课程内容培训天数培训名额主要内容包括:1.基于ArkTSUI框架搭建实训云平台2.鸿蒙原生办公签到系统开发3.基于Next版本开发实时社交软件联动DeepSeek实现聊天问答4.基于鸿蒙服务卡片开发音乐推荐软件5.鸿蒙原生健康服务检测软件开发6天约250人 鸿蒙原生应用开发课程报名二维码及交流群(QQ群) 4、 开源鸿蒙设备应用技术课程课程内容培训天数培训名额主要内容包括:1.OpenHarmony搭建与配置2.开源鸿蒙设备驱动开发和集成3.基于开源鸿蒙的HAL层开发4.基于开源鸿蒙的智能家居软硬件开发6天约250人 开源鸿蒙设备应用技术课程报名二维码及交流群(QQ群) 5、基于麒麟操作系统的信创基础软件适配迁移与运维课程课程内容培训天数培训名额主要内容包括:1.银河麒麟桌面操作系统 V10 的管理应用2.掌握适配测试基础及软硬件适配测试技能6天约250人 基于麒麟操作系统的信创基础软件适配迁移与运维课程报名二维码及交流群(QQ群) 三、成长与收获1.掌握实用技能,提高自身职业技能,增强就业竞争力,优化职业发展路径;2.培训考勤达标且考核通过将获得《深圳市职业技能提升培训合格证书》;3.可自行选考行业权威认证:HCIA-AI认证、HCIA-openGauss认证、HarmonyOS应用开发者认证、开放原子OpenHarmony人才认证、KYCA、KYCP认证(不含考证费)。四、班级设置l 7月29日-9月30日 开设日常精品班(周一到周六)开设周末精品班(周六或周日单日班)l 7月29日-10月20日开设周末精品班(周六或周日单日班)五、咨询与联络黄老师:13528095312(微信同号)周老师:0755-26019607咨询时间:工作日9:00- 18:00其他时间咨询联系QQ群工作人员六、培训地点深圳职业技术大学西丽湖园区(信息楼)建议绿色出行:深圳地铁5号线西丽地铁站F口步行800米。公交车站-深圳职业技术大学(西丽湖园区),线路包括M197、M182、M176、M492、高峰专线59、325、M535、M217、67、326等。 别再犹豫,抓住这个难得的机会,让自己在公益性培训中实现华丽转身!立即报名,开启你的成长之旅!
-
使用DevEcoStudio 开发、编译鸿蒙 NEXT_APP 以及使用中文插件 #鸿蒙开发工具 #DevEco Studio1. 概述DevEco Studio 是华为提供的一站式集成开发环境(IDE),专为鸿蒙操作系统(HarmonyOS Next)应用和服务开发设计 DevEco Studio,掌握基本操作和开发流程。2. 安装与配置访问华为开发者联盟官网 下载 DevEco Studio 安装包运行安装程序,按照向导完成安装启动 DevEco Studio,首次启动会自动下载并安装 SDK 组件3. 创建新项目3.1 启动向导启动 DevEco Studio,选择 Start a new HarmonyOS project选择应用模板(如 Empty Ability、Native C++ 等)3.2 项目结构创建完成后,DevEco Studio 会生成标准的鸿蒙应用项目结构:myapplication/ ├── AppScope/ │ ├── resources/ │ └── app.json5 # 版本号等内容 ├── entry/ # 主模块 │ ├── src/ │ │ ├── main/ │ │ │ ├── ets/ # ArkTS 代码 │ │ │ ├── resources/ # 资源文件 │ │ │ └── module.json5 │ │ ├── test/ # 测试代码 │ │ ├── mock/ │ │ ├── ohosTest/ │ │ ├── build-profile.json5 │ │ ├── hvigorfile.ts │ │ ├── obfuscation-rules.txt │ │ └── oh-package.json5 │ └── build/ # 编译后测试包 ├── hvgor/ │ └── hvigor-config.json5 ├── build/ # 编译后正式包 └── build-profile.json5 # 项目构建配置文件4 代码方式布局使用 ArkTS 声明式语法:@Entry @Component export struct Index { @State message: string = 'Hello World' build() { Column() { Text(this.message) .fontSize(50) .fontWeight(FontWeight.Bold) Button('Click Me') .onClick(() => { this.message = 'Hello HarmonyOS!' }) } .width('100%') } } 5. 应用调试5.1 模拟器调试点击工具栏中的 Tools > Device Manager 图标在弹出窗口中点击 New Emulator选择设备类型和系统版本,点击 Next 完成创建点击工具栏中的运行按钮,选择模拟器启动应用5.2 真机调试用 USB 线将鸿蒙设备连接到电脑在设备上多次点击版本号开启 开发者选项 和 USB 调试 功能在 DevEco Studio 中选择设备并点击运行按钮,选择已连接的设备如设备未识别,检查 USB 驱动是否正确安装6. 代码编辑与辅助功能6.1 代码补全DevEco Studio 支持智能代码补全,输入代码时会自动提示可能的选项:输入组件名称时提示可用组件输入属性名时提示可用属性支持方法参数提示和类型检查6.2 代码导航Ctrl + 左键点击:跳转到变量、方法或类的定义处Shift + Shift:快速打开文件Alt + 左/右箭头:在编辑历史中导航7. 构建与打包7.1 构建应用点击 Build > Build Hap(s)/App(s) 构建 APP 包构建完成后,APK 文件位于 build/outputs/default 目录下7.2 签名配置点击 File > Project Structure > Project > Signing Configs选择已有的签名密钥配置签名信息并生成签名8. 中文插件切换中文版不是选择语言,而是需要下载插件点击File > Settings > Plugins搜索Chinese(Simplified)下载并应用重启 DevEcoStudio9. 常见问题与解决方法9.1 模拟器无法启动尝试删除并重新创建模拟器降低模拟器系统版本检查内存9.2 代码报错 “arkts-no-props-by-index”错误原因:ArkTS 不支持通过索引访问对象属性解决方法:使用点号表示法或 Map 结构替代
-
鸿蒙Next实现瀑布流布局 #鸿蒙影音娱乐类应用 #拍摄美化 #HarmonyOS一、环境准备与项目创建在开始实现瀑布流布局前,需确保已安装好 DevEco Studio,且已配置好鸿蒙开发环境。打开 DevEco Studio,新建一个鸿蒙应用项目,选择合适的模板(如 Empty Feature Ability),设置项目名称、包名等信息,完成项目创建。二、布局设计思路鸿蒙 Next 的瀑布流布局可以通过自定义组件结合 Column、Row 等容器组件实现。其核心思路是将数据分成若干列,每列独立滚动展示,且根据数据项高度动态调整布局,以达到类似瀑布自然流动的效果。三、基础实现创建一个自定义组件 MasonryLayout,接收图片数据数组作为参数,并根据列数将数据分配到不同列中展示:@Component export struct MasonryLayout { @Prop data: string[]; @State cols: number[] = Array.from<number>({ length: 2 }).fill(0); build() { Row({}) { ForEach(this.cols, (_col: number, cIndex) => { Column({ }) { ForEach(this.data, (item: string, i) => { if(i % this.cols.length === cIndex) { Image(item).width(`${100 / this.cols.length}%`); } }) } }) }.alignItems(VerticalAlign.Top) } } 四、引用 MasonryLayout 瀑布流组件build() { MasonryLayout({ data: ["img1.png", "img2.png", "img3.png", "img4.png", "img5.png"], }); } 五、优化与扩展1. 响应式布局通过 MediaQuery 组件根据屏幕宽度动态调整瀑布流的列数,以适配不同设备:在 UIAbility 的 onWindowStageCreate 生命周期回调中,通过窗口对象获取启动时的应用窗口宽度并注册回调函数监听窗口尺寸变化。将窗口尺寸的长度单位由 px 换算为 vp 后,即可基于前文中介绍的规则得到当前断点值,此时可以使用状态变量记录当前的断点值方便后续使用MainAbility.tsimport { window, display } from "@kit.ArkUI"; import { UIAbility } from "@kit.AbilityKit"; export default class MainAbility extends UIAbility { private windowObj?: window.Window; private col: number = 2; //... // 根据当前窗口尺寸更新断点 private updateBreakpoint(windowWidth: number): void { // 将长度的单位由px换算为vp let windowWidthVp = windowWidth / display.getDefaultDisplaySync().densityPixels; let col: number = this.col; if (windowWidthVp < 320) { // "xs"; col = 1; } else if (windowWidthVp < 600) { // "sm"; col = 2; } else if (windowWidthVp < 840) { // "md"; col = 3; } else { // "lg"; col = 4; } if (this.col !== col) { this.col = col; } } onWindowStageCreate(windowStage: window.WindowStage): void { windowStage.getMainWindow().then((windowObj) => { this.windowObj = windowObj; // 获取应用启动时的窗口尺寸 this.updateBreakpoint(windowObj.getWindowProperties().windowRect.width); // 注册回调函数,监听窗口尺寸变化 windowObj.on("windowSizeChange", (windowSize) => { this.updateBreakpoint(windowSize.width); }); }); // ... } //... } MasonryLayout.etsinterface IBpMapCol { xs: number; sm: number; md: number; lg: number; } const bpMapCol = new Map<string, number>(); bpMapCol.set('xs', 1) bpMapCol.set('sm', 2) bpMapCol.set('md', 3) bpMapCol.set('lg', 4) @Component export struct MasonryLayout { @StorageProp('currentBreakpoint') curBp: keyof IBpMapCol = 'sm'; @Prop data: string[]; @State cols: number[] = Array.from<number>({ length: bpMapCol.get(this.curBp) || 2 }).fill(0); build() { Row({}) { ForEach(this.cols, (_col: number, cIndex) => { Column({ }) { ForEach(this.data, (item: string, i) => { if(i % this.cols.length === cIndex) { Image(item).width(`${100 / this.cols.length}%`); Text(this.curBp) } }) } }) }.alignItems(VerticalAlign.Top) } } 注:鸿蒙 next 中无法使用索引访问对象属性,如 const obj = { a: 1 } 无法使用 obj[a],这种情况可以用 Map2. 动态加载数据为了实现类似真实瀑布流不断加载新数据的效果,可以结合鸿蒙的 LazyForEach 组件,在滚动到列表底部时触发数据加载逻辑六、网络权限// config.json { "module": { "reqPermissions": [ { "name": "ohos.permission.INTERNET", "reason": "需要网络权限来加载图片" } ] } } 七、常见问题与解决方案1. 图片加载后布局跳动解决方案:使用预估高度占位,图片加载完成后更新高度2. 大数据量性能问题解决方案:实现虚拟列表,只渲染可视区域内的元素3. 滚动卡顿解决方案:使用防抖/节流处理滚动事件避免在滚动回调中执行复杂计算使用鸿蒙的 Canvas 组件替代部分布局组件4. 不同设备适配问题解决方案:使用响应式布局动态调整列数基于设备类型设置不同的默认列数八、最佳实践总结优先使用固定高度:如果业务场景允许,尽量使用固定高度或宽高比,减少动态测量开销合理实现懒加载:对于非首屏内容或图片资源,一定要实现懒加载渐进式增强体验:先确保基础功能可用,再添加动画和交互效果测试与优化:在不同设备上测试性能表现,针对卡顿问题进行专项优化遵循鸿蒙设计规范:保持与鸿蒙系统一致的视觉风格和交互体验
-
鸿蒙NEXT上传图片功能PhotoViewPicker核心功能解析 #ArkTS#鸿蒙Next#HarmonyOS_SDK应用服务#HarmonyOS 语言PhotoViewPicker 是鸿蒙系统中用于媒体资源选择的核心组件,通过它可以便捷地实现图片、视频等媒体文件的选择功能。下面从基本用法、参数配置到高级应用进行全面解析:一、PhotoViewPicker 基础用法PhotoViewPicker 的使用流程主要分为三步:创建实例配置参数启动选择器获取结果以下是最基本的使用示例:import photoAccessHelper from "@ohos.photoAccess.photoAccessHelper"; async function pickImage() { try { // 1. 创建选择器实例 const picker = photoAccessHelper.createPhotoViewPicker(); // 2. 配置选择参数(此处使用默认配置) const options = { MIMEType: photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE, // 只选择图片 maxSelectNumber: 1, // 最多选择张数 isSearchSupported: true, // 显示搜索 isPhotoTakingSupported: true, // 支持拍照 recommendationOptions: true, // 智能推荐 preselectedUris: true, // 预览文件 isPreviewForSingleSelectionSupported: true, // 单选是否支持预览 }; // 3. 启动选择器并获取结果 const selectedAssets = await picker.select(options); if (selectedAssets.photoUris.length) { // 处理选择的资源 console.info("选择的资源:", selectedAssets.photoUris); } } catch (error) { console.error("选择图片失败:", error); } } 二、关键参数详解PhotoViewPicker 的参数配置非常灵活,可以根据需求定制选择器的行为:const options = { MIMEType: photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE, // 只选择图片 maxSelectNumber: 1, // 最多选择张数 isSearchSupported: true, // 显示搜索 isPhotoTakingSupported: true, // 支持拍照 recommendationOptions: true, // 智能推荐 preselectedUris: true, // 预览文件 isPreviewForSingleSelectionSupported: true, // 单选是否支持预览 }; 三、MIMEType 参数深度解析MIMEType 参数是 PhotoViewPicker 中非常强大的一个配置项,它允许你精确控制选择器中显示的文件类型:// 示例1:只允许选择JPEG和PNG图片 IMAGE_TYPE = 'image/*', // 示例2:只允许选择视频文件 VIDEO_TYPE = 'video/*', // 示例3: MOVING_PHOTO_IMAGE_TYPE = 'image/movingPhoto' // 示例4:允许所有 IMAGE_VIDEO_TYPE = '*/*', 四、处理选择结果选择器返回的结果是一个 PhotoSelectResult 对象,包含以下关键属性:class PhotoSelectResult { /** * The uris for the selected files. * * @type { Array<string> } * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core * @since 10 */ /** * The uris for the selected files. * * @type { Array<string> } * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core * @atomicservice * @since 11 */ /** * The uris for the selected files. * * @type { Array<string> } * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core * @crossplatform * @atomicservice * @since 12 */ photoUris: Array<string>; /** * Original option. * * @type { boolean } * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core * @since 10 */ /** * Original option. * * @type { boolean } * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core * @atomicservice * @since 11 */ /** * Original option. * * @type { boolean } * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core * @crossplatform * @atomicservice * @since 12 */ isOriginalPhoto: boolean; } 获取到资源后,通常需要进行以下处理:使用文件 URI 读取文件内容进行必要的格式转换(如压缩图片)上传到服务器或保存到本地// 这里以oss上传为例 // uri为选择图片路径 import { http } from '@kit.NetworkKit'; import fs from '@ohos.file.fs' import { request } from '@kit.BasicServicesKit'; export async function upload (uri: string): Promise<string> { // 此处从服务器获取 const data = { policy: 'qweqwe', signature: 'qweqwe', ossAccessKeyId: 'qweqwe', host: 'https://???/api', }; const name = Date.now() + '.' + uri.split('.').pop(); const key = `${new Date().getFullYear()}/${name}` const context = getContext(); // 通过getContext获取沙箱地址 const destPath = `${context.cacheDir}/${name}`; const file = fs.openSync(uri); // 将文件复制一份到沙箱缓存地址,这一步尤为重要,只有沙箱地址的文件可以进行上传操作 fs.copyFileSync(file.fd, destPath); const result = await request.uploadFile(context,{ // files字段是上传的文件组成的列表,类型为formData files: [{ filename: 'file', name: 'file', uri: `internal://cache/${name}`, type: 'image/jpeg' }], // data字段是携带的参数,建议把类型设置为formData data: [ { name: 'name', value: `${name}`, }, { name: 'policy', value: `${data.policy}` }, { name: 'OSSAccessKeyId', value: Object.values(data)[2] }, { name: 'signature', value: `${data.signature}` }, { name: 'key', value: key }, ], method: http.RequestMethod.POST, header: { Accept: '*/*', // 设置header确保参数类型为FormData "Content-Type": "multipart/form-data" }, // 请求地址 url: data.host }); return new Promise((res, rej) => { result.on('progress', (u, t) => { console.log('进度', u / t); }); result.on('complete', e => { console.log('ok', JSON.stringify(e)); res(`${data.host + key}`); }); result.on('fail', e => { console.log('错误', JSON.stringify(e)); rej(e); }) }); } 五、注意事项与常见问题权限要求 需要在 config.json 中声明文件访问权限:{ "requestPermissions": [ { "name": "ohos.permission.READ_MEDIA", "reason": "需要访问媒体文件" } ] } 文件处理注意系统媒体库中的文件 URI 通常是临时的,建议复制到应用私有目录再使用const name = Date.now() + ""; const key = `${new Date().toLocaleDateString()}/${name}`; const context = getContext(); const destPath = `${context.cacheDir}/${name}`; const file = fileIo.openSync(uri); fileIo.copyFileSync(file.fd, destPath); console.log(destPath); 大文件处理时建议进行异步操作,避免 UI 卡顿request.uploadFile文件上传时候一直报错 401兼容性注意:不同鸿蒙版本的 API 可能存在差异,建议在开发前查阅对应版本的官方文档部分参数(如 title、initialDirectory)可能只在特定版本中支持通过合理配置 PhotoViewPicker 的各项参数,开发者可以轻松实现符合需求的媒体选择功能,为应用增色不少。
-
贡献 OpenHarmony 库关键配置 #自研框架#ArkUI-X#三方框架#OpenHarmony#HarmonyOS创建第三方库打开 DevEco Studio 创建一个项目,然后创建一个库模块,选择 static library。详细步骤可参考:开发静态共享包。在项目内会生成 library 文件夹对所创建的库模块进行开发,需要完善库模块中生成的 oh-package.json5 文件,有关三方库名称的规则,请参阅三方库名称指南章节,其他配置项的设置请参考 oh-package.json5 配置说明。目录分析 library // HAR根目录 ├─libs // 存放用户自定义引用的Native库,一般为.so文件f └─src │ └─main │ ├─cpp │ │ ├─types // 定义Native API对外暴露的接口 │ │ │ └─liblibrary │ │ │ ├─index.d.ts │ │ │ └─oh-package.json5 │ │ ├─CMakeLists.txt // CMake配置文件 │ │ └─napi_init.cpp // C++源码文件 │ └─ets // ArkTS源码目录 │ │ └─components │ │ └─MainPage.ets │ ├─resources // 资源目录,用于存放资源文件,如图片、多媒体、字符串等 │ └─module.json5 // 模块配置文件,包含当前HAR的配置信息 ├─build-profile.json5 // Hvigor编译构建所需的配置文件,包含编译选项 ├─hvigorfile.ts // Hvigor构建脚本文件,包含构建当前模块的插件、自定义任务等 ├─Index.ets // HAR的入口文件,一般作为出口定义HAR对外提供的函数、组件等 └─oh-package.json5 // HAR的描述文件,定义HAR的基本信息、依赖项等 library/build-profile.json5 建议开启代码混淆{ "apiType": "stageMode", "buildOption": {}, "buildOptionSet": [ { "name": "release", "arkOptions": { // 混淆相关参数 "obfuscation": { "ruleOptions": { // true表示进行混淆,false表示不进行混淆。5.0.3.600及以上版本默认为false "enable": true, // 混淆规则文件 "files": ["./obfuscation-rules.txt"] }, // consumerFiles中指定的混淆配置文件会在构建依赖这个library的工程或library时被应用 "consumerFiles": ["./consumer-rules.txt"] } } } ], "targets": [ { "name": "default" } ] } build-profile.json5 设置 useNormalizedOHMUrl{ "app": { "products": [ { "buildOption": { "strictMode": { "useNormalizedOHMUrl": false } } } ] } } 在库模块的根目录中,创建一个 README.md(不区分大小写) 文件,描述您三方库的代码以及如何使用它,文件不能为空。README.md 模板# feilongui FeilongUI 是一款功能丰富、高效易用的 UI 库,旨在帮助开发者快速构建美观、交互流畅的用户界面。以下是该库的详细使用指南。 ## 安装命令 README.md 中未包含安装命令会导致审核失败 `ohpm install feilongui` ## 模块介绍 README.md 中缺少简要的三方库使用说明会导致审核失败没有文件会报错ohpm ERROR: HttpCode 400 The OHPM package must contain a non-empty readme.md file. ohpm ERROR: Publish failed, detail: The "Publish" request to url "https://ohpm.openharmony.cn/ohpm/feilongui" has failed在库模块的根目录中,创建一个 CHANGELOG.md 文件,描述您三方库的代码不同版本的变更内容,文件不能为空。没有文件会报错ohpm ERROR: HttpCode 400 The OHPM package must contain a non-empty changelog.md file. ohpm ERROR: Publish failed, detail: The "Publish" request to url "https://ohpm.openharmony.cn/ohpm/feilongui" has failedChangelog.md模板(CHANGELOG.md中未包含当前版本,也就是oh-package.json5中version值的版本。 CHANGELOG.md由清晰的版本号和该版本的修改内容组成,修改内容不可为空,不然过不了审核)# Changelog ## 1.0.0 \*\* Unreleased Added - 新增 [按钮],用于 [点击]。 Changed - 优化 [模块 / 功能名称] 的性能,提升 [具体指标,如响应速度、加载时间等]。 Deprecated - 标记 [某接口 / 方法 / 功能] 为废弃,计划在 [具体版本] 中移除。 Removed - 移除不再维护的 [某功能 / 模块]。 Fixed - 修复 [问题描述] 导致的 [具体错误,如程序崩溃、数据错误等]。 Security - 修复 [名称] 提升系统安全性。在库模块的根目录中,创建一个 LICENSE(不区分大小写) 文件,指定该软件包可以在什么样的许可下被使用、修改和共享,文件不能为空。许可证模板(LICENSE文件中许可证条款内容和oh-package.json5文件中许可证名称不一致会审核失败) 许可证获取地址Copyright [此处填写年份,如2025] [此处填写在library/oh-package.json5中的name,否则审核失败] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.没有 LICENSE 文件会报错ohpm ERROR: HttpCode 400 The OHPM package must contain a non-empty license file. ohpm ERROR: Publish failed, detail: The "Publish" request to url "https://ohpm.openharmony.cn/ohpm/feilongui" has failed在进行 publish 发布前,请先确保在 OpenHarmony 三方库中心仓上已经创建了帐号,且利用工具 ssh-keygen 生成公、私钥文件ssh-keygen -m PEM -t RSA -b 4096 -f ~/.ssh_ohpm/mykey ohpm config set key_path ~/.ssh_ohpm/mykey不签名发布时会报错ohpm ERROR: Publish failed, detail: The "key_path" is empty - configure "key_path" in the .ohpmrc file.不设置密码发布时会报错ohpm ERROR: Private key without passphrase is not supported. ohpm ERROR: You must config a encrypted private key using a non-empty passphrase. ohpm ERROR: Publish failed, detail: Not supported private key. 不上传公钥(~/.ssh_ohpm/mykey.pub)会报错ohpm ERROR: HttpCode 400 The publicKey verify failed! ohpm ERROR: Publish failed, detail: The "Login" request to url "https://ohpm.openharmony.cn/ohpm/login" has failed设置 publish_id不设置 publish_id 会报错ohpm ERROR: Publish failed, detail: The "publish_id" is empty - configure "publish_id" in .ohpmrc file.publish_id 设置错误会报错ohpm ERROR: HttpCode 400 The publishId is invalid! ohpm ERROR: Publish failed, detail: The "Login" request to url "https://ohpm.openharmony.cn/ohpm/login" has failed发布后再发布不更新版本号会报错ohpm ERROR: HttpCode 400 The OHPM package version already exists. ohpm ERROR: Publish failed, detail: The "Publish" request to url "https://ohpm.openharmony.cn/ohpm/feilongui" has failed利用 DevEco Studio 对开发后的库模块打成 HAR 包。( 详情请见:构建 HAR)在工具中构建 library 库时需要选中 library 文件夹内的文件构建后所在目录为library/build/default/outputs/default/library-signed.har后续发布需要使用这个路径
-
DevEcoStudio 中使用模拟器时如何过滤日志 #鸿蒙核心技术#鸿蒙开发者工具##DevEcoStudio在 Hilog > Settings > Filter 设置Log message: A03d00/JSAPP当你看到不断更新的日志时,你会不会崩溃因为 No-filters 模式下模拟器会输出系统所有日志信息,这个模式在开发中并不使用,可用自定义模式找到模拟器日志,选择自定义在 Filter name 中输入custom (可以忽略这一步)Log level 中选择Info在 Log message 输入框中输入A03d00/JSAPP(打印内容)操作后在控制台查看就行了其他日志内容类型启动相关日志:记录模拟器启动过程中的各种信息,如加载系统镜像、初始化硬件设备、配置网络等操作的结果和状态。如果模拟器启动失败,这里会包含导致失败的具体原因,例如端口冲突、虚拟机管理程序未启用或配置错误、权限不足等。系统运行日志:包含模拟器系统运行时的各种事件和状态信息,如进程的启动和停止、系统服务的运行情况、内存和 CPU 的使用统计等。这些信息有助于开发者了解模拟器的整体运行状况,判断是否存在资源瓶颈或系统异常。应用相关日志:当在模拟器中运行应用程序时,会记录应用的启动、暂停、恢复、销毁等生命周期事件,以及应用中发生的各种错误、警告和调试信息。这对于开发者调试应用在模拟器上的运行问题非常重要,可以帮助定位应用中的代码错误、资源泄漏等问题。硬件模拟日志:模拟器需要模拟设备的硬件功能,如屏幕、摄像头、传感器等。相关日志会记录硬件模拟的操作和状态,例如屏幕分辨率的设置、摄像头的调用情况、传感器数据的模拟等。如果应用依赖于特定的硬件功能,这些日志可以帮助确定硬件模拟是否正常工作,以及应用与模拟硬件的交互是否正确。日志级别DEBUG:调试级别日志,通常包含详细的调试信息,用于开发者在开发过程中深入了解程序的执行流程和变量状态等。在正式发布版本中默认不被打印,只有在调试版本或打开调试开关的情况下才会打印。INFO:信息级别日志,用于记录程序运行中的重要信息,如系统启动、模块加载、关键操作的执行等,有助于开发者了解程序的整体运行情况。WARN:警告级别日志,提示可能存在的问题或潜在的风险,如资源使用接近上限、不推荐的操作被执行等,但并不一定表示程序出现了错误。ERROR:错误级别日志,用于记录程序中发生的错误情况,如代码异常、文件读取失败、网络连接中断等,这些错误可能会导致程序的部分功能无法正常运行。FATAL:严重错误级别日志,通常表示程序出现了严重的错误,导致整个系统或关键功能无法继续运行,如系统崩溃、内存耗尽等。
-
CodeArts IDE 鸿蒙版本功能是否完整?鸿蒙系统终端是否有命令教程?
-
焦点直播 | 星闪技术与OpenHarmony结合应用深度解析❤️ 河北大学齐耀龙副教授亲临指导 | 华为开发者布道师技术直播第9期 ❤️🔔 时间:3月29日(周六09:00-18:00),3月30日(周日09:00-12:00)✅ 主题:基于开源鸿蒙+海思星闪开发板:嵌入式系统开发实战核心亮点:1️⃣ 行业领先技术:全面解析星闪(NearLink)新一代无线短距通信技术,了解其在功耗、速度、覆盖范围和连接性能上的全方位优势。2️⃣ 全链路技术实战:深入讲解OpenHarmony操作系统及其与星闪技术的结合应用,涵盖WS63E星闪开发板的详细介绍。3️⃣ 创新实践分享:从智能终端到智能家居、智能汽车、智能制造等各类细分场景,手把手教你实现更极致的应用。4️⃣ 专家深度洞察:齐耀龙副教授结合学术理论与工业实践,分享技术应用中的实战经验和“避坑指南”。[庆祝] 为什么你绝不能错过?华为生态深度赋能:作为创新型技术的代表,星闪与OpenHarmony的结合将带来巨大的技术红利。职场竞争力加持:掌握新一代通信技术和操作系统的高级应用,成为智能技术领域的核心人才。从理论到落地:拒绝纸上谈兵,通过实际操作,全面提升技术能力,直击业务痛点。一次技术盛宴,让你的技术之旅更精彩!特别提示:本次活动将在华为上海练秋湖研发中心举行,同时进行线上同步直播,无论你身在何处,都能参与其中!点击报名,一起探索未来通信与操作系统技术的无限可能!报名地址:cid:link_0
-
又是一年开学、开工季人已在学校上课和工位上班脑子却在迷茫不知道做什么别再摸鱼啦!新的一年学习目标来啦!专为零基础小白提供的5门行业大会的HarmonyOS精品课程。这些课程由权威技术大咖讲解,深入浅出带你轻松理解鸿蒙应用基础概念,助力你全面掌握前沿技术,拥抱职业发展的无限可能!1.精品课程《鸿蒙:万物智联时代的操作系统》,请戳学习链接2.精品课程《鸿蒙应用开发:从Android到HarmonyOS》,请戳学习链接3.精品课程《鸿蒙分布式软总线的前世今生》,请戳学习链接4.精品课程《万物智联下的HarmonyOS开发框架》,请戳学习链接5.精品课程《Zelda :鸿蒙应用静态分析框架》,请戳学习链接
-
星星之火,可以燎原——从鸿蒙小白到校园布道师的故事亲爱的开发者朋友们:大家好!今天想和大家分享一段关于梦想、挑战和传承的故事——也就是我从鸿蒙小白到校园布道师的旅程。接过火种今年年初,我从前辈的手中,接过了鸿蒙的火种。那时,我只是一个对科技充满好奇的普通学生,但在华为校园公开课上,李林峰老师的生动讲解点燃了我心中的火苗。HarmonyOS NEXT的全新架构、分布式软总线、超级终端...这些前沿技术让我看到了一个全场景的万物互联的智慧世界。我决定投身于鸿蒙开发,开始了我的技术探险。微光成炬这条从0到1的开发之路却并不简单。当时正处于鸿蒙NEXT生态建设初期,开发文档还不够完善,网络传输、滑动卡顿、卡片数据同步等问题分分钟让我想要放弃。但是,就像火苗在风中摇曳,却始终不灭,我在广大开发者朋友们的帮助和自身努力下,逐渐克服了这些困难。今年4月份,仅用一个月的时间,我和小伙伴们不仅开发上架了应用,还获了奖。我们的项目,采用HarmonyOS NEXT的最新技术特性,实现了跨设备接续,支持多设备协同和同步的全新体验。如此丰富和全面的鸿蒙开放能力,如此简单的开发语言和配套工具,帮助我们迅速将脑海中的想象变为现实。在校园调查中,逸校园的满意度高达95%,同学们对鸿蒙原生应用带来的原生精致、易用、流畅、安全、智能、互联的使用体验一致地好评。造炬成阳在开发过程中,我们受到了徐彬老师的极大帮助。徐老师是一位华为开发者布道师,他通过深入浅出的课堂帮助我们快速入门。这让我意识到,作为开发者,我们不仅要做技术的探索者,也要做技术的传播者。今年8月份,我也成为了一名华为开发者布道师,立志将鸿蒙技术的力量带给更多同学。我在校内筹办了华为创新俱乐部,开始推广鸿蒙技术。我通过实际操作和案例演示,展示鸿蒙技术的独特魅力。半年的时间里,我已经将手中的火苗传递给了200多名同学。星星之火,可以燎原。星星之火,可以燎原作为一名校园开发者,我深知技术创新的力量。我相信,在华为技术的支持下,未来会有更多像我一样的开发者涌现出来。作为华为开发者布道师的一员,无论是老师、学生,还是企业布道师,我们在逐渐成长为照亮全国乃至全球的火炬。朋友们,让我们一起,用千万火苗,照亮鸿蒙新世界的每一个角落。谢谢大家!
-
中奖结果公示感谢各位小伙伴参与本次活动,欢迎关注华为云开发者社区技术直播更多活动~本次活动获奖名单如下(部分抽奖未填问卷用户无账号名):账号名 奖项名称 奖品名称 备注持久观看有奖开发者定制帆布袋持久观看有奖开发者定制帆布袋持久观看有奖华为云云宝手办-盲盒款持久观看有奖华为云云宝手办-盲盒款
-
参考书籍资料:《鸿蒙操作系统设计原理与架构》 (李毅,任革林)布道活动地点:东北大学(浑南校区)
-
鸿蒙版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的插件接口不变,但是返回值会有所调整,后续文档会逐步完善,在使用本插件跨平台研发时请联系开发者提供技术服务。
-
2024年7月23日,在学生自发组织,负责教师指导下,兰州大学信息科学与工程学院(下文简称“信息学院”)网络安全专业暑期学校暨华为布道师活动“OpenHarmony网络安全能力综合培训”圆满举行。本次活动由华为开发者学生布道师王天一、聂嘉一同学自发组织,信息学院刘新副教授指导,并邀请信息学院博士生刘子昂作分享报告。本次活动主要覆盖了OpenHarmony生态发展、开源社区简介、网络漏洞挖掘等内容。活动现场照片活动伊始,聂嘉一同学介绍了OpenHarmony操作系统的设计理念与生态发展,同时分享了OpenHarmony设备兼容性测试相关经验、王天一同学为大家讲解了近期开源工作的内容,并介绍了兰州大学OpenHarmony俱乐部所承接的年度课题。聂嘉一同学为大家介绍OpenHarmony兼容性测试流程王天一同学为大家介绍OpenHarmony年度课题上午的第二个环节,刘新副教授分享自己在HDC2024发现活动漏洞的经验,并以多所高校官网中存在的安全隐患为例,讲解了常见网络安全漏洞的类型,为同学们下午的实战演练提供理论基础。刘新副教授为大家分享HDC2024漏洞挖掘经验在上午活动的尾声,刘子昂博士作开源许可证治理的报告,揭示了不当使用许可证带来的潜在风险,并介绍许可证兼容性分析的方法。刘子昂博士为大家讲解开源许可证治理23日下午,刘新老师与几位同学指导大家在华为云服务器靶场中进行漏洞挖掘,让大家在实践中提升自身的专业能力。现场挖掘靶场安全漏洞背景概述:华为布道师计划旨在培养更多能够掌握和使用华为开放技术评聘专业人才,更为致力于引领、指导和支持他人学习和应用这些技术。兰州大学信息科学与工程学院周庆国教授为首批华为教师布道师。
-
2024年7月13日-7月18日,在学生自发组织,负责教师指导下,兰州大学信息科学与工程学院(后简称“信息学院”)“人工智能专业综合实训”暑期学校暨华为开发者布道师活动“OpenHarmony开发实战提升”圆满举行。本次活动由华为开发者学生布道师王天一、聂嘉一同学自发组织,信息学院教师狄长艳老师指导,同时华为开发者教师布道师、信息学院教师周庆国教授,信息学院教师刘传义副教授等受邀做了分享报告。本次活动主要覆盖了OpenHarmony的南北向开发以及OpenHarmony初级人才认证考试等内容。活动现场照片活动首日,聂嘉一同学介绍了OpenHarmony操作系统的设计理念与生态发展、钱浩莱同学详细讲解了鸿蒙南北向开发流程,并重点介绍了鸿蒙应用程序的开发。聂嘉一同学为大家介绍OpenHarmony生态发展前景钱浩莱同学为大家讲解OpenHarmony应用程序开发实例此外,活动中王天一同学为大家讲解了OpenHarmony初级人才认证的基本信息和考试方法,在讲解完成之后,还组织了大家现场进行OpenHarmony人才认证考试。王天一同学为大家讲解OpenHarmony人才认证相关内容经过了一个小时的考试之后,共有36名同学通过了OpenHarmony初级人才认证,周庆国教授为同学们颁发了获奖证书。周庆国教授为获得OpenHarmony初级人才认证的同学颁发证书在为期六天的暑期学校中,几位同学均在实战环节指导大家动手实践,从零开始完成智能设备的开发。在活动的最后一日,参加活动的同学们共同合影留念。获得OpenHarmony初级人才认证的同学们合影留念背景概述:华为开发者布道师计划旨在培养更多能够掌握和使用华为开放技术评聘专业人才,更为致力于引领、指导和支持他人学习和应用这些技术。其中,信息学院周庆国教授为首批华为开发者教师布道师。
上滑加载中
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签