阅读 519
你遇到了问题你是怎么做的呢?以 android studio Async Project 失败为例| 8月更文挑战

你遇到了问题你是怎么做的呢?以 android studio Async Project 失败为例| 8月更文挑战

我的 android studio 版本为: 4.2.1

不知道你点击 Sync Project with Gradle Files 按钮以后,是否出现下面的错误,这里不是说因为网络的因素而导致的网络错误:

2021-07-31 13:45:35,532 [    643]   INFO - llij.ide.plugins.PluginManager - Plugin PluginDescriptor(name=Kotlin, id=org.jetbrains.kotlin, path=C:\Users\wutia\AppData\Roaming\Google\AndroidStudio4.2\plugins\Kotlin, version=202-1.5.21-release-315-AS8194.7) misses optional descriptor kotlin-nodejs.xml 
java.nio.file.NoSuchFileException: /META-INF/kotlin-nodejs.xml
	at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.newInputStream(ZipFileSystem.java:591)
	at jdk.zipfs/jdk.nio.zipfs.ZipPath.newInputStream(ZipPath.java:721)
	at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.newInputStream(ZipFileSystemProvider.java:275)
	at java.base/java.nio.file.Files.newInputStream(Files.java:155)
        
        ... 省略其他栈信息
        
2021-07-31 13:45:35,535 [    646]   INFO - llij.ide.plugins.PluginManager - Plugin PluginDescriptor(name=Kotlin, id=org.jetbrains.kotlin, path=C:\Users\wutia\AppData\Roaming\Google\AndroidStudio4.2\plugins\Kotlin, version=202-1.5.21-release-315-AS8194.7) misses optional descriptor native-debug.xml 
java.nio.file.NoSuchFileException: /META-INF/native-debug.xml
	at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.newInputStream(ZipFileSystem.java:591)
	at jdk.zipfs/jdk.nio.zipfs.ZipPath.newInputStream(ZipPath.java:721)
        
        ... 省略其他栈信息
        
2021-07-31 13:45:35,536 [    647]   INFO - llij.ide.plugins.PluginManager - Plugin PluginDescriptor(name=Kotlin, id=org.jetbrains.kotlin, path=C:\Users\wutia\AppData\Roaming\Google\AndroidStudio4.2\plugins\Kotlin, version=202-1.5.21-release-315-AS8194.7) misses optional descriptor js-debug.xml 
java.nio.file.NoSuchFileException: /META-INF/js-debug.xml
	at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.newInputStream(ZipFileSystem.java:591)
	at jdk.zipfs/jdk.nio.zipfs.ZipPath.newInputStream(ZipPath.java:721)
        
        ... 省略其他栈信息
        
2021-07-31 13:45:40,760 [   5871]   INFO - pl.ProjectRootManagerComponent - project roots have changed (trace_hash = -2123533938) 
java.lang.Throwable
	at com.intellij.openapi.roots.impl.ProjectRootManagerComponent.synchronizeRoots(ProjectRootManagerComponent.java:306)
	at com.intellij.openapi.roots.impl.ProjectRootManagerComponent.fireRootsChangedEvent(ProjectRootManagerComponent.java:210)
	at com.intellij.openapi.roots.impl.ProjectRootManagerImpl.fireRootsChanged(ProjectRootManagerImpl.java:428)
        
        ... 省略其他栈信息
        
2021-07-31 13:45:52,857 [  17968]   WARN - ssistant.WhatsNewBundleCreator - connect timed out 
java.net.SocketTimeoutException: connect timed out
	at java.base/java.net.PlainSocketImpl.waitForConnect(Native Method)
	at java.base/java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:107)
        
        ... 省略其他栈信息
        
2021-07-31 13:46:47,560 [  72671]  ERROR - intellij.openapi.progress.Task - Module: 'react-native-code-push' platform 'android-26' not found. 
com.android.tools.idea.gradle.project.sync.idea.issues.SdkPlatformNotFoundException: Module: 'react-native-code-push' platform 'android-26' not found.
	at com.android.tools.idea.gradle.project.sync.idea.SdkSyncUtil.computeSdkReloadingAsNeeded(SdkSyncUtil.kt:127)
	at com.android.tools.idea.projectsystem.gradle.sync.AndroidModuleDataService.postProcess(AndroidModuleDataService.kt:139)
        
        ... 省略其他栈信息
        
        2021-07-31 13:51:16,886 [ 341997]   INFO - pl.ProjectRootManagerComponent - project roots have changed (trace_hash = -649954689) 
