使用AndroidStudio直接运行无法启动,但是 Gradle Build 出来的安装包可以使用

最近项目连续出现两个编译问题,而且居然还先后上线了两三个重大版本了!

现在问题爆出,发现根本没有办法定位问题爆出的位置,因为太影响开发没进度,只好专门研究了一下两个流程的差别,结果发现定位到了问题也无法解决,目前只好通过 AndroidStudio 的设置将问题规避掉了。如果发现了解决方式,再进行更新。

首先分开说一下问题的状态:

  1. Android Studio 直接运行到手机上可以使用,但是此时将 build 目录下的 Apk 发送给同事发现安装之后启动秒崩溃,错误是 ClassNotFoundException Application 的异常,但是使用 Gradle 编译出的 Apk 可以正常使用,这也是为什么我们之前几个版本可以通过上线的原因。
  2. Android Studio 直接运行到手机上瞬间崩溃,这个我至今没有搞懂为什么同事上线了,问题解决才发现:“Android 6.0 就可以,之前的版本都是崩溃。”,此时提示的是 各种第三方 jar 包 的类 ClassNotFoundException,不过这个不需要继续考虑了,此时使用 Gradle 编译出的 Apk 依然可以正常使用

注:上面两个问题是分开出现,的,第一个问题先出现,没有解决的状态下出现了第二个问题。

解决问题:

File - Settings - Build - Instant Run 关闭 该功能即可

定位问题:通过以上问题,很方便的定位到,是以来的 Module 的内部关于外部库的依赖有问题,但是项目正在整改,仅仅几个小版本就依赖进来4个Module,根本无法定位到具体是哪个 Module 哪个依赖的问题,只好研究了一下 Run 的工作流程,发现 Run 功能其实就是个方便直接差异性运行到手机的按钮,根本就没有去真的编译,而我们的 Module 又有源代码,又有远程库,但是直接运行是不会再次拉去远程库的(虽然设置了远程库,但是本地还有一份源代码)。大概就是这个 maven 库的存在造成了这些问题,但是这个 maven 又是主管在推行的一个功能,只是目前我们使用的不好,并不是 库本身有问题,所以暂时只能先关闭差异性安装包的功能,让每次 Android Studio 在 Run 按钮的流程都是直接去 Build

你可能感兴趣的:(开发软件--应用篇)