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

升级Robolectric 3.8与SDK 27后遇java.util.zip.ZipException报错

解决Robolectric 3.8 + Android SDK 27的ZipException问题

针对你升级后遇到的java.util.zip.ZipException: error in opening zip file错误,结合你的配置和已尝试的操作,给你几个针对性的排查方向:

1. 检查Android SDK API 27组件是否完整

Robolectric需要读取对应SDK版本的系统资源jar包,如果API 27的平台组件下载不完整或损坏,就会触发这个错误。你可以:

  • 打开Android Studio的SDK Manager,确认Android SDK Platform 27和Sources for Android 27已安装
  • 或者用命令行强制重新安装:
    sdkmanager "platforms;android-27" "sources;android-27"
    
    安装完成后,检查SDK目录下platforms/android-27/android.jar是否能正常用压缩软件打开,验证文件完整性。

2. 清理Robolectric本地缓存并指定SDK路径

Robolectric会在本地缓存SDK资源,缓存损坏是常见诱因:

  • 删除Robolectric的缓存目录:
    • Mac/Linux:rm -rf ~/.robolectric
    • Windows:删除C:\Users\<你的用户名>\.robolectric
  • 在Gradle中明确指定SDK路径,避免Robolectric找不到正确的SDK位置:
    android {
        // 你的原有配置...
        testOptions {
            unitTests {
                includeAndroidResources = true
                all {
                    systemProperty 'robolectric.sdk.path', System.getenv('ANDROID_HOME')
                }
            }
        }
    }
    

3. 强制刷新依赖并检查冲突

你已经试过清理依赖,可以再执行更彻底的依赖刷新:

./gradlew clean build --refresh-dependencies

同时检查测试依赖是否有冲突,执行以下命令查看依赖树:

./gradlew dependencies --configuration testImplementation

重点排查是否有旧版本的Robolectric或其他与SDK 27不兼容的依赖,如有冲突可以用exclude规则排除。

4. 验证IDE配置(如果用Android Studio/IntelliJ运行测试)

IDE缓存或SDK配置错误也可能导致问题:

  • 执行File -> Invalidate Caches / Restart清理IDE缓存
  • 检查File -> Project Structure -> SDKs,确认Android SDK路径指向的是包含API 27的正确目录
  • 确保测试运行配置中使用的是项目指定的Gradle版本

5. 尝试升级Robolectric版本

Robolectric 3.8虽然支持SDK 27,但后续小版本可能修复了相关bug,你可以尝试升级到3.8.1,或者直接升级到4.x版本(注意4.x对JUnit的要求是JUnit5,需要调整测试代码结构)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:18:35