鸿蒙NEXT开发【代应用/服务签名】

针对应用/服务的签名,DevEco Studio为开发者提供了[自动签名]方案,帮助开发者高效进行调试。也可选择[手动签名]对应用/服务进行签名。

自动签名

说明

使用自动签名前,请确保本地系统时间与北京时间(UTC/GMT +8.00)保持一致。如果不一致,将导致签名失败。

操作步骤

  1. 连接真机设备,确保[DevEco Studio与真机设备已连接],真机连接成功后如下图所示:

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    说明

    如果同时连接多个设备,则使用自动化签名时,会同时将这多个设备的信息写到证书文件中。

  2. 进入File > Project Structure… > Project > Signing Configs界面,勾选“Automatically generate signature”(如果是HarmonyOS工程,需同时勾选“Support HarmonyOS”),即可完成签名。如果未登录,请先单击Sign In进行登录,然后自动完成签名。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    签名完成后,如下图所示,并在本地生成密钥(.p12)、证书请求文件(.csr)、数字证书(.cer)及Profile文件(.p7b),数字证书在AppGallery Connect网站的“证书、APP ID和Profile”页签中可以查看。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

支持ACL权限

从DevEco Studio 4.0 Release版本起,若您的应用需要使用受限开放权限,可以在调测阶段通过自动签名快速申请。

注意

  • 在申请前,请审视是否符合[受限权限的使用场景]。当前仅少量符合特殊场景的应用可在通过审批后,使用受限权限。
  • 涉及受限权限的应用,在上架时,应用市场(AGC)将根据应用的使用场景审核是否可以使用对应的受限权限。

当前支持通过自动签名申请需要ACL权限的清单如[表1]所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

执行[操作步骤]后,DevEco Studio将校验当前配置的ACL权限是否在上述列表内,然后通过应用市场(AGC)申请对应的Profile文件,用于签名打包,从而避免繁琐的手动签名步骤。

如果使用的DevEco Studio版本低于4.0 Release,在开发过程中使用了需要[ACL]的权限,则仍需要采用[手动签名]。

手动签名

HarmonyOS应用/服务通过数字证书(.cer文件)和Profile文件(.p7b文件)来保证应用/服务的完整性。在申请数字证书和Profile文件前,首先需要通过DevEco Studio来生成密钥(存储在格式为.p12的密钥库文件中)和证书请求文件(.csr文件)。然后,申请调试数字证书和调试Profile文件。最后,将密钥(.p12)文件、数字证书(.cer)文件和Profile(.p7b)文件配置到工程中。

基本概念

  • 密钥:格式为.p12,包含非对称加密中使用的公钥和私钥,存储在密钥库文件中,公钥和私钥对用于数字签名和验证。
  • 证书请求文件:格式为.csr,全称为Certificate Signing Request,包含密钥对中的公钥和公共名称、组织名称、组织单位等信息,用于向AppGallery Connect申请数字证书。
  • 数字证书:格式为.cer,由华为AppGallery Connect颁发。
  • Profile文件:格式为.p7b,包含HarmonyOS应用/服务的包名、数字证书信息、描述应用/服务允许申请的证书权限列表,以及允许应用/服务调试的设备列表(如果应用/服务类型为Release类型,则设备列表为空)等内容,每个应用/服务包中均必须包含一个Profile文件。

