在集成微信功能的過程中,在打開微信的WeChatOpenSdkSample項目時,遇到了以下問題:
ERROR: Failed to open zip file.
Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)
Re-download dependencies and sync project (requires network)
從錯誤提示的意思理解,是某些錯誤導致網絡鏈接超時,經過排查發現不少網絡問題,那就只能是gradle的問題了。
被gradle坑過的童鞋肯定知道,gradle報的好多錯誤提示都跟真正的錯誤八竿子打不着的,所以接着看是不是gradle緩存的問題。
刪除gradle緩存的文件,重新下載
我在stackoverflow上找到了一個一樣的問題Error:Failed to open zip file. Gradle’s dependency cache may be corrupt,它的解決方式是讓我刪除~/.gradle/wrapper/dists
目錄下的所有文件,然後重新打開ide,此時ide會重新下載gradle依賴。
經過嘗試,這個方法對我無用,這說明我本地的gradle緩存是正確的,問題的根源在別的地方。
對比gradle配置
既然沒辦法,就只能出大招了,找一個正常的項目來和報錯的項目進行對比。既然項目打開的時候就報錯,那大概了是gradle配置的問題,所以我們關注點就在主要在gradle/wrapper/gradle-wrapper.properties
文件裏面,我們看下它們具體內容:
報錯的項目:
#Wed Apr 12 10:05:56 CST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=http://android.oa.com/gradle/gradle-4.7-all.zip
正確的項目:
#Thu Oct 17 10:01:43 CST 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
對比之後發現,distributionUrl
不一致,報錯的項目配置的不是as項目自帶的路徑,所以我們把這個路徑改成一致的,原有的版本號4.7保留,結果如下:
distributionUrl=https\://services.gradle.org/distributions/gradle-4.7-all.zip
接着同步項目,發現同步成功了。這裏需要說明的是,distributionUrl
是用來下載gradle壓縮包的,它可以更改成代理地址或者本地的緩存文件地址。這裏報錯項目的distributionUrl
明顯是修改爲它們自己使用的代理了,所以我纔會同步不成功。
參考
Error:Failed to open zip file. Gradle’s dependency cache may be corrupt