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

相关推荐
性感博主在线瞎搞2 小时前
【鸿蒙开发】OpenHarmony与HarmonyOS调用C/C++教程
华为·harmonyos·鸿蒙·鸿蒙系统·openharmony
键盘鼓手苏苏2 天前
Flutter 组件 csv2json 适配鸿蒙 HarmonyOS 实战:高性能异构数据转换,构建 CSV 流式解析与全栈式数据映射架构
flutter·harmonyos·鸿蒙·openharmony
雷帝木木2 天前
Flutter 三方库 hrk_logging 的鸿蒙化适配指南 - 实现标准化分层日志记录、支持多目的地输出与日志分级过滤
flutter·harmonyos·鸿蒙·openharmony·hrk_logging
左手厨刀右手茼蒿2 天前
Flutter 三方库 dio_compatibility_layer 的鸿蒙化适配指南 - 实现 Dio 跨主版本的平滑迁移、支持遗留拦截器兼容与网络请求架构稳定升级
flutter·harmonyos·鸿蒙·openharmony·dio_compatibility_layer
特立独行的猫a2 天前
OpenHarmony海思WS63星闪平台:使用Mongoose 网路库文件下载封装与断点续传实现
openharmony·mongoose·海思·文件下载·ws63
王码码20352 天前
Flutter 组件 inappwebview_cookie_manager 适配 鸿蒙Harmony 实战 - 驾驭核心大 Web 容器缓存隧道、构建金融级政企应用绝对防串号跨域大隔离基座
flutter·harmonyos·鸿蒙·openharmony·inappwebview_cookie_manager
左手厨刀右手茼蒿2 天前
Flutter 组件 ews 的适配 鸿蒙Harmony 实战 - 驾驭企业级 Exchange Web Services 协议、实现鸿蒙端政企办公同步与高安通讯隔离方案
flutter·harmonyos·鸿蒙·openharmony
键盘鼓手苏苏2 天前
Flutter 组件 spry 适配鸿蒙 HarmonyOS 实战:轻量化 Web 框架,构建高性能端侧微服务与 Middleware 治理架构
flutter·harmonyos·鸿蒙·openharmony
亚历克斯神2 天前
Flutter 组件 t_stats 的适配 鸿蒙Harmony 实战 - 驾驭高性能统计学运算、实现鸿蒙端海量数据实时态势感知与工业级描述性统计方案
flutter·harmonyos·鸿蒙·openharmony·t_stats
键盘鼓手苏苏2 天前
Flutter 组件 angel3_orm_mysql 的适配 鸿蒙Harmony 实战 - 驾驭专业 ORM 映射引擎、实现鸿蒙端与 MySQL 数据库的透明映射与高性能 SQL 审计方案
flutter·harmonyos·鸿蒙·openharmony·angel3_orm_mysql