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

Android Studio 3.1.2升级后遇EOCD Signature not found问题求助

解决Android Studio升级3.1.2后出现的EOCD Signature not found问题

我之前升级Android Studio版本时也碰到过一模一样的问题,这个错误本质是JNI库合并时读取损坏的Zip文件导致的,和multidex的关联其实是升级后Gradle插件对JNI文件处理逻辑变化引发的。给你几个亲测有效的解决步骤:

1. 彻底清理缓存与构建产物

这是最容易见效的第一步,很多时候都是缓存文件损坏引发的问题:

  • 执行命令行清理:Windows下运行 gradlew clean,Mac/Linux运行 ./gradlew clean
  • 删除项目根目录下的 .gradle 文件夹和 app/build 目录
  • 重启Android Studio,点击顶部菜单栏的「File -> Sync Project with Gradle Files」重新同步项目

2. 检查并修复损坏的依赖库

从错误日志能看到,问题出在 adal-1.13.2.aar 的JNI目录下:

java.io.IOException: Failed to read zip file 'C:\Users\袛懈屑邪\.gradle\caches\transforms-1\files-1.1\adal-1.13.2.aar\0609b8bbdaebc86f749d40642893ae87\jni'
  • 手动定位到这个目录,尝试打开其中的Zip文件,如果无法正常打开说明缓存已损坏,直接删除整个 adal-1.13.2.aar 对应的缓存文件夹
  • 建议把adal库升级到最新稳定版本,旧版本的AAR可能和3.1.2版本的Gradle插件存在兼容性问题

3. 调整JNI打包配置

在 app/build.gradle 中添加打包选项,避免合并异常的JNI文件:

android {
    defaultConfig {
        multiDexEnabled true // 确保你已经开启了multidex
        // 其他配置...
    }

    packagingOptions {
        pickFirst '**/*.so' // 优先选择第一个出现的so文件,避免冲突
        // 如果能定位到具体损坏的so文件,可以直接排除
        // exclude '**/libadal.so'
    }
}

同时确认multidex配置完整:

  • 如果你的Application没有继承 MultiDexApplication,需要在 attachBaseContext 方法中手动初始化:
@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}

4. 调整Gradle插件版本

3.1.2版本的Android Gradle插件存在一些已知的JNI合并问题,你可以尝试:

  • 升级到同系列的稳定版本,比如3.1.4
  • 或者暂时降级到3.0.1版本,看是否能绕过这个错误

附错误日志详情:

org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformNativeLibsWithMergeJniLibsForArmAmazonfiretvfreeDebug'. 
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100) 
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70) 
at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51) 
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62) 
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54) 
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:60) 
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:97) 
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:87) 
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52) 
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52) 
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54) 
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) 
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34) 
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248) 
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) 
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) 
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199) 
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110) 
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241) 
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230) 
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123) 
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79) 
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104) 
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98) 
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:626) 
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:581) 
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98) 
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63) 
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55) 
at java.lang.Thread.run(Thread.java:745) 
Caused by: java.io.UncheckedIOException: java.io.IOException: Failed to read zip file 'C:\Users\袛懈屑邪\.gradle\caches\transforms-1\files-1.1\adal-1.13.2.aar\0609b8bbdaebc86f749d40642893ae87\jni'. 
at com.android.builder.merge.LazyIncrementalFileMergerInputs.load(LazyIncrementalFileMergerInputs.java:88) 
at com.android.builder.merge.LazyIncrementalFileMergerInputs.lambda$fromNew$0(LazyIncrementalFileMergerInputs.java:59) 
at com.android.apkzlib.utils.CachedSupplier.get(CachedSupplier.java:81) 
at com.android.builder.merge.LazyIncrementalFileMergerInput.lambda$new$2(LazyIncrementalFileMergerInput.java:138) 
at com.android.apkzlib.utils.CachedSupplier.get(CachedSupplier.java:81) 
at com.android.builder.merge.LazyIncrementalFileMergerInput.open(LazyIncrementalFileMergerInput.java:225) 
at com.android.builder.mer

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:30:14