生成密钥和证书请求文件

  1. 在主菜单栏单击Build > Generate Key and CSR

    说明

    如果本地已有对应的密钥,无需新生成密钥,可以在Generate Key界面中单击下方的Skip跳过密钥生成过程,直接使用已有密钥生成证书请求文件。

  2. Key Store File中,可以单击Choose Existing选择已有的密钥库文件(存储有密钥的.p12文件);如果没有密钥库文件,单击New进行创建。下面以新创建密钥库文件为例进行说明。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  3. Create Key Store窗口中,填写密钥库信息后,单击OK

    • Key store file:设置密钥库文件存储路径,并填写p12文件名。
    • Password:设置密钥库密码,必须由大写字母、小写字母、数字和特殊符号中的两种以上字符的组合,长度至少为8位。请记住该密码,后续签名配置需要使用。
    • Confirm password:再次输入密钥库密码。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  4. Generate Key and CSR界面中,继续填写密钥信息后,单击Next

    • Alias:密钥的别名信息,用于标识密钥名称。请记住该别名,后续签名配置需要使用。
    • Password:密钥对应的密码,与密钥库密码保持一致,无需手动输入。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  5. Generate Key and CSR界面,设置CSR文件存储路径和CSR文件名。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  6. 单击Finish,创建CSR文件成功,可以在存储路径下获取生成的密钥库文件(.p12)、证书请求文件(.csr)和material文件夹(存放签名方案相关材料,如密码、证书等)。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

申请调试证书和调试Profile文件

通过生成的证书请求文件,向AppGallery Connect申请调试证书和Profile文件,操作如下:

  • 创建HarmonyOS应用/服务:在AppGallery Connect项目中,创建一个HarmonyOS应用/服务,用于调试证书和Profile文件申请。
  • 申请调试证书和Profile文件:在AppGallery Connect中申请、下载调试证书和Profile文件和[申请调试Profile]。

手动配置签名信息

在DevEco Studio中配置密钥(.p12)文件、申请的调试证书(.cer)文件和调试Profile(.p7b)文件。

File > Project Structure > Project > Signing Configs窗口中,取消勾选“Automatically generate signature”(如果是HarmonyOS应用,请勾选“Support HarmonyOS”),然后配置工程的签名信息。

  • Store file:选择密钥库文件,文件后缀为.p12,该文件为[生成密钥和证书请求文件]中生成的.p12文件。
  • Store password:输入密钥库密码,该密码与[生成密钥和证书请求文件]中填写的密钥库密码保持一致。
  • Key alias:输入密钥的别名信息,与[生成密钥和证书请求文件]中填写的别名保持一致。
  • Key password:输入密钥的密码,与[生成密钥和证书请求文件]中填写的Store Password保持一致。
  • Sign alg:签名算法,固定为SHA256withECDSA。
  • Profile file:选择[申请调试证书和调试Profile文件]中生成的Profile文件,文件后缀为.p7b。
  • Certpath file:选择[申请调试证书和调试Profile文件]中生成的数字证书文件,文件后缀为.cer。

说明

Store file,Profile file,Certpath file三个字段支持配置相对路径,以项目根目录为起点,配置文件所在位置的路径名称。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

配置完成后,进入工程级build-profile.json5文件,在“signingConfigs”下可查看到配置成功的签名信息。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用ACL的签名配置指导

如果应用需要使用受限权限,请先审视是否符合[受限开放权限]的使用场景,并根据以下流程申请。

  1. 申请进入白名单。

    请将[APP ID]、申请使用的受限开放权限、使用该权限的场景和功能信息,发送到agconnect@huawei.com。AGC运营将审核相关材料,通过后将为您配置受限开放权限使用的名单,审核周期一个工作日,请耐心等待。

    注意

    • 若应用因特殊场景要求使用受限开放权限,请务必在此步骤进行申请,否则应用将在审核时被驳回。。
    • 同时,请确保应用申请受限开放权限时提供的场景和功能信息准确。
    • 如果应用内使用的受限开放权限超出您申请的范围,或申请权限后使用的功能和场景超出可使用的范围,将影响您的应用上架。
  2. 在配置文件中添加权限信息。

    在需要使用权限的模块的module.json5/config.json文件中添加“requestPermissions”/“reqPermissions”字段,并在字段下添加对应的权限名等信息,以在Stage模型工程中增加权限“ohos.permission.ACCESS_IDS”为例。

