HarmonyOS 鸿蒙Next 区分debug和release模式

发布于 1周前 作者 bupafengyu 最后一次编辑是 5天前 来自 鸿蒙OS

【HarmonyOS 鸿蒙Next API 11 学习】在代码区分debug和release模式,可以使用getBundleInfoForSelfSync( GET_BUNDLE_INFO_WITH_APPLICATION ) 中的appInfo.debug实现

【需求】

在代码区分debug和release模式

【方案】

可以使用getBundleInfoForSelfSync( GET_BUNDLE_INFO_WITH_APPLICATION ) 中的appInfo.debug实现

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-bundlemanager-applicationinfo-0000001820880573

下图中,选择debug 再运行项目 appInfo.debug就是true,选择release就是false

【代码示例】

import { bundleManager } from ‘@kit.AbilityKit’;

@Entry @Component struct Page155 { build() { Column() { Button(‘获取应用信息’).onClick(() => { // let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_DEFAULT; let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION; let data = bundleManager.getBundleInfoForSelfSync(bundleFlags); console.info(‘data’, JSON.stringify(data,null,’–’)) console.info(‘data.appInfo.appProvisionType’, data.appInfo.appProvisionType) console.info(‘data.appInfo.debug’, data.appInfo.debug) }) } .width(‘100%’) .height(‘100%’) } }

11 回复

补充:

如果有多个测试环境,也可以创建多个

可以在 build-profile.json5 中配置

像这样

image.png

添加后记得点 Sync Now

image.png

补充:build-->bulid hap(s)/APP(s) 时,注意右侧目录模块选择旁边原点所选择的默认值

测试步骤

【1】删除每次项目运行的build包

build/default/outputs/default/entry-default-signed.hap

build/default/outputs/default/entry-default-unsigned.hap

cke_4623.png

cke_5582.png

【2】添加pro2属性

build-profile.json5

cke_8506.png

【3】设置右上角项目模块目标为pro2

cke_14509.png

【4】build-->bulid hap(s)/APP(s)

cke_17856.png

【5】观察生成的build目录下的已签名文件

build/default/outputs/default/entry-default-signed.hap

cke_26206.png

【6】下载安装DevEco Testing,点击开始投屏,安装应用

cke_29621.png

cke_36807.png

cke_38070.png

【7】安装成功后,点击项目,查看运行结果

import BuildProfile from 'BuildProfile'

@Entry @Component struct Page010 { aboutToAppear(): void { console.info(BuildProfile.BUILD_MODE_NAME:${BuildProfile.BUILD_MODE_NAME}) }

build() { RelativeContainer() { } .height(‘100%’) .width(‘100%’) } }<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

​打印

BuildProfile.BUILD_MODE_NAME:pro2<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

import BuildProfile from 'BuildProfile'

@Entry @Component struct Page010 { aboutToAppear(): void { console.info(BuildProfile.BUILD_MODE_NAME:${BuildProfile.BUILD_MODE_NAME}) }

build() { RelativeContainer() { } .height(‘100%’) .width(‘100%’) } }<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

请问:这部分代码具体放在哪个地方? 主项目还是DevEco Testing中呢? 

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

放到DevEco Studio主项目里,

谢谢!明白了,前面的和这部分代码获取的内容不一样。还有个疑问,为啥要用DevEco Testing,模拟器不是可以直接测试吗^_^?

HarmonyOS的分布式文件系统让我在多设备间共享文件变得更加方便。

主要是考虑给非开发人员,比如测试人员测试的方法。方便截图、自动化测试等。

在HarmonyOS鸿蒙系统中,为了区分debug和release模式,你可以利用getBundleInfoForSelfSync(GET_BUNDLE_INFO_WITH_APPLICATION)方法返回的ApplicationInfo对象中的debug字段。这个字段是一个布尔值,用于指示当前应用是否处于debug模式。

具体实现步骤如下:

  1. 调用getBundleInfoForSelfSync(GET_BUNDLE_INFO_WITH_APPLICATION)方法获取当前应用的BundleInfo对象。
  2. 从返回的BundleInfo对象中获取ApplicationInfo对象。
  3. 检查ApplicationInfo对象中的debug字段。

示例代码如下:

BundleInfo bundleInfo = getBundleManager().getBundleInfoForSelfSync(GET_BUNDLE_INFO_WITH_APPLICATION);
if (bundleInfo != null && bundleInfo.getAppInfo() != null) {
    boolean isDebugMode = bundleInfo.getAppInfo().debug;
    if (isDebugMode) {
        // 当前是debug模式
    } else {
        // 当前是release模式
    }
}

这段代码会检查当前应用是否处于debug模式,并据此执行不同的逻辑。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部