最近,我在做一个项目时,被一个问题卡住了,就是这个问题:
我非常确认只初始化了WorkManager一次,但是Android Studio仍然抛出了这个异常。 第六感告诉我,一定是项目中其他的依赖包也使用了WorkManager。然后去看了眼 build.gradle 文件,没有其他依赖用到了WorkManager,这就很奇怪了。 我们采用了许多种不同的解决方案,比如更新或者删除依赖和插件,并逐行调试,定位崩溃的位置,但是根本无法解决。所以我们怀疑是不是我们引用的依赖里,也初始化了WorkManager?所以我们需要看下项目中的依赖关系。 能看到项目中完整的依赖关系吗? 答案当然是Yes!可以在Android Studio中查看,也可以通过命令行查看。这里有4种方法能帮你查看到项目中完整的依赖关系。通过Gradle面板 通过Android Studio查看是最简单也是最直接的方法。 在Android Studio的右边栏里点击 Gradle 选项,然后依次将IllegalStateException: WorkManager is already initialized
yourmodule
->
Tasks
->
android
展开,最后双击
androidDependencies
运行它。
它会将完整的依赖关系图输出在Android Studio的console栏里,像下面图片这样 :
./gradlew yourmodule:dependencies
yourmodule
是要查看其依赖项的模块的名称,举个例子,如果你要查看app的依赖项,这里使用app就好。
另外,如果你也想要查看
compile
,
testCompile,
或者其他
的依赖项,你也可以这样配置参数:
./gradlew app:dependencies --configuration implementation./gradlew app:dependencies --configuration testImplementation ./gradlew app:dependencies --configuration androidTestImplementation
通过Gradle Build扫描
使用Gradle Build 扫描可能是最简单,最干净的一种方法了。它不仅可以看到项目中的依赖关系,还可以看到其他的一些Build信息。
你要做的就是在Gradle命令行后加上--scan
,举个例子,想查看项目中完整的依赖关系,可以使用这个命令:
gradlew app:dependencies --scan
输入命令行后,它会要求你确认是否生成报告,输入
yes
,你会得到一个报告的链接。像下面这样:
打开这个URL,然后输入你的邮箱,几分钟后,你就可以类似下面的内容,点开Dependencies 选项,就可以看到一些细节了。
在这里你还可以查看一些其他的东西,比如性能,插件等等。以Html页面的形式,给你展示项目构建的一些详细情况。
使用插件如果您不想在每次编译项目时都发送电子邮件,你可以使用Project Reports Plugin。但是需要你在build.gradle文件中添加一些代码,首先,需要你在build.gradle文件中,加上以下代码:
apply plugin: 'project-report'
之后点击 sync, 同步下项目,然后输入以下命令行:
gradlew htmlDependencyReport
他会在本地生成一个Html文件,控制台里会显示一个链接,点击链接,就可以查看项目的依赖关系啦。如下图:
上面这4种,任何一种都非常好用啦~Gradle还有很多很好用的功能,关注公众号,后面会继续给大家更新!