uni-app 云打包报错 出现DuplicateClasses

发布于 1周前 作者 songsunli 来自 Uni-App

uni-app 云打包报错 出现DuplicateClasses

错误日志

错误日志

如何处理?

2 回复

manifest.json中是否也配置了高德地图SDK。和原生插件中的冲突了。二选一


在uni-app云打包过程中遇到DuplicateClasses错误通常意味着在打包过程中存在重复的类定义。这种情况往往由以下几个原因引起:

  1. 依赖冲突:项目中引入的多个库可能包含相同的类定义。
  2. 配置错误:打包配置不当可能导致某些资源被重复打包。
  3. 手动添加的文件:开发者可能不小心在项目中添加了重复的类文件。

为了解决这个问题,你可以按照以下步骤进行排查和修复,以下是一些可能的解决方案和相关代码示例:

1. 检查依赖库

首先,检查package.json中的依赖库,确认是否有重复或冲突的库。使用以下命令来列出所有依赖及其版本:

npm list

如果发现重复的库,尝试移除或更新它们到兼容版本。例如,如果libAlibB都依赖common-lib的不同版本,可以尝试统一版本:

// package.json
"dependencies": {
    "common-lib": "^1.2.3",
    "libA": "^x.y.z",
    "libB": "^a.b.c"
}

2. 清理和重建项目

清理项目中的node_modules文件夹和package-lock.json(或yarn.lock),然后重新安装依赖:

rm -rf node_modules package-lock.json
npm install

3. 检查手动添加的文件

确认项目中没有手动添加重复的类文件。特别是检查staticsrc/assets等目录。

4. 配置检查

检查manifest.jsonvue.config.js(如果使用Vue CLI)中的配置,确保没有错误地引入了重复的资源或配置。

5. 使用ProGuard(Android)

如果你正在打包Android应用,可以尝试使用ProGuard来移除重复的类。在android/app/proguard-rules.pro中添加规则:

-dontwarn
-keep class !com.yourpackage.** { *; }
-keep interface !com.yourpackage.** { *; }

注意:这里的com.yourpackage应替换为你的实际包名。

6. 重新云打包

完成上述步骤后,重新进行云打包:

# 假设你使用的是HBuilderX
HBuilderX -> 发行 -> 云打包 - 自建/DCloud

如果问题依然存在,建议查看云打包日志,获取更详细的错误信息,以便进一步排查。

回到顶部