优惠码 第107页

APP HarmonyOS 的应用软件包以 APP Pack(Application Package)形式发布,它是由一个或多个 HAP(HarmonyOS Ability Package)以及描述每个 HAP 属性的 pack.info 组成。HAP 是 [Ability]的部署包,HarmonyOS 应用代码围绕 Ability 组件展开。 一个 HAP 是由代码、资源、第三方库及应用配置文件组成的模块包,可分为 entry 和 feature 两种模块类型,如[图1]所示。 entry:应用的主模块。一个 APP 中,对于同一设备类型必须有且只有一个 entry 类型的 HAP,可独立安装运行。 feature:应用的动态特性模块。一个 APP 可以包含一个或多个 feature 类型的 HAP,也可以不含。只有包含 Ability 的 HAP 才能够独立运行。 图1 APP逻辑视图 Ability Ability 是应用所具备的能力的抽象,一个应用可以包含一个或多个 Ability。Ability 分为两种类型:FA(Feature Ability)和 PA(Particle Ability)。FA/PA 是应用的基本组成单元,能够实现特定的业务功能。FA 有 UI 界面,而 PA 无 UI 界面。 库文件 库文件是应用依赖的第三方代码形式,存放在 libs 目录,是.so文件。 资源文件 应用的资源文件(字符串、图片、音频等)存放于 resources 目录下,便于开发者使用和维护,详见资源文件分类。 配置文件 配置文件 (config.json) 是应用的 Ability 信息,用于声明应用的 Ability ,以及应用所需权限等信息,详见应用配置文件。 pack.info 描述应用软件包中每个 HAP 的属性,由 IDE 编译生成,应用市场根据该文件进行拆包和 HAP 的分类存储。HAP 的具体属性包括: delivery-with-install : 用于标识该HAP是否需要在主动安装时进行安装。 name :HAP文件名。 module-type :模块类型,entry 或 feature。 device-type :用于标识支持该 HAP 运行的设备类型。


鸿蒙OS Button 按钮(Button)是一种常见的组件,点击可以触发对应的操作,通常由文本或图标组成,也可以由图标和文本共同组成。 图1 文本按钮 图2 图标按钮 图3 图标和文本共同组成的按钮 创建Button 使用 Button 组件,可以生成形状、颜色丰富的按钮。 <Button ohos:id="$+id:button_sample" ohos:width="match_content" ohos:height="match_content" ohos:text_size="27fp" ohos:text="button" ohos:background_element="$graphic:button_element" ohos:left_margin="15vp" ohos:bottom_margin="15vp" ohos:right_padding="8vp" ohos:left_padding="8vp" ohos:element_left="$graphic:ic_btn_reload" button_element.xml: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:shape="rectangle"> <corners ohos:radius="10"/> <solid ohos:color="#FF007DFF"/> </shape> 响应点击事件 按钮的重要作用是当用户单击按钮时,会执行相应的操作或者界面出现相应的变化。实际上用户点击按钮时,Button 对象将收到一个点击事件。 开发者可以自定义响应点击事件的方法。例如,通过创建一个 Component.ClickedListener 对象,然后通过调用 setClickedListener 将其分配给按钮。 //从定义的xml中获取Button对象 Button button = (Button) rootLayout.findComponentById(ResourceTable.Id_button_sample); // 为按钮设置点击事件回调 button.setClickedListener(new Component.ClickedListener() { public void onClick(Component v) { // 此处添加点击按钮后的事件处理逻辑 } }); 不同类型的按钮 按照按钮的形状,按钮可以分为:普通按钮,椭圆按钮,胶囊按钮,圆形按钮等。 普通按钮 普通按钮和其他按钮的区别在于不需要设置任何形状,只设置文本和背景颜色即可,例如: <Button ohos:width="150vp" ohos:height="50vp" ohos:text_size="27fp" ohos:text="button" ohos:background_element="$graphic:color_blue_element" ohos:left_margin="15vp" ohos:bottom_margin="15vp" ohos:right_padding="8vp" ohos:left_padding="8vp" /> color_blue_element.xml: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:shape="rectangle"> <solid ohos:color="#FF007DFF"/> </shape> 椭圆按钮 椭圆按钮是通过设置 background_element 的来实现的,background_element 的shape 设置为椭圆(oval),例如: <Button ohos:width="150vp" ohos:height="50vp" ohos:text_size="27fp" ohos:text="button" ohos:background_element="$graphic:oval_button_element" ohos:left_margin="15vp" ohos:bottom_margin="15vp" ohos:right_padding="8vp" ohos:left_padding="8vp" ohos:element_left="$graphic:ic_btn_reload" /> oval_button_element.xml: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:shape="oval"> <solid ohos:color="#FF007DFF"/> </shape> 胶囊按钮 胶囊按钮是一种常见的按钮,设置按钮背景时将背景设置为矩形形状,并且设置...

