uni-app 安卓3.4.7离线打包lib.5plus.base-release.aar 混淆后包命名和交通部SDK包名冲突

uni-app 安卓3.4.7离线打包lib.5plus.base-release.aar 混淆后包命名和交通部SDK包名冲突

开发环境 版本号 项目创建方式
Windows 10.14.6 HBuilderX
### 操作步骤:
- lib.5plus.base-release.aar混淆包名冲突

### 预期结果:
- 希望可以添加专属规则以防和三方包名冲突

### 实际结果:
- 冲突

### bug描述:
- 3.4.7基座和交通部SDK编译时因包名冲突导致失败
- Duplicate class a.a.a.b.a found in modules jetified-lib.5plus.base-release-runtime (lib.5plus.base-release.aar) and jetified-locationsdkgd-androidx-2.0.24-runtime (locationsdkgd-androidx-2.0.24.aar)
5 回复

问题已经修复,重新下载 更新文件 即可


请官方确认是否进行混淆规则控制方式解决,若不解决我们好进行二次编译方式处理

在 uni-app 的安卓离线打包过程中,如果你使用了 lib.5plus.base-release.aar 并且进行了混淆(ProGuard 或 R8),可能会遇到与交通部 SDK 包名冲突的问题。这是因为混淆后的类名可能与交通部 SDK 中的类名相同,导致冲突。

解决方案

  1. 自定义混淆规则
    proguard-rules.pro 文件中,添加自定义的混淆规则,避免 lib.5plus.base-release.aar 中的类被混淆成与交通部 SDK 冲突的类名。

    例如:

    # 保留 lib.5plus.base-release.aar 中的特定包名不被混淆
    -keep class io.dcloud.** { *; }
    -keep class com.xxx.** { *; }  # 替换为 lib.5plus.base-release.aar 中的实际包名
  2. 修改交通部 SDK 的包名
    如果交通部 SDK 的包名是固定的且无法修改,可以尝试反编译交通部 SDK,修改其包名后重新打包。这种方法需要一定的技术能力,并且可能违反 SDK 的使用协议,需谨慎操作。

  3. 使用不同的混淆字典
    proguard-rules.pro 中指定一个自定义的混淆字典,避免生成与交通部 SDK 冲突的类名。

    例如:

    -obfuscationdictionary custom-dictionary.txt
    -classobfuscationdictionary custom-dictionary.txt
    -packageobfuscationdictionary custom-dictionary.txt

    custom-dictionary.txt 中定义一组独特的混淆名称,例如:

    a
    b
    c
    ...
  4. 排除冲突的类
    如果知道具体的冲突类名,可以在 proguard-rules.pro 中排除这些类不被混淆。

    例如:

    -keep class com.traffic.sdk.ConflictClass { *; }
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!