HarmonyOS 鸿蒙Next 如何设置编译后的app只保留arm64-v8a架构

发布于 1周前 作者 itying888 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 如何设置编译后的app只保留arm64-v8a架构

如何设置编译后的app只保留arm64-v8a架构

2 回复

请参考以下文档,配置模块的 build-profile.json5 文件:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ohos-abi-V5#在编译架构中指定abi

如果不希望 其他设备类型运行的话,

可以在EntryAbility中,根据架构信息进行拦截,支持则运行,否则抛出异常停止运行,

import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { window } from '@kit.ArkUI';
import deviceinfo from '@ohos.deviceInfo';

export default class EntryAbility extends UIAbility {

  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
  }

  onDestroy(): void {
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy');
  }

  onWindowStageCreate(windowStage: window.WindowStage): void {
    // Main window is created, set main page for this ability
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
    hilog.warn(0x0000, 'testTag', deviceinfo.abiList)
    if(deviceinfo.abiList === 'arm64-v8a'){
      windowStage.loadContent('pages/Index', (err) => {
        if (err.code) {
          hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s',JSON.stringify(err) ?? '');
          return;
        }
        hilog.info(0x0000, 'testTag', 'Succeeded in loading the content.');
      });
    }else {
      throw new Error('device abi not support')
    }
  }

  onWindowStageDestroy(): void {
    // Main window is destroyed, release UI related resources
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageDestroy');
  }

  onForeground(): void {
    // Ability has brought to foreground
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground');
  }

  onBackground(): void {
    // Ability has back to background
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground');
  }
}

在HarmonyOS鸿蒙Next中,设置编译后的app只保留arm64-v8a架构,可以通过以下步骤实现:

  1. 修改build-profile.json5文件

    • 在项目的根目录下找到或创建build-profile.json5文件。
    • 在该文件中,配置abiFilters字段,指定只编译arm64-v8a架构。
  2. 过滤其他架构的so库

    • 如果项目中包含了其他架构的so库,如x86_64或armeabi-v7a,需要在build-profile.json5中配置nativelib的filter字段,排除这些架构的so库。
    • 配置示例:“nativelib”: {“filter”:{“excludes”:["/x86_64/*.so","/armeabi-v7a/*.so"]}}。
  3. 确保EntryAbility中的架构检查

    • 在EntryAbility的onWindowStageCreate方法中,可以通过deviceinfo.abiList获取设备支持的架构信息。
    • 如果设备架构不是arm64-v8a,可以抛出异常或进行其他处理,确保应用不会在不支持的设备上运行。

如果以上步骤正确配置,编译后的app应该只包含arm64-v8a架构的so库和相关资源。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部