You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ProGuard构建Android发布版APK失败问题求助

问题分析与解决方法

首先,你的错误是两个核心问题叠加导致的:

  1. ProGuard无法找到Android Support v4库的类:错误提示里提到com/google/android/gms/d/g找不到父类android/support/v4/app/DialogFragment,说明Google Play Services依赖的Support v4库没有被ProGuard正确识别。
  2. 大量重复类定义:控制台提示的1030个重复类,大概率是因为你手动添加了-libraryjars <java.home>/lib/rt.jar——ADT Bundle的ProGuard已经自动处理了JDK的rt.jar,手动添加会导致Android的系统类和JDK类重复,干扰ProGuard的处理流程。

具体解决步骤:

1. 移除ProGuard配置中不必要的rt.jar引用

打开你的proguard-android.cfg,删除这一行:

-libraryjars <java.home>/lib/rt.jar

这是导致重复类的直接原因,ADT会自动为ProGuard配置正确的系统类路径,不需要手动添加。

2. 添加Android Support v4库的ProGuard规则

因为Google Play Services依赖Support v4库,你需要在proguard-android.cfg中加入对Support v4类的保留和警告忽略规则:

# 保留Support v4库的所有类
-keep class android.support.v4.** { *; }
# 忽略Support v4库的警告
-dontwarn android.support.v4.**

这样ProGuard就能识别到GMS类依赖的Support v4父类了。

3. 确认Support v4库的引用完整性

  • 检查你的主项目libs目录下是否有android-support-v4.jar,如果没有,右键项目 -> Android Tools -> Add Support Library,按照提示添加。
  • 同时确认google-play-services_lib这个库项目本身也正确引用了Support v4库(它的libs目录里应该也有这个jar,因为GMS天生依赖它)。

4. 清理项目并重新导出

在Eclipse中,执行Project -> Clean,选择你的项目和GMS库项目,清理完成后再尝试导出发布版APK。缓存的旧编译文件有时候也会导致这类奇怪的ProGuard错误。

5. (可选)优化GMS的ProGuard规则

你的现有GMS规则已经足够,但可以调整得更精准一点(不影响功能,只是更规范):

-keep public class com.google.android.gms.** { public protected *; }
-dontwarn com.google.android.gms.**

按照这些步骤处理后,应该就能解决ProGuard返回错误码1的问题了。

内容的提问来源于stack exchange,提问作者lschmid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:14:37