文件组织 目录结构 JS FA应用的 JS 模块(entry/src/main/js/module)的典型开发目录结构如下: 图1 目录结构 目录结构中文件分类如下: .hml结尾的HML模板文件,这个文件用来描述当前页面的文件布局结构。 .css结尾的CSS样式文件,这个文件用于描述页面样式。 .js结尾的JS文件,这个文件用于处理页面和用户的交互。 各个文件夹的作用: app.js文件用于全局JavaScript逻辑和应用生命周期管理。 pages目录用于存放所有组件页面。 common目录用于存放公共资源文件,比如:媒体资源,自定义组件和JS文件。 resources目录用于存放资源配置文件,比如:全局样式、多分辨率加载等配置文件。 i18n目录用于配置不同语言场景资源内容,比如应用文本词条,图片路径等资源。 说明 i18n和resources是开发保留文件夹,不可重命名。 应用资源访问规则 应用资源可通过绝对路径或相对路径的方式进行访问,本开发框架中绝对路径以”/”开头,相对路径以”./”或”../”。具体访问规则如下: 引用代码文件,需使用相对路径,比如:../common/utils.js。 引用资源文件,推荐使用绝对路径。比如:/common/xxx.png。 公共代码文件和资源文件推荐放在common下,通过规则1和规则2进行访问。 CSS样式文件中通过url()函数创建<url>数据类型,如:url(/common/xxx.png)。 说明 当代码文件A需要引用代码文件B时: 如果代码文件A和文件B位于同一目录,则代码文件B引用资源文件时可使用相对路径,也可使用绝对路径。 如果代码文件A和文件B位于不同目录,则代码文件B引用资源文件时必须使用绝对路径。因为Webpack打包时,代码文件B的目录会发生变化。 存储目录定义 应用使用文件存储接口访问文件时,可以通过使用特定scheme(只支持internal)来访问预定义的一些文件存取目录。对于不在下列目录下的文件访问将被拒绝(禁止使用../等方式访问父目录)。 目录类型 路径前缀 访问可见性 说明 临时目录 internal://cache/ 仅本应用可见 可读写,随时可能清除,不保证持久性。一般用作下载临时目录或缓存目录。 应用私有目录 internal://app/ 仅本应用可见 随应用卸载删除。 外部存储 internal://share/ 所有应用可见 随应用卸载删除。其他应用在有相应权限的情况下可读写此目录下的文件。


测试框架的基类。 如果要实现自己的单元测试框架,则必须继承此类并覆盖其所有方法。 构造器摘要 建设者 描述 TestRunner() 方法总结 修饰符和类型 方法 描述 抽象布尔 准备() 准备用于运行测试用例的单元测试环境。 抽象 void 运行() 运行所有测试用例。 从类 java.lang 继承的方法。目的 clone,equals,finalize,getClass,hashCode,notify,notifyAll,toString,wait,wait,wait 构造器详细信息 TestRunner 公共 TestRunner() 方法细节 准备 公共抽象布尔准备() 准备用于运行测试用例的单元测试环境。 返回值: 如果成功初始化了环境,则返回 true;否则,返回 true。否则返回 false。 跑 公共抽象无效运行() 运行所有测试用例。

为您提供测试能力的框架。 您可以继承此类以构造您自己的测试用例并控制某项功能的所有操作。 构造器摘要 建设者 描述 AbilityTestCase() 方法总结 修饰符和类型 方法 描述 受保护的能力委托 getAbilityDelegation() 获取一个 AbilityDelegation 实例,以控制对该功能的所有操作。 受保护的空白 输出(字符串msg) 打印出测试用例执行结果。 从类 java.lang 继承的方法。目的 clone,equals,finalize,getClass,hashCode,notify,notifyAll,toString,wait,wait,wait 构造器详细信息 能力测试案例 公共 AbilityTestCase() 方法细节 获得能力委派 受保护的 AbilityDelegation getAbilityDelegation() 获取一个 AbilityDelegation 实例,以控制对该功能的所有操作。 返回值: 如果已初始化,则返回 AbilityDelegation 实例;否则返回 null。 输出 受保护的 void 输出(字符串 msg) 打印出测试用例执行结果。 此方法与 AbilityDelegation#output(String)方法具有相同的功能。 参数: 参数名称 参数说明 味精 指示测试用例执行结果。

