HarmonyOS鸿蒙Next中如何不暴露文件打包编译的har包来制作sdk

HarmonyOS鸿蒙Next中如何不暴露文件打包编译的har包来制作sdk 【问题描述】:需要自己制作sdk 但是编译的har包会暴露很多不想暴露的文件 这个有办法不暴露吗

【问题现象】:6需求问题

【版本信息】:6.0;api20

5 回复

可以在打包的时候配置 build-profile.json5里面的

"buildOption": {
  "strictMode": {
    "useNormalizedOHMUrl": true
  }
}

useNormalizedOHMUrl为true,试试;打出来的打包都是加密过的,看看是否符合你的要求

更多关于HarmonyOS鸿蒙Next中如何不暴露文件打包编译的har包来制作sdk的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HAR可以作为二方库和三方库提供给其他应用使用,如果需要对代码资产进行保护,建议开启混淆

混淆能力开启后,DevEco Studio在构建HAR时,会对代码进行编译、混淆及压缩处理,保护代码资产。

HAR模块原先默认开启混淆能力,会对API 10及以上的HAR模块,且编译模块为release时,自动进行简单的代码混淆;从DevEco Studio 5.0.3.600开始,新建工程默认关闭代码混淆功能,可以在HAR模块的build-profile.json5文件中的ruleOptions字段下的enable进行开启混淆,详情请见代码混淆,配置如下所示:

{
  "apiType": "stageMode",
  "buildOption": {
  },
  "buildOptionSet": [
    {
      "name": "release",
      "arkOptions": {
        "obfuscation": {
          "ruleOptions": {
            "enable": true,
            "files": [
              "./obfuscation-rules.txt"
            ]
          },
          "consumerFiles": [
            "./consumer-rules.txt"
          ]
        }
      }
    },
  ],
  "targets": [
    {
      "name": "default"
    }
  ]
}

参考地址

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/har-package#编译

打包的时候配置 build-profile.json5里面的

"buildOption": {
  "strictMode": {
    "useNormalizedOHMUrl": true
  }
}

useNormalizedOHMUrl为true,试试;打出来的包都是加密过的,看看是否符合你的要求

cke_152.png

在HarmonyOS Next中,可通过创建HAR(Harmony Ability Resources)包来封装SDK,不暴露源码。使用DevEco Studio创建Library模块,编写API接口与实现。在模块的oh-package.json5中配置"type": "har",并正确声明导出的接口。编译后生成.har文件,其他项目依赖此HAR包即可调用其接口,内部文件不会暴露。

在HarmonyOS Next中,若需制作SDK且不希望har包暴露内部文件,可通过以下方式实现:

  1. 使用oh-package.json5exports字段进行条件导出
    在模块的oh-package.json5中配置exports,可精确控制对外暴露的接口与文件。将需要公开的接口在exports中声明,未声明的内部文件将不会包含在最终har包中。

    {
      "exports": {
        ".": "./src/main/ets/index.ets",
        "./utils": "./src/main/ets/utils/Util.ets"
      }
    }
    
  2. 分离公共接口与内部实现
    将SDK的公共接口声明(如.d.ets文件)与具体实现分离。在exports中仅指向接口声明文件,实现文件可置于其他目录且不在exports中引用。

  3. 利用ArkTS的访问控制修饰符
    在代码中使用privateinternal修饰符限制类、方法的可见性,避免内部实现被外部访问。

  4. 构建配置优化
    在模块的build-profile.json5中,可检查并排除无需打包的资源文件(如测试代码、配置文件等),减少har包内容。

通过以上方法,可在提供必要功能接口的同时,有效隐藏SDK内部实现细节与文件结构。

回到顶部