鸿蒙3.0应用开发若干问题及上架总结

news2024/11/19 5:54:41

在这里插入图片描述

1.如何去掉默认标题栏,实现全屏显示?

在config.json中的ability配置信息中添加属性:

"abilities": [
{
     ...
    "metaData": {
        "customizeData": [
          {
            "name": "hwc-theme",
            "value": "androidhwext:style/Theme.Emui.Translucent.NoTitleBar",
            "extra": ""
          }
        ]
      }
      ...
}]

2.应用冷启动白屏?

这个问题类似与安卓应用冷启动时白屏一样,鸿蒙应用的解决办法同问题1,将主题设置为:

androidhwext:style/Theme.Emui.Translucent.NoTitleBar

注意是Translucent。

3.如何获取屏幕尺寸?

import display from '@ohos.display';

display.getDefaultDisplay((err, data) => {
  if (err) return;
  console.error("屏幕宽高:" + data.width + "," + data.height);
});

4.如何获取状态栏高度,以及设置状态栏背景色?

import window from '@ohos.window';

window.getTopWindow((err, mainWindowClass) => {
  if (err) return;
  mainWindowClass.setSystemBarEnable(['status']);
  mainWindowClass.setLayoutFullScreen(true);
  mainWindowClass.setSystemBarProperties({
    statusBarColor: '#00ff0000', // 状态栏背景色透明
    isStatusBarLightIcon: false,//状态栏图标是否为亮色
    statusBarContentColor: '#000000',//状态栏字体颜色
  });
  mainWindowClass.getAvoidArea(window.AvoidAreaType.TYPE_SYSTEM, (err, data) => {
    if (err) return;
    console.error("状态栏高度:" + data.topRect.height);
  });
});

5.如何显示Toast提示?

import prompt from '@ohos.prompt';

prompt.showToast({
  message: "提示信息",
  bottom: "1000px"//距离屏幕底部高度
})

效果:
在这里插入图片描述

6.网络请求

http:

import http from '@ohos.net.http';

let httpRequest = http.createHttp()
httpRequest.request(url, {
    method: method,
    header: header,
    extraData: paramsStr,
    connectTimeout: 30000, // 可选,默认为60s
    readTimeout: 30000, // 可选,默认为60s
  }, (err, data) => {

})

fetch:

import fetch from '@system.fetch';

fetch.fetch({
  url: url,
  method: method,
  header: header,
  success: res => {

  },
  fail: error => {
    
  }
})

7.自定义LoadingDialog

@CustomDialog
export struct LoadingDialog {
  controller: CustomDialogController
  @State angle: number = 0
  interval: number

  aboutToAppear() {
    this.angleChange()
  }

  aboutToDisappear() {
    clearInterval(this.interval)
  }

  angleChange() {
    this.angle = 0
    this.interval = setInterval(() => {
      this.angle += -30
      if (this.angle == -360) this.angle = 0
    }, 50)
  }

  build() {
    Stack() {
      Column() {
        Image($r('app.media.ic_loading'))
          .width(20)
          .height(20)
          .rotate({ x: 0, y: 0, z: 1, angle: this.angle })
      }
    }
    .width(50)
    .height(50)
    .backgroundColor(0x88000000)
    .borderRadius(10)
    .shadow({ radius: 10, color: Color.Gray, offsetX: 3, offsetY: 3 })
  }
}

使用方法,在page内:

声明CustomDialogController :

  dialogController: CustomDialogController = new CustomDialogController({
    builder: LoadingDialog(),
    autoCancel: false,
    customStyle: true
  });

显示:this.dialogController.open()
隐藏:this.dialogController.close()

槽点:目前dialog只能在@Entry修饰的page内使用,无法进行封装,也就是说,在想使用loading的页面,都要进行以上声明并调用相关方法才能使用!

效果:

在这里插入图片描述
8.如何进行真机调试?

首先,你的真机系统版本要跟你的项目api版本要一致,或者真机系统版本高于项目api版本,例如项目api是8,真机就必须为鸿蒙3.0以上系统,2.0无法安装调试;

9.如何设置正式签名及发布应用?

File->Project Structure:

在这里插入图片描述

勾选Automatically generate signature,则自动生成debug版本的签名,调试时可以直接运行到真机或模拟器。

当你发布应用时则需要正式签名,此时就需要手动设置签名,手动签名需要三个文件:

  • .p12:自己创建;
  • .cer:通过自己创建的.csr从华为后台申请得到;
  • .p7b:通过上一步得到的.cer通过华为后台申请得到;

第一步:创建.p12和.csr:

Build->Generate Key and CSR:

在这里插入图片描述

首先需要创建p12证书,填写证书名称,密码等;

