openharmony体验

openharmony5 去年已经出来了

如果以前做过android开发的,学起来不难,关键

1:环境

DevEco Studio 5.0.3 Beta2 https://developer.huawei.com/consumer/cn/deveco-studio/

win10_64bit

CPU amd64(不是arm的)

2:安装

执行EXE 安装就行,网上一堆

API 自由选择

registry=https://repo.huaweicloud.com/repository/npm/

@ohos:registry=https://repo.harmonyos.com/npm/

创建模拟器

tools->device manger

随便创建个工程

修改 build-profile.json5 可以是在 entry目录下 增加 abiFilters x86_64 默认为 arm ,x86模拟器装不上

改成 "runtimeOS": "OpenHarmony" 才是openharmony

javascript 复制代码
{
  "apiType": 'stageMode',
  "buildOption": {
    "externalNativeOptions": {
      "abiFilters": ["arm64-v8a", "x86_64"],
      "path": "./src/main/cpp/CMakeLists.txt",
      "arguments": "",
      "cppFlags": "",
    }
  },
  "targets": [
    {
      "name": "default",
      "runtimeOS": "HarmonyOS"
    },
    {
      "name": "ohosTest",
    }
  ]
}

3:DEMO测试

直接来个native c++



出现下面的问题,就是要先把模拟器器开起来

自带 export const add: (a: number, b: number) => number;

typescript 复制代码
import { hilog } from '@kit.PerformanceAnalysisKit';
import testNapi from 'libentry.so';
import StyleConstants from '../common/constants/StyleConstants';
import CommonConstants from '../common/constants/CommonConstants';

const DOMAIN = 0x0000;

@Entry
@Component
struct Index {
  @State message: string = 'Hello World';

  @State number1: number|string = '';
  @State number2: number|string = '';
  @State result:  string ="";

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize($r('app.float.page_text_font_size'))
          .fontWeight(FontWeight.Bold)
          .onClick(() => {
            this.message = 'Welcome';
            hilog.info(DOMAIN, 'testTag', 'Test NAPI 2 + 3 = %{public}d', testNapi.add(2, 3));
          })
        TextInput({ placeholder: $r('app.string.inputnumber1') })
          .maxLength(StyleConstants.INPUT_ACCOUNT_LENGTH)
          .type(InputType.Number)
          .inputStyle()
          .onChange((value: string) => {
            this.number1 = value;
          })

        TextInput({ placeholder: $r('app.string.inputnumber2') })
          .maxLength(StyleConstants.INPUT_ACCOUNT_LENGTH)
          .type(InputType.Number)
          .inputStyle()
          .onChange((value: string) => {
            this.number2 = value;
          })
        Button($r('app.string.count'))
          .id(CommonConstants.LOGIN_BUTTON_ID)
          .width(StyleConstants.FULL_PARENT)
          .height($r('app.float.login_button_height'))
          .fontSize($r('app.float.normal_text_size'))
          .fontWeight(FontWeight.Medium)
          .backgroundColor($r('app.color.login_button_color'))
          .margin({
            top: $r('app.float.login_button_top'),
            bottom: $r('app.float.login_button_bottom')
          })
          .onClick(() => {
            let num1 = 0,num2 =0;
            if(typeof this.number1 === 'string'){
              num1 = parseInt(this.number1);
            }else if (typeof this.number1 === 'number'){
              num1 = this.number1;
            }

            if(typeof this.number2 === 'string'){
              num2 = parseInt(this.number2);
            }else if (typeof this.number2 === 'number'){
              num2 = this.number2;
            }
            this.result = testNapi.add(num1,num2).toString(10);
          })
        Text(this.result)
          .fontColor($r('app.color.blue_text_color'))
          .fontSize($r('app.float.normal_text_size'))
          .fontWeight(FontWeight.Medium)
      }
      .width('100%')
    }
    .height('100%')
  }
}

@Extend(TextInput) function inputStyle() {
  .placeholderColor($r('app.color.placeholder_color'))
  .height($r('app.float.login_input_height'))
  .fontSize($r('app.float.normal_text_size'))
  .backgroundColor(Color.White)
  .margin({ top: $r('app.float.input_margin_top') })
  .padding({ left: StyleConstants.INPUT_PADDING_LEFT })
}

@Extend(Text) function blueTextStyle() {
  .fontColor($r('app.color.blue_text_color'))
  .fontSize($r('app.float.small_text_size'))
  .fontWeight(FontWeight.Medium)
}

当前API 为15 跑14的模拟器,跑不起来

需要调下API 为14

APP name


4: 没有开发版,支持 openharmony5 开发版都不便宜,1500+起,

HarmonyOS 才能用模拟器,测试用不起,这狗屎的生态,

5:如果觉得有用,麻烦点个赞,加个收藏

相关推荐
夜星辰20231 天前
最新 OpenHarmony 系统一二级目录整理
openharmony
ursamjnor2 天前
基于 OpenHarmony 5.0 的星闪轻量型设备应用开发-Ch1 开发环境搭建
openharmony·星闪·轻量型设备开发
少年的云河月3 天前
OpenHarmony Camera组件简介
harmonyos·相机·openharmony·camera
ursamjnor3 天前
基于 OpenHarmony 5.0 的星闪轻量型设备应用开发——Ch2 OpenHarmony LiteOS-M 内核应用开发
openharmony·ws63·liteos-m 内核应用
少年的云河月4 天前
OpenHarmony Camera开发指导(二):相机设备管理(ArkTS)
harmonyos·openharmony·camera·相机开发
少年的云河月5 天前
OpenHarmony 5.0版本视频硬件编解码适配
音视频·harmonyos·视频编解码·openharmony·codec hdi
ursamjnor6 天前
基于 OpenHarmony 5.0 的星闪轻量型设备应用开发——Ch3 设备驱动开发
openharmony·轻量型设备开发·ws63
Industio_触觉智能16 天前
鸿蒙北向开发OpenHarmony5.0 DevEco Studio开发工具安装与配置
harmonyos·鸿蒙系统·openharmony·开源鸿蒙·鸿蒙开发·嵌入式开发板
沧海一笑-dj1 个月前
【鸿蒙开发】Hi3861学习笔记- NFC
harmonyos·鸿蒙·openharmony·nfc·海思·鸿蒙开发·hi3861
CrazyMo_1 个月前
OpenHarmony 入门——ArkUI 跨页面数据同步和页面级UI状态存储LocalStorage小结(二)
harmonyos·装饰器·openharmony·状态管理·arkui