• [技术干货] OpenHarmony自定义组件介绍【转载】
    一、创建自定义组件在ArkUI中,UI显示的内容均为组件,由框架直接提供的称为系统组件,由开发者定义的称为自定义组件。在进行 UI 界面开发时,通常不是简单的将系统组件进行组合使用,而是需要考虑代码可复用性、业务逻辑与UI分离,后续版本演进等因素。因此,将UI和部分业务逻辑封装成自定义组件是不可或缺的能力。自定义组件具有以下特点:● 可组合:允许开发者组合使用系统组件、及其属性和方法。● 可重用:自定义组件可以被其他组件重用,并作为不同的实例在不同的父组件或容器中使用。● 数据驱动UI更新:通过状态变量的改变,来驱动UI的刷新。以下示例展示了自定义组件的基本用法。@Componentstruct HelloComponent { @State message: string = 'Hello, World!'; build() { // HelloComponent自定义组件组合系统组件Row和Text Row() { Text(this.message) .onClick(() => { // 状态变量message的改变驱动UI刷新,UI从'Hello, World!'刷新为'Hello, ArkUI!' this.message = 'Hello, ArkUI!'; }) } }}HelloComponent可以在其他自定义组件中的build()函数中多次创建,实现自定义组件的重用。class HelloComponentParam { message: string = ""}@Entry@Componentstruct ParentComponent { param: HelloComponentParam = { message: 'Hello, World!' } build() { Column() { Text('ArkUI message') HelloComponent(param); Divider() HelloComponent(param); } }}要完全理解上面的示例,需要了解自定义组件的以下概念定义,本文将在后面的小节中介绍:​ ● ​​自定义组件的基本结构​​​ ● ​​成员函数/变量​​​ ● ​​自定义组件的参数规定​​​ ● ​​build()函数​​​ ● ​​自定义组件通用样式​自定义组件的基本结构● struct:自定义组件基于struct实现,struct + 自定义组件名 + {...}的组合构成自定义组件,不能有继承关系。对于struct的实例化,可以省略new。说明:自定义组件名、类名、函数名不能和系统组件名相同。● @Component:@Component装饰器仅能装饰struct关键字声明的数据结构。struct被@Component装饰后具备组件化的能力,需要实现build方法描述UI,一个struct只能被一个@Component装饰。说明:从API version 9开始,该装饰器支持在ArkTS卡片中使用。@Componentstruct MyComponent {}● build()函数:build()函数用于定义自定义组件的声明式UI描述,自定义组件必须定义build()函数。@Componentstruct MyComponent { build() { }}​ ● @Entry:@Entry装饰的自定义组件将作为UI页面的入口。在单个UI页面中,最多可以使用@Entry装饰一个自定义组件。@Entry可以接受一个可选的​​LocalStorage​​的参数。说明:从API version 9开始,该装饰器支持在ArkTS卡片中使用。从API version 10开始,@Entry可以接受一个可选的​​LocalStorage​​的参数或者一个可选的​​EntryOptions​​参数。@Entry@Componentstruct MyComponent {}EntryOptions10+命名路由跳转选项。名称类型必填说明routeNamestring否表示作为命名路由页面的名字。storage​​LocalStorage​​否页面级的UI状态存储。@Entry({ routeName : 'myPage' })@Componentstruct MyComponent {}● @Reusable:@Reusable装饰的自定义组件具备可复用能力说明:从API version 10开始,该装饰器支持在ArkTS卡片中使用。@Reusable@Componentstruct MyComponent {}原文链接:https://ost.51cto.com/posts/26750#24read
  • [技术干货] 使用CodeArts快速构建并归档软件包
    使用CodeArts快速搭建项目本文基于CodeArts内置代码仓库,介绍如何使用CodeArts完成项目的开发、构建与部署,实现持续交付。本文在构建部署时会使用到ECS,可以提前购买首先需要订阅CodeArts产品服务,然后进入首页,选择新建项目选择Scrum模板,填入项目名称新建项目的工作空间后,选择代码托管,新建仓库,这里仅作为演示,所以选择按照模板进行新建,选择java web Demo新建配置代码仓库名称为Demo编译构建进入编译构建页面,因为选的模板,这里在编译构建上也生成了一个名为Demo-cloudbuild模板这里使用的代码仓库模板关联的内置任务,但是在实际开发中新建构建任务需要按照自己的需求进行自定义构建,新建构建任务的具体解释可以参考官方文档新建构建任务_编译构建 CodeArts Build_用户指南_新建任务相关操作_华为云 (huaweicloud.com)这里使用模板可以直接执行编译构建,单机箭头到这里编译构建完成单击导航栏“制品仓库 > 软件发布库”,进入软件发布库。在与项目名称同名的仓库中,依次进入与构建任务同名的文件夹、与构建编号同名的文件夹,即可找到生成的软件包“demoapp.jar”。
  • [公告] 【获奖公告】【HCSD】CodeArts Build实战训练营-0基础玩转编译构建
    活动原帖:【HCSD】CodeArts Build实战训练营-0基础玩转编译构建感谢各位小伙伴的参与,获奖公示来啦~~~请务必在9月27日之前填写问卷提交奖品收件地址信息,逾期视为放弃领奖。>>点这里,填问卷<<恭喜以下同学获奖!实践体验有礼本次获奖公示期(9月18日-9月27日),在公示期内,若对获奖存有异议请反馈至活动群小助手,公示期结束后,获奖公告生效,实物奖品预计在获奖公告生效后的25个工作日内完成快递发放。如有疑问,请联系活动小助手
  • [问题求助] 开发环境智慧园区编译时,提示当前包正在编译中,请稍侯再试
    并没有进行多次编译,第一次编译就会出这种提示,而且是编译了有一会了,再出这个提示。如下图
  • [互动交流] codeart对应的选项
    "cmake.configureSettings": { "CMAKE_TOOLCHAIN_FILE": "D:/vcpkg/scripts/buildsystems/vcpkg.cmake", "VCPKG_TARGET_TRIPLET": "x64-windows" }这个是vscode里面的,使用到vcpkg,codeart有关于cmake.configureSetting对应的选项吗
  • [活动公告] 【体验赢好礼】CodeArtsBuild体验!华为手环、耳机等礼品!等你拿~
    活动入口:HCSD-CodeArts Build实战训练营-0基础玩转编译构建【编译构建训练营结业考试】实践考试打卡贴实践是检验真才实学的最佳方式为检查编译构建入门训练营和进阶实战营学习成果本次编译构建分为入门考试+产品实践体验本帖为实践考试打卡帖让我们来看一下考核的具体内容▶考核时间:即日起-2023年7月31日▶打卡方式:晒出完成入门考试获得结营证书或编译构建实践操作完成截图进入Build初阶入门测试进阶玩家戳我 实践编译构建(CodeArts Build)实操手册
  • [问题求助] Bisheng-compiler 2.4.0 x86 , Fortran编译器内部错误
    flang无法在associate 中使用默认构造函数program main implicit none type f64x2 real(8)::a,b end type f64x2 type(f64x2)::x x=f64x2(1.d0,2.d0) ! Ok associate(y=>f64x2(1.d0,2.d0)) !error write(*,*)y end associateend program mainF90-S-0000-Internal compiler error. mkexpr1: bad id 14 (1.f90: 8)F90-W-0000-Internal compiler error. rank_of:DT_NONE 0 (1.f90: 8)F90-S-0000-Internal compiler error. bad dtype 0 (1.f90: 9)F90-S-0000-Internal compiler error. size_of: bad dtype 0 (1.f90: 9) 0 inform, 1 warnings, 3 severes, 0 fatal for main
  • [技术干货] CloudBuild 自定义构建环境构建打包Docker 镜像
    1、问题现象使用自定义构建环境时,如何把编译构建好的jar包(或者其他软件包)给到SWR 打包镜像使用,按照帮助文档进行操作,获取不到编译好的jar (或者其他软件包)。 2、问题定位实际底层运行的是两个 container;两个container 间需要通过共享目录来存储相关代码或者编译构建好的jar(或者其他软件包)。实现连个container间的文件共享,workspace 就是基于这一块实现的代码目录(共享目录),需要把相关代码以及软件包放在这个目录下。 3、解决方案:创建自定义构建环境3.1、获取集成镜像,参考如下链接: cid:link_13.2、基于基础镜像build 一个构建环境,以openjdk 1.8.0 ,maven 为例。FROM swr.cn-south-1.myhuaweicloud.com:443/codeci/special_base_image:centos7-base-1.0.2 USER root RUN yum install -y java-1.8.0-openjdk.x86_64 RUN yum install -y maven RUN yum install -y git RUN yum clean all3.3、将构建好的镜像推送到SWR,参考链接: cid:link_2 3.4、设置镜像为公开 4、解决方案:使用自定义构建环境编译构建,并制作镜像推送到swr4.1、新建构建任务,使用swr公共镜像,并填入镜像地址 4.2、命令行中填入编译构建命令,需要使用到系统预定于参数 WORKSPACE(工作空间,源代码根目录)cd ${WORKSPACE} git clone https://{主账号}/{子账号}:{密码}@codehub.devcloud.cn-east-3.huaweicloud.com/demo-xxxxxxx/dubbo-demo.git cd dubbo-demo git checkout ${codeBranch} mvn package -Dmaven.test.skip=true -U -e -X -B注意:主账号,子账号,密码需要进行URL编码4.3、使用组件‘制作镜像并推送到SWR仓库’,将镜像推送到SWR。设置工作目录,需要使用到 workspace 4.4、镜像Dockerfile 文件FROM openjdk:8u181-jdk-alpine WORKDIR /opt/consumer COPY target/*.jar /opt/consumer/consumer.jar ENTRYPOINT ["java","-jar","/opt/consumer/consumer.jar"]4.5、执行构建任务
  • [问题求助] 请求编译构建中的Msbuild更新版本
    你好,编译构建中的Msbuild现在版本还是.net core3.0,能不能更新一下到.net6,.net6是长期支持版本,后续可能使用比较多
  • [问题求助] 编译构建的Maven模板中没有我需要的版本号
    # 编译构建模板的版本号问题 我的代码使用的 JDK 是 17 的版本,maven 版本是 3.8.1 创建流水线的时候,编译构建的 Maven 模板中没有我需要的版本号。 请问这种情况,在不修改我项目代码中的 JDK 和 Maven 版本的条件下,还能使用流水线的编译构建吗?
  • [优秀实践] 鲲鹏REMILL指令(逻辑运算类)语义开发项目实验心得
       Remill 是一个静态二进制翻译器,可将机器代码指令翻译成LLVM 位码。它将 AArch64(64 位 ARMv8)、SPARC32(SPARCv8)、SPARC64(SPARCv9)、x86 和 amd64 机器码(包括 AVX 和 AVX512)翻译成 LLVM 位码。而在本项目中,我负责添加三条X86新指令(VPSLLVW、VPSLLVD、VPSLLVQ)的支持,同时还要完成对指令的性能测试工作。在整个项目的实施过程中,我不仅了解学习到了很多代码编译相关的知识,在技术方面也有了很大的提升,同时对不熟悉领域的项目快速上手有了一些全新的认识。   在指令设计开始阶段,我们遇到了不少困难,比如在环境搭建(包括下载编译libraries依赖库,编译UT单元测试等)过程中,我们需要解决各个依赖间甚至依赖与操作系统版本之间存在的版本不兼容问题。幸运的是,通过各位同学与老师之间的积极交流、讨论互助,我们一步步解决了各种环境搭建问题,我也学习到了很多linux指令以及如何通过下载各种库的源代码并对其编译安装的方法,在此过程中,我更能理解和排查各种编译报错,锁定问题并解决(甚至必要时可以对源代码进行修改)。   在设计指令过程中,设计指令的流程包括查看指令的功能、指令可以带有的操作数类型(iform)、将每条指令的iform与对应的语义函数相关联、指令intrinsic开发与测试。在这个过程中,需要我们仔细阅读文档(除了老师所给予的文档外,我们还需要借助官网、Github、Google等一些其他的渠道寻找尽可能多的相关文档),熟悉整个指令的设计流程,对于文档中出现的一些疑问也要快速提出进行交流,否则很容易无法快速理清整个设计的思路,从而无法快速上手整个项目。除此之外,遇到指令设计过程中出现的文档未指明的函数命名标准格式问题,也可以查找项目已有的代码,找出相似函数的命名格式。   最后,非常感谢能够参与到整个华为REMILL指令开发项目,也非常感谢翟老师的指导,感谢华为方面优秀的工程师们开发过程中给予的各种帮助。                                                                                  北京交通大学-操作系统与测试自动化团队                                                                                              指导老师:翟高寿老师
  • [互动交流] 【devcloud产品】【编译构建】”容器化构建充分利用资源”能力是怎么体现的?等有3点疑问
    【功能模块】1.容器化构建——达到充分利用资源。,,这里没有理解2.还有“全局共享缓存”能力,,是指任务成功后可以“构建包下载”吗3.编译构建支持增量构建吗,,是指在源编译构建任务中可继续添加构建原子吗【截图信息】
  • [技术干货] DevCloud流水线参数传递配置方法
          经常看到有人问DevCloud里面如何设置一次参数把构建参数值传递到部署任务内,一般这种参数使用的场景是版本号(releaseversion),镜像标签(dockertag)等,下面给大家分享一下操作方法。      跨任务传递参数需要使用DevCloud流水线服务,流水线可以将DevCloud内的其他服务任务串起来,通过手动或自动的方式,按照流水线内配置的编排顺序来执行任务。举例说明,通过流水线统一配置releaseversion参数传递到构建和部署任务。1.创建构建任务,构建任务内添加参数releaseversion,参数值随便填一个,这里填上在用的时候也会被覆盖,后面的运行时设置一定要打开!2.在构建任务里面调用这个参数,这一步一定要设置,否则在流水线内无法添加,任务内使用$符号调用参数,输入$符号之后会自动带出已配置的参数,选择即可调用。图中我在上传软件包到发布仓库步骤调用了刚刚配置的参数。3.创建空模板流水线,在流水线阶段添加刚刚的构建任务。这时能看到,刚刚我们创建的构建任务内的releaseversion参数已经显示出来,点击保存。4.保存后,回到流水线配置页面,我们配置流水线参数,创建流水线参数releaseversion,类型可以根据自己的需求选择自增长或字符串等,设置默认值,打开运行时设置。5.回到流水线工作流配置页面,打开刚刚添加的构建任务,将流水线内配置好的releaseversion参数通过$符号引用到构建任务的releaseversion参数内,点击保存,保存流水线。6.这时我们执行流水线,高级设置内【运行时参数配置】选项里可以看到我们刚刚配置的releaseversion参数,这时我们根据实际情况输入参数值,那么在构建任务内使用的就是此时输入的参数值。其他任务同样的操作方式添加参数即可。这样操作就实现了流水线统一配置参数,其他各任务调用,提高CICD效率和准确性。
  • [互动交流] 凤凰商城编译构建为什么没有预置任务
    【截图信息】
  • [互动交流] 通过devCloud 执行“编译构建”任务,《上传软件包到软件发布库》报错
    【功能模块】华为云 devCloud。  构建&发布 -->> 编译构建 模块【操作步骤&问题现象】1、构建&发布 -->> 编译构建2、选择DevCloud中的自己创建的简单的一个springboot项目3、选择Maven构建模板4、构建步骤,采用默认的,配置也是采用默认的5、构建日志显示项目BUILD SUCCESS6、具体错误日志如下.............[2021/04/30 10:49:22.681] [INFO] --- spring-boot-maven-plugin:2.4.5:repackage (repackage) @ securitydemo ---[2021/04/30 10:49:26.553] [INFO] Replacing main artifact with repackaged archive[2021/04/30 10:49:26.553] [INFO] ------------------------------------------------------------------------[2021/04/30 10:49:26.553] [INFO] BUILD SUCCESS[2021/04/30 10:49:26.553] [INFO] ------------------------------------------------------------------------[2021/04/30 10:49:26.553] [INFO] Total time: 23.874 s[2021/04/30 10:49:26.553] [INFO] Finished at: 2021-04-30T02:49:26Z[2021/04/30 10:49:26.553] [INFO] ------------------------------------------------------------------------[2021/04/30 10:49:26.575] [INFO] [Maven构建:postMaven] : 该步骤开始执行。[2021/04/30 10:49:26.576] [INFO] [Maven构建:postMaven] : 插件初始化成功。[2021/04/30 10:49:26.576] [INFO] [Maven构建:postMaven] : 参数初始化成功。[2021/04/30 10:49:26.576] [INFO] [Maven构建:postMaven] : query status start[2021/04/30 10:49:26.576] [INFO] [Maven构建:postMaven] : 该步骤执行完成。[2021/04/30 10:49:29.162] [INFO] [上传软件包到软件发布库:上传软件包] : 该步骤开始执行。[2021/04/30 10:49:29.510] [INFO] [上传软件包到软件发布库:上传软件包] : query status start[2021/04/30 10:49:29.513] [ERROR]  : 该步骤执行失败,错误信息:DEV.CB.0210028,解析发布服务响应体失败。。[2021/04/30 10:49:29.176] [INFO] [上传软件包到软件发布库:上传软件包] : 开始上传文件:target/securitydemo-1.0.1-SNAPSHOT.jar至仓库路径:/devCloud_code-49639117/20210430.3/。[2021/04/30 10:49:29.504] [ERROR] [上传软件包到软件发布库:上传软件包] : 请求releaseman失败,响应码:500,错误信息:null。[2021/04/30 10:49:35.248] [INFO]  : [JobStatusPlugin] onCompleted: j_C8ioZanM #1[2021/04/30 10:49:35.249] [INFO]  : [JobStatusPlugin] onCompleted end: j_C8ioZanM #1[2021/04/30 10:49:35.348] Finished: FAILURE【截图信息】【日志信息】(可选,上传日志内容或者附件)
总条数:67 到第
上滑加载中