创建成功后进入到生成CSR这一步,填写别名,密码以及csr的文件名和保存位置:

在这里插入图片描述

点击Finish后生成:

在这里插入图片描述

第二步:上传第一步获取的.csr申请.cer

选择用户与访问:
在这里插入图片描述
选择右侧菜单证书管理:

在这里插入图片描述

点击右侧,新增证书按钮:

在这里插入图片描述
证书名称自定义,证书类型选择发布证书,csr即第一步生成的csr文件,提交后会在后台生成一个正式的发布证书,下载下来并保存:

在这里插入图片描述

第三步:上传第二步获取的.cer,申请.p7b:

选择我的项目,并选择你的鸿蒙版应用,然后在右侧菜单选择 HAP Provision Profile管理:
在这里插入图片描述

在右侧点击添加按钮:

在这里插入图片描述

名称自定义,类型选择发布,证书选择时会自动弹出第二步创建的.cer,选择即可,首先权限根据项目情况选择,提交成功后:

在这里插入图片描述
下载.p7b证书并保存!

回开发工具中设置签名的界面:

在这里插入图片描述

依次选择你所生成和下载的.p12,.cer和.p7b并确定!然后开发工具选择Build->BuildAPP(s)即可,注意上传市场只能是.app格式的包:
BIild
编译完成后,app包在项目根目录的build文件夹下:

在这里插入图片描述

10.上传市场时可能遇到的审核问题

  • 应用图标问题:最好为纯色背景+logo,右下角明显HMOS标识,尺寸216直角
  • 项目存在bug,影响下一步操作
  • 功能不完善
  • 无隐私条款
  • 如有个性化推荐功能,则必须要提供关闭功能
  • 最好加上账号注销功能

如果你的鸿蒙版应用已有安卓版在华为市场上架,审核会轻松不少

11.目前上传到市场的鸿蒙应用内允许的操作

比如内部一些功能无法通过鸿蒙版app实现时,可以提示用户,跳转到安卓版对应页面操作,如用户没有安装,则跳转到安卓版应用市场详情页(以上需要自己实现)

12.arkui中的直播支持问题

arkui的video组件目前只支持本地视频和网络视频,不支持如直播推拉流,官方回复目前暂无支持计划,也没有解决方案,无解,只能等待ark技术栈逐步完善!

待续…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/72395.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Buildroot系列开发(五)bootloader简述

参考:百问网 文章目录1.什么是Boot-loader?2.有哪些bootloader?哪些支持linux?3.Bootloader支持的Flash设备4.Bootloader支持的文件系统类型4.Bootloader支持的CPU架构5.Bootloader总结1.什么是Boot-loader? 2.有哪些bootloader?哪些支持linux&#…

广州蓝景分享——前端学习5 种在 JavaScript 中获取字符串第一个字符的方法

在本文中,我们将研究多种方法来轻松获取 JavaScript 中字符串的第一个字符。 1.charAt() 方法 要获取字符串的第一个字符,我们可以在字符串上调用 charAt() ,将 0 作为参数传递。例如,str.charAt(0) 返回 str 的第一个字符。 c…

AT1106S(PHS/EN输入接口通道0.8A低压H桥直流刷式电机驱动IC)

描述 泛海微AT1106S为摄像机、消费类产品、玩具和其它低电压或者电池供电的运动控制类应用提供了一个集成的电机驱动器解决方案。泛海微AT1106S能够驱动一个直流电机或其他诸 如螺线管的器件。输出驱动模块由N MOS功率管构成的H桥组成,以驱动电机绕组。泛海微AT110…

车企接连押注「重感知」 ,高精地图真会被弃用?

实现高阶智能驾驶,“重感知”是否为大势所趋? 答案正日益明晰。 2022年,以特斯拉为代表的“重感知”阵营,押注者正日趋增多。以在2022年尝试落地城市NOA的三家厂商为例:毫末智行一早便属“重感知”阵营;小…

【20221208】【每日一题】目标和

给你一个整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - ,然后串联起所有整数,可以构造一个 表达式 : 例如,nums [2, 1] ,可以在 2 之前添加 ,在 1 之前添加 - ,然后串…

5G无线技术基础自学系列 | SA移动性管理流程

素材来源:《5G无线网络规划与优化》 一边学习一边整理内容,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 SA移动性管理流程包括站内切换、Xn切换…

Java基础之序列化和反序列化

序列化的实现 java.io中的对象流提供了序列化和反序列化对象的方法 对象输出流 ObjectOutputStream 构造方法: ObjectOutputStream(OutputStream out) 保存对象的方法: void writeObject(Object obj) 对象输入流 ObjectInputStream 构造方法&…

