1. 程式人生 > >記一次Android studio升級之後的坑

記一次Android studio升級之後的坑

像往常一樣開啟Android studio,但這次它提示我升級!說是什麼為了更好的體驗,在好奇心的驅使下,我毅然地點選了“update”按鈕。升級之後,編譯專案,報出了N多個error,我的心都慌完!整個人都是涼的,但想到作為社會主義的接班人,不能被這個給嚇到,因為我知道解決了眼前的error,還有日後的error。好了,言歸正傳,下面說一下什麼解決的error。

    1、第一個error比較簡單,就是升級之後一些舊的配置資訊不能再用,需要根據提示更新就好,這裡就不詳細介紹了。

    2、這個error就比較噁心了,直接貼程式碼:

Caused by: java.lang.ExceptionInInitializerError

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.api.internal.classloading.GroovySystemLoaderFactory.forClassLoader(GroovySystemLoaderFactory.java:44)
at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory.executeInWorkerClassLoader(IsolatedClassloaderWorkerFactory.java:106)
at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory.access$200(IsolatedClassloaderWorkerFactory.java:56)
at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory$1$1.call(IsolatedClassloaderWorkerFactory.java:84)
at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory$1$1.call(IsolatedClassloaderWorkerFactory.java:81)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:350)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:340)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:120)
at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory$1.execute(IsolatedClassloaderWorkerFactory.java:81)
at org.gradle.workers.internal.DefaultWorkerExecutor$1.call(DefaultWorkerExecutor.java:105)
... 8 more

Caused by: groovy.lang.GroovyRuntimeException: Conflicting module versions. Module [groovy-all is loaded in version 2.4.4 and you are trying to load version 2.4.12

at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl$DefaultModuleListener.onModule(MetaClassRegistryImpl.java:511)
at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanExtensionModuleFromProperties(ExtensionModuleScanner.java:80)
at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanExtensionModuleFromMetaInf(ExtensionModuleScanner.java:74)
at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanClasspathModules(ExtensionModuleScanner.java:56)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:112)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:73)
at groovy.lang.GroovySystem.<clinit>(GroovySystem.java:36)
... 23 more

看著好像很簡單,都已經給出錯誤提示了,把groovy-all換成2.4.12就行了。其實不然!我換了也沒用,這個error花了我兩天時間!在網上找了很多相關的答案,我來總結一下:

1、在build.gradle中新增groovy-all 2.4.12,或者是把build.gradle中的groovy刪除再重新編譯。

2、把build.gradle中的groovy-all的版本號後面換成加號,如:groovy-all 2.4.+ 再編譯。

以上的方法我都試過,沒卵用~差點絕望。

後來我對照了一下上一個版本,發現升級之後,AS自動把我的project的build.gradle中的classpath的配置降到3.1.1~這尼瑪啊!坑爹啊!修改回原先的版本後,完美執行!有遇到這問題的朋友可以借鑑一下。

最後我想吟一首詩,山窮水復疑無路,柳暗花明又一村。再套用最近朋友圈流行的話“沒能把我打倒的,終將使我變得強大”!