全局寄存器,用于存储在应用程序启动期间注册的 IAbilityDelegator 和 IAbilityDelegatorArgs 对象。 解析 TestRunner 参数时,应用程序将注册IAbilityDelegator 和 IAbilityDelegatorArgs 对象。在编写测试用例时,可以使用此类获取您自己的应用程序的 IAbilityDelegator 和 IAbilityDelegatorArgs 对象。IAbilityDelegator 可用于控制能力的生命周期状态。和 IAbilityDelegatorArgs 用于存储单元测试的所有参数。 方法总结 修饰符和类型 方法 描述 静态 IAbilityDelegator getAbilityDelegator() 获取应用程序的 IAbilityDelegator 对象。 静态 IAbilityDelegatorArgs getArguments() 获取存储在 IAbilityDelegatorArgs 对象中的单元测试参数。 静态空隙 registerInstance((IAbilityDelegator 委托人,IAbilityDelegatorArgs args) 将实现 IAbilityDelegator 和 IAbilityDelegatorArgs 的类的实例注册为全局唯一实例。 从类 java.lang 继承的方法。目的 clone,equals,finalize,getClass,hashCode,notify,notifyAll,toString,wait,wait,wait 方法细节 获得能力代表 公共静态 IAbilityDelegator getAbilityDelegator() 获取应用程序的 IAbilityDelegator 对象。 返回值: 返回启动应用程序时初始化的 IAbilityDelegator 对象。 抛出: 抛出名称 抛出说明 IllegalStateException 如果应用程序不需要运行单元测试,则抛出此异常。 获取参数 公共静态 IAbilityDelegatorArgs getArguments() 获取存储在 IAbilityDelegatorArgs 对象中的单元测试参数 。 返回值: 返回先前注册的 IAbilityDelegatorArgs 对象。 抛出: 抛出名称 抛出说明 IllegalStateException 如果应用程序不需要运行单元测试,则抛出此异常。 注册实例 公共静态无效寄存器实例(IAbilityDelegator 委托者,IAbilityDelegatorArgs args) 将实现 IAbilityDelegator 和 IAbilityDelegatorArgs 的类的实例注册 为全局唯一实例。 在应用程序启动期间调用此方法以初始化测试环境。 参数: 参数名称 参数说明 委托人 指示实现 IAbilityDelegator 的类的实例。 args 指示实现 IAbilityDelegatorArgs 的类的实例。

应用程序的测试实用程序类。 此类提供了用于获取应用程序内部对象的方法,并且可以操作这些对象。例如,它可以控制 Ability 的生命周期调度,控制 AbilitySlice 的转换和返回以及向 UI 发送指定的输入事件。 您可以基于该类实现自己的测试类。您的测试类必须继承 AbilityTestCase 类,并且与要测试的应用程序处于同一过程中。AbilityDelegation 充当观察者,以监视应用程序的运行状态。它还可以控制应用程序的行为以模拟用户行为以进行测试。 领域摘要 修饰符和类型 领域 描述 静态整数 活性 定义活动生命周期状态。 静态整数 背景 定义背景生命周期状态。 静态整数 不活跃 定义非活动生命周期状态。 静态整数 初始 定义INITIAL生命周期状态。 静态字符串 LIB_PATH 定义包含测试用例资源的JAR包的绝对路径。 静态字符串 RUN_TEST 定义用于启动测试用例的类,该类在启动 Ability 时由 Intent 传递。 静态整数 未定义 定义未定义的生命周期状态。 构造器摘要 建设者 描述 AbilityDelegation() 方法总结 修饰符和类型 方法 描述 abstract void doAbilityActive() 将能力的生命周期状态从不活动更改为活动。 abstract void doAbilityBackground() 将能力的生命周期状态从不活动更改为背景。 abstract void doAbilityForeground(意图意图) 将能力的生命周期状态从背景更改为不活动。 abstract void doAbilityInactive() 将能力的生命周期状态从活动更改为不活动。 abstract void doAbilitySliceActive() 将能力切片的生命周期状态从不活动更改为活动。 abstract void doAbilitySliceBackground() 将能力切片的生命周期状态从不活动更改为背景。 abstract void doAbilitySliceForeground(意图意图) 将能力切片的生命周期状态从“背景”更改为“不活动”。 abstract void doAbilitySliceInactive() 将能力切片的生命周期状态从“活动”更改为“不活动”。 abstract void doAbilitySliceStart(意图意图) 将能力切片的生命周期状态从 INITIAL 更改为 INACTIVE。 abstract void doAbilitySliceStop() 将能力切片的生命周期状态从背景更改为初始。 abstract void doAbilityStart(意图意图) 将能力的生命周期状态从初始更改为不活动。 abstract void doAbilityStop() 将能力的生命周期状态从背景更改为初始。 抽象能力 getAbility() 在当前进程中获得前台的功能。 抽象能力信息 getAbilityInfo() 获取一个功能的内部 AbilityInfo 对象。 抽象列表 < AbilitySlice > getAbilitySlice(字符串名称) 从当前能力中获得具有给定名称的能力切片。 抽象整数 getAbilitySliceState(AbilitySlice targetSlice) 获取能力切片的生命周期状态。 抽象整数 getAbilityState() 获得能力的生命周期状态。 抽象列表 < AbilitySlice > getAllAbilitySlice() 获取当前能力中包含的所有能力切片。 抽象AbilitySlice getCurrentAbilitySlice() 在当前能力中获得前景能力切片。 抽象能力 getCurrentTopAbility() 返回此应用程序的顶级功能 抽象意图 getIntent() 获取包含有关当前功能的启动信息的 Intent 对象。 abstract void 输出(字符串msg) 打印出测试用例执行的详细信息。 abstract void runOnUIThreadSync(Runnable的任务) 在 UI 线程上执行同步任务。 抽象布尔 triggerClickEvent(组件视图) 触发单击事件,并将其发送到指定的 UI 组件以模拟用户输入。 抽象布尔 triggerKeyEvent(KeyEvent 键) 触发按键事件并将其发送到前台功能。...