{
  "module": {
    ...
    "requestPermissions": [{
      "name": "ohos.permission.ACCESS_IDS",
    }],
    ...
  }
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 手动配置签名信息。

    1. 连接真机设备,确保[DevEco Studio与真机设备已连接]。

      外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    2. 点击DevEco Studio右上角的按钮打开“Project Structure”窗口,进入“Signing Config”页签,取消勾选“Automatically generate signature”。

      在“Signing”下分别配置密钥(.p12文件)、Profile(.p7b文件)和数字证书(.cer文件)的路径等信息。

      勾选“Show restricted permissions”,即可看到配置成功的权限。

      配置完毕后,点击“Apply”。

      外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  2. 进入工程级build-profile.json5文件,在“signingConfigs”下可查看到配置成功的签名信息,点击右上角的“Run”按钮运行应用/服务。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

常见问题

元服务签名时,提示"Invalid AppId in the bundle name."

问题原因

元服务的包名采用固定前缀和APP ID组合方式(com.atomicservice.[appid] )命名。开发者需先在(AppGallery Connect)新建元服务并获取其包名,并将包名填写至工程的bundleName字段中。若上传的元服务包的包名和AGC中的包名不一致,则会导致元服务上架失败。

不合法包名包括:

  1. 包名在AGC中不存在;
  2. 非当前DevEco Studio登录账号下的元服务应用的包名。

解决措施

  1. 在AGC中新建元服务并获取相应的包名。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  2. 在工程AppScope > app.json5文件中填写相应的bundleName,并重新进行签名。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最后呢

很多开发朋友不知道需要学习那些鸿蒙技术?鸿蒙开发岗位需要掌握那些核心技术点?为此鸿蒙的开发学习必须要系统性的进行。

而网上有关鸿蒙的开发资料非常的少,假如你想学好鸿蒙的应用开发与系统底层开发。你可以参考这份资料,少走很多弯路,节省没必要的麻烦。由两位前阿里高级研发工程师联合打造的《鸿蒙NEXT星河版OpenHarmony开发文档》里面内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(Harmony NEXT)技术知识点

如果你是一名Android、Java、前端等等开发人员,想要转入鸿蒙方向发展。可以直接领取这份资料辅助你的学习。下面是鸿蒙开发的学习路线图。

在这里插入图片描述

针对鸿蒙成长路线打造的鸿蒙学习文档。话不多说,我们直接看详细鸿蒙(OpenHarmony )手册(共计1236页)与鸿蒙(OpenHarmony )开发入门视频,帮助大家在技术的道路上更进一步。

  • 《鸿蒙 (OpenHarmony)开发学习视频》
  • 《鸿蒙生态应用开发V2.0白皮书》
  • 《鸿蒙 (OpenHarmony)开发基础到实战手册》
  • OpenHarmony北向、南向开发环境搭建
  • 《鸿蒙开发基础》
  • 《鸿蒙开发进阶》
  • 《鸿蒙开发实战》

在这里插入图片描述

总结

鸿蒙—作为国家主力推送的国产操作系统。部分的高校已经取消了安卓课程,从而开设鸿蒙课程;企业纷纷跟进启动了鸿蒙研发。

并且鸿蒙是完全具备无与伦比的机遇和潜力的;预计到年底将有 5,000 款的应用完成原生鸿蒙开发,未来将会支持 50 万款的应用。那么这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行! 自↓↓↓拿
1

<think>好的,用户的问题是在HarmonyOS Next开发中如何获取网络视频的封面方法。我需要先理解用户的具体需求。他们可能想要在应用中显示网络视频的封面图,比如在视频列表中展示缩略图,而不是直接播放视频。这涉及到从网络视频中提取封面或缩略图的技术。 首先,我需要回顾HarmonyOS的文档和相关API。根据提供的引用资料,尤其是引用[4],其中提到使用fetchFrameByTime()方法获取指定时间点的缩略图。这可能是一个关键点。用户的问题是关于网络视频,所以需要考虑如何处理网络资源。 接下来,我需要确认AVPlayer是否支持网络视频的处理。引用[2]提到AVPlayer可以播放本地和流媒体资源,所以应该支持网络视频。但获取缩略图可能需要先下载部分视频数据,或者通过AVPlayer获取某一帧作为封面。 可能的步骤是:首先使用AVPlayer加载网络视频,然后暂停在初始帧,或者指定某个时间点(比如第0秒),然后捕获该帧作为封面。另外,引用[4]中的fetchFrameByTime()方法可能需要在视频加载后调用,但需要确保视频已经准备好,否则可能会失败。 另外,权限问题也很重要。引用[3]提到自签名快速申请ACL权限,可能需要网络权限和存储权限,尤其是当需要缓存视频数据时。用户需要注意在配置文件中声明这些权限。 还需要考虑异步处理,因为网络请求和视频加载都是耗时操作,需要在后台线程中进行,避免阻塞主线程。同时,错误处理也是必要的,比如处理网络不可用、视频资源无效等情况。 总结步骤可能包括: 1. 初始化AVPlayer并设置网络视频源。 2. 准备播放并等待资源加载完成。 3. 使用fetchFrameByTime()在指定时间点获取缩略图。 4. 处理获取到的PixelMap,显示在UI上。 5. 处理可能的异常和权限问题。 此外,用户可能需要了解如何将获取的缩略图保存或缓存,避免重复下载。同时,可能需要调整获取的时间点,以确保封面图的质量,比如避开黑屏或无效帧。 最后,生成相关问题时,需要围绕视频处理、权限管理、性能优化等方面展开,帮助用户进一步深入学习和解决问题。</think>### 鸿蒙Next开发中获取网络视频封面的方法 在鸿蒙HarmonyOS NEXT中,获取网络视频封面可以通过**视频解码与缩略图提取技术**实现,具体步骤如下: --- #### **1. 使用AVPlayer加载网络视频** AVPlayer支持流媒体资源的播放和解析,可加载网络视频地址: ```typescript import media from '@ohos.multimedia.media'; // 创建AVPlayer实例 let avPlayer: media.AVPlayer = await media.createAVPlayer(); // 设置网络视频源 avPlayer.url = 'https://example.com/video.mp4'; await avPlayer.prepare(); // 准备资源 ``` --- #### **2. 通过fetchFrameByTime()获取缩略图** 在视频资源加载完成后,调用`fetchFrameByTime()`方法获取指定时间点的帧作为封面: ```typescript import image from '@ohos.multimedia.image'; // 获取第0秒的缩略图(封面) let timeUs = 0; // 单位微秒 avPlayer.fetchFrameByTime(timeUs, (err, pixelMap) => { if (err) { console.error('获取缩略图失败:', err); return; } // 将PixelMap绑定到Image组件显示 let imageComponent = this.ImageComponent; // 假设已定义Image组件 imageComponent.pixelMap = pixelMap; }); ``` 该方法会返回一个`PixelMap`对象,可直接用于UI渲染[^4]。 --- #### **3. 异步处理与错误捕获** - **网络资源加载需异步操作**:通过Promise或回调确保视频资源加载完成后再提取帧。 - **异常处理**:检查网络权限(需在`module.json5`中声明`ohos.permission.INTERNET`)[^3]。 --- #### **4. 性能优化建议** - **缓存机制**:对频繁访问的网络视频封面进行本地缓存。 - **时间点选择**:根据视频格式调整时间点(例如避开黑屏帧)。 - **资源释放**:操作完成后调用`avPlayer.release()`释放资源。 --- ### 完整示例码 ```typescript import media from '@ohos.multimedia.media'; import image from '@ohos.multimedia.image'; async function loadVideoCover(url: string) { try { let avPlayer = await media.createAVPlayer(); avPlayer.url = url; await avPlayer.prepare(); // 获取封面 avPlayer.fetchFrameByTime(0, (err, pixelMap) => { if (err) throw err; // 更新UI显示封面 this.ImageComponent.pixelMap = pixelMap; avPlayer.release(); // 释放资源 }); } catch (error) { console.error('视频封面加载失败:', error); } } ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值