使用 MySQL、Thymeleaf 和 Spring Boot Framework 上传、存储和查看图像

在本文中,我们将使用 Spring Boot 框架从头开始构建映像库应用程序,用户可以在其中列出其映像。 以下是我们将在应用程序中实现的功能。 用户可以列出他们的图像以及详细信息,例如, 名字描述图像价格。(如果他们想卖…

Win11 启用旧右键菜单 _ Windows11 右键改回老版

Win11 系统在使用上和之前的系统差不多,但是在设计上,有了很大的改变,系统界面,设置等功能都使用了全新的风格,包括右键菜单,这让很多用户使用起来都很不习惯,因此想改回旧版的右键菜单来使用。…

汽车控制器概述

目录 一、整车控制器(VCU) 功能 工作模式 二、发动机控制器/电子控制单元(ECU) ECU基本组成 ECU的作用 ECU的工作原理 常见的ECU的类型 三、电机控制器(MCU) 四、 电池管理系统(BMS&a…

cubeIDE开发, stm32的USB从设备串口驱动设计

一、USB_OTG简介 USB_OTG(OTG,ON THE GO)是一款双角色设备(DRD) 控制器,同时支持从机(USB DEVICE)功能和主机(USB HOST)功能。在主机模式下,OTG 支持全速(OTG…

2022圣诞在即,出海品牌如何做好网红营销?

随着2022圣诞节逐渐临近,节日气氛也开始浓郁起来,尤其在社交媒体上,圣诞主题的内容越来越多,随之而来的则是各种营销与折扣。受经济形势影响,性价比在当下显得尤为重要,有60%的消费者表示,今年圣…

【能效分析】安科瑞变电所运维云平台解决方案应用分析

概述 安科瑞 李亚俊 壹捌柒贰壹零玖捌柒伍柒 AcrelCloud-1000变电所运维云平台基于互联网+大数据、移动通讯等技术开发的云端管理平台,满足用户或运维公司监测众多变电所回路运行状态和参数、室内环境温湿度、电缆及母线运行温度、现场设备或环境视频场…

CentOS MySQL安装

1.查询是否已经存在mariadb。 rpm -qa|grep mariadb如果存在需要卸载。 rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_642.通过xftp上传MySQL和Hive压缩包。 3.解压压缩包。 tar -zxvf apache-hive-2.3.4-bin.tar.gz -C /opt/apps/ tar -zxvf mysql-5.7.27-el7-x86_64.ta…

042-推箱子游戏源代码2

上一讲:041-推箱子游戏1_CSDN专家-赖老师(软件之家)的博客-CSDN博客 摘要: 1、使用JAVA基础知识 2、GUI界面编程实现推箱子界面,常用控件的综合应用; 3、使用JAVA绘图技术实现推箱子过程的绘图功能; 4、使用键盘事件,通过方向键实现推箱子过程; 5、使用音频技术,…

Android实现车辆检测(含Android源码 可实时运行)

Android实现车辆检测(含Android源码 可实时运行) 目录 Android实现车辆检测(含Android源码 可实时运行) 1. 前言 2. 车辆检测数据集说明 3. 基于YOLOv5的车辆检测模型训练 4.车辆检测模型Android部署 (1) 将Pytorch模型转换ONNX模型 &#xff08…

Python编程 圣诞树教程 (附代码)程序员的浪漫

作者简介:一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.python 做圣诞树 1.turtle库 2.python函数的定义规则 2.引入库 3.定…

中断系统中的设备树__在S3C2440上使用设备树描述中断体验

目录 1 怎么描述一个中断 2 怎么描述一个中断控制器 3 总结 1 怎么描述一个中断 我们想在设备树文件中描述一个中断,那么需要两个东西 a.指定是哪一个中断控制器 b.是中断控制器里面的哪一个中断。 假设我们有一个网卡,当网卡有数据时会产生一个中…

论文速度系列三:SA-SSD、CIA-SSD、SE-SSD

如有错误,恳请指出。 参考网上资料,对一些经典论文进行快速思路整理 文章目录1. SA-SSD2. CIA-SSD3. SE-SSD1. SA-SSD paper:《Structure Aware Single-stage 3D Object Detection from Point Cloud》(2020CVPR) 结构…

网络工程师备考4章

4.1 历年考点分布 4.2 局域网和城域网 4.2.1 局域网体系与拓扑结构 一般数据链路层的协议都是IEEE这个组织规范的,网络层是有RFC这个组织规范的。 数据链路层是可以划分为两个子层的,第一个叫逻辑链路控制LLC(对接上面的网络层),第二个叫MAC子层(更偏向于物理层)。 最…