阅读 213

记录一次Android studio爬坑经历

在开始正题之前,要先吐槽一下Android studio,为什么编译期间不能把很明显的错误找到,以至于我在一个问题上花了数个小时才解决.
事情是这样的,我像平时一样编译并运行项目,编译期间没有发生任何错误,但是wtf,运行时就报这个错误:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesWithDexForDebug'
这个错误产生的原因有很多,这就导致了一开始我Google时查到的回答大多都是针对他们特定的情况,
可想而知,试了他们的方法后,并没卵用.后来我无意间发现项目中有部分文件很明显的报红.这时的我既气愤又欣喜,欣喜的是貌似发现了问题的根源,眼看就能解决这个困扰我数个小时的问题了,气愤的是,这么明显的错误Android studio居然没检查出来,还tm编译通过了.改完后,运行,依然报错,此时内心略崩溃...继续Google,发现有人说可以用命令: gradlew assembleDebug --info ,运行这个命令后,发现了错误的地方居然是realm数据库需要一个无参构造器,但是项目中有一个类没有声明无参构造导致的.问题最终就这样解决了<这只是我这边的情况,就如我前面所说,导致这种错误的原因有很多,需要具体情况具体处理>.
经过这件事,主要给我以下几个经验教训:
1.项目的build.gradle文件的classpath末尾的版本号不一定要和andorid studio的版本号一致,之前一直以为要一致才行
2.有些gradle命令虽然平时用的很少,但还是要了解,关键时刻还得靠他们解决问题.比如:
gradlew assembleDebug --info  gradlew assembleDebug --debug   gradlew --stacktrace --info 等等复制代码