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:如果觉得有用,麻烦点个赞,加个收藏

相关推荐
坚果派·白晓明1 天前
常用URL语法传输数据开源命令行工具curl鸿蒙化构建过程深度解析
开源·openharmony·开源鸿蒙·开源软件termony
坚果派·白晓明1 天前
通过开源鸿蒙终端工具Termony完成Zlib 命令行工具构建过程深度解读
openharmony·开源鸿蒙·开源软件termony
坚果派·白晓明1 天前
Tree 命令行工具鸿蒙化构建过程问题及解决方法
openharmony·开源鸿蒙·开源软件termony
坚果派·白晓明2 天前
开源鸿蒙化构建GNU Tar 1.35:完整过程与验证
openharmony·开源鸿蒙·开源软件termony
坚果派·白晓明2 天前
通过开源鸿蒙终端工具Termony完成Libarchive 命令行工具构建过程深度解读
openharmony·开源鸿蒙·开源软件termony
坚果派·白晓明2 天前
通过开源鸿蒙终端工具Termony完成Zstd 命令行工具构建过程深度解读
openharmony·开源鸿蒙·开源软件termony
坚果派·白晓明3 天前
通过开源鸿蒙终端工具Termony完成Vim命令行工具构建过程深度解读
vim·openharmony·开源鸿蒙·开源软件termony
坚果派·白晓明3 天前
通过开源鸿蒙终端工具Termony完成Coremark 命令行工具构建过程深度解读
openharmony·命令行工具·开源鸿蒙·开源软件termony
坚果派·白晓明3 天前
通过开源鸿蒙终端工具Termony完成Ncurses 命令行工具构建过程深度解读
openharmony·开源鸿蒙·开源软件termony
A懿轩A3 天前
【2025版 OpenHarmony】GitCode 口袋工具 v1.0.1 更新发布:Flutter + HarmonyOS 封装导航栏进行跳转
flutter·harmonyos·openharmony·gitcode·开源鸿蒙