java.lang.Throwable
	at com.intellij.openapi.roots.impl.ProjectRootManagerComponent.synchronizeRoots(ProjectRootManagerComponent.java:306)
	at com.intellij.openapi.roots.impl.ProjectRootManagerComponent.fireRootsChangedEvent(ProjectRootManagerComponent.java:210)
	at com.intellij.openapi.roots.impl.ProjectRootManagerImpl.fireRootsChanged(ProjectRootManagerImpl.java:428)
        
        ... 省略其他栈信息
复制代码

如果遇到了,你是怎样解决的呢?

第一次我遇到的时候,我不知道怎么解决,一直同步了很多次,把经常做的那些操作都做了,发现还是不行,说一下我不行的操作:

  1. 点击 Build>Clean Project 重新编译,当然结果是不行;
  2. 点击 File>Inralidate Caches/Restart 重启 Android studio ,发现仍然不行;
  3. 删除 .gradle 文件夹,位置查看方法,在 File>Settings>Build,Execution,Deployment>Build Tools 中的 General settings>Gradle user home 里面就是 .gradle 文件的路径,如果你是 win 电脑,那么默认在 C:\Users\你的用户名 下,删除以后再同步发现仍然报错。

经过上面的折腾,于是我开始认真看提示的错误信息,看到 Build 下并没有相关的错误信息,于是我看到同步时候提示的错误信息的位置,于是我点击打开以后发现里面就是上面的错误信息,按照惯例,我看到有堆栈我就觉得是是错误,于是本能的将错误信息复制到谷歌或百度中搜索,首先我搜索的内容是下面的信息:

java.nio.file.NoSuchFileException: /META-INF/kotlin-nodejs.xml
复制代码

我发现网上并没有这个错误,只是列出一些类似的问题,我看了看类似的错误,发现并不能解决我的问题,于是我就把搜索的范围扩大,直接搜索“ android 中同步失败的解决办法” ,结果看了一大推,发现也不是我想要的,也不能解决我的问题;经过折腾一大圈发现还是解决不了问题,于是我重新看起了错误信息,我尝试去看懂里面信息,我看到跟 nodejskoelinreact-native-code-push' platform 'android-26' not found. 还有就是网络的那个,我试了新的项目,发现都能成功,说明跟网络没什么关系,于是我仔细看了看错误信息,发现错误信息里面一个特别是字样 ERROR ,我再看看其他的错误信息,发现并没有这个,于是我从这个下手,其实显示错误只有

ERROR - intellij.openapi.progress.Task - Module: 'react-native-code-push' platform 'android-26' not found.
复制代码

于是我特别看了一下这个错误信息,提示缺少 android-26 ,于是我就去 SDK Manager 中下载对应的 sdk 26 下载完成以后,再一次同步发现成功了。

从中我们能学到什么呢?

我认为有以下几点:

  1. 遇到错误要认真看错误信息,一般错误信息都说明得很清楚;
  2. 看错误信息重点看带有 ERROR 的,因为只有这种才是导致程序无法进行下来的原因,那是不是代表 WANNING 就不关心了呢,当然也不是,一般警告类信息是导致一些异常情况的原因,也就是这种情况只会让程序出现莫名其妙的结果,或者出现了不按自己预期的结果;
  3. 如果遇到了问题都尽量记录下来,包括解决的过程,这样可以总结一套最快解决问题的方法论;
  4. 不要一味的通过清理缓存的方式来解决问题,首先要看明白问题,然后自己进行评估,如果觉得的确有可能是才清理缓存;

我们知道在开发过程中遇到问题是难免的,但是我们又不能精通各种技术,这个时候善于借助搜索工具和对错误信息的提取就显得很重要。

所以遇到问题可以分为两步:分析错误信息》搜索相关问题/学习相关知识/定位代码分析逻辑等;其中分析错误信息最重要,能够更快更好的提取重要的错误信息能事半功倍,上面的分析结果就是我对错误分析的方法。

之前我就有这样的方式记录分享我的方法和总结,我觉得不错,但当时不知道因为啥我中途放弃了,从八月开始我会重新开始,以(学习/问题)为引找到一条真正适合自己的发展之路。

文章分类
Android
文章标签