HarmonyOS 鸿蒙Next 如何设置编译后的app只保留arm64-v8a架构
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架构,可以通过以下步骤实现:
-
修改build-profile.json5文件:
- 在项目的根目录下找到或创建build-profile.json5文件。
- 在该文件中,配置abiFilters字段,指定只编译arm64-v8a架构。
-
过滤其他架构的so库:
- 如果项目中包含了其他架构的so库,如x86_64或armeabi-v7a,需要在build-profile.json5中配置nativelib的filter字段,排除这些架构的so库。
- 配置示例:“nativelib”: {“filter”:{“excludes”:["/x86_64/*.so","/armeabi-v7a/*.so"]}}。
-
确保EntryAbility中的架构检查:
- 在EntryAbility的onWindowStageCreate方法中,可以通过deviceinfo.abiList获取设备支持的架构信息。
- 如果设备架构不是arm64-v8a,可以抛出异常或进行其他处理,确保应用不会在不支持的设备上运行。
如果以上步骤正确配置,编译后的app应该只包含arm64-v8a架构的so库和相关资源。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。