android 问题分析解析,有你想要的吗

android 问题分析解析,有你想要的吗

  • 正文
  • 系统错误
    • 一.常见错误
    • 二.其他错误
  • 程序错误
    • 运行前错误
    • 运行后错误
      • 一 logcat查看
      • 二 通过第三方友盟记录错误
      • 三 错误上传
      • 四 debug追踪
  • 结尾

很久没有写文了,之前一段时间都在忙,所有一直没有时间写,今天闲下来了,打算写一篇。
期间有很多人问了我问题,然后发现,其实在这些问题都很简单,只要掌握一定的技巧,
其实都可以解决,今天我来写一篇关于如何分析和解决问题的文章。这边文章不讲具体问题的解决方案
(可能会有几个例子),主要讲的是一些解决问题的方法。

正文

文章可能会有点长,如果有耐心可以慢慢看,算是我的一些个人经验和总结。
我将从以下几个方面开始讲:
一般问题的错误分为系统错误和程序错误。系统错误指的是Android studio的错误,程序错误指的是Android运行之后出现的错误。

系统错误

一.常见错误

系统错误很多有错误提示,那些有错误提示的其实很简单,因为大多网上都有解决方法,只要看到错误就ok  

例:

在这里插入图片描述
比如这个。主要问题你可以看右边,这个错误就是没有成功下载,只要点第一行的蓝色重新加载就ok,很多错误其中只要看英文就能理解大半。
这里面我经常遇到的主要有3个:

  1. 证书问题,这个问题我相信很多新手都遇到了,我这里推荐2篇文章,可以看看。https://www.jianshu.com/p/89ca5b635d3f(详细篇)
    https://www.jianshu.com/p/b4ad6ccbe445(简略篇)

  2. 版本问题,很多人直接考虑很多网上的demo项目,然后发现怎么也运行不了,一般就是这个问题导致的。一般需要改的有2个地方,一个是改build.gradle(整个项目下面的)的gradle版本(当然你把自己的gradle版本改低也行的),还有一个有可以需要兼容androidx,所以要把项目变成androidx版本,可以看看这篇文章
    https://blog.csdn.net/qq_43053718/article/details/95197088

  3. 主要为依赖冲突,主要体现就是你引用的框架里面,有相同的依赖,但是他们的版本号不统一。这个问题就要先找到你的哪2个或多个框架里面的相同了,然后再作出解决,可以看看这篇文章
    https://blog.csdn.net/TE28093163/article/details/89707241

android 问题分析解析,有你想要的吗_第1张图片
上面这些为比较常见的问题,也算是给个提供的思路,怎么去找到问题所在。

二.其他错误

还有些问题,可能没有错误提示。而且让你觉得莫名其妙,可能前一秒是好的。后一秒就不能用了。  

举个例子,我这周遇到的,Android studio 看xml突然变成了Java文件,然后我打开文件夹看xml是正常的。所以得出结论是缓存的问题,其实很多问题也可能是缓存问题。然后解决。只要看你怎么分析,我出现的这个问题是这样分析的:

  1. 先用Build->clean project,先清理项目缓存后无效.
  2. 然后用file->Invaildate/caches/Restart 重启项目清理缓存,后发现也无效
  3. 最终删除Android studio 的缓存文件,一般在你的c盘-》用户-》你的用户名-》.android stduio 版本号-》syytem找到caches文件夹然后删除。

程序错误

程序错误一般分为运行前的错误和运行后出现的错误。   

运行前错误

运行前的错误有一些我在系统错误里面也有讲到。

还有些常见的错误比如:

  1. 一些引用标红,你直接将鼠标放上去,按alt+回车,会看到import 选项,一般为引用为导入库。
  2. R文件标红,一般为xml错误,可以直接build查看build是否显示哪里错误或者在

android 问题分析解析,有你想要的吗_第2张图片
下面的terminal中输入gradlew processDebugManifest --stacktrace
如果是mac则是./gradlew processDebugManifest --stacktrace
当然这种方法主要对英文和代码有些懂才行。
3. 点九图片报错,这种报错一般为点九图片不规范导致的,如果不行就直接将点九图片后缀改成.png试试就知道是不是这种错误了。
4. 还有种常见的问题是新手常犯的,比如在你继承activity的类中调用finish();
但是继承fragmetn不能直接调用finish();这是因为这个继承类没有该方法导致的。这主要是Java基础没有学好导致的,对该语言了解不多。

运行后错误

其实前面说了那么多。这个才是关键,很多人遇到的问题大概都是这里,这里的问题有很多解决方法,可以直接连接手机,看报错日志。还可以通过第三方记录错误(比如友盟)。也可以通过存储错误的方法,将错误存储到本地,然后进行查看(也可以上传到远程服务器)。也可以通过debug方法进行错误查看

一 logcat查看

通过手机连接电脑,然后查看logcat来查看错误。(这个需要手机打开开发者模式,然后项目就可以直接点击运行,
在手机上运行了)

举个例子把。
android 问题分析解析,有你想要的吗_第3张图片
比如上图所示,就是一个被除数不能为0的错误。一般错误就会这样简单的显示出来,很快能就定位到错误所在,但是有时候这些数据很快就被很多信息淹没了,这时候就需要手动操作将这些信息找出来了。

android 问题分析解析,有你想要的吗_第4张图片
如上图

  1. 代表的是你的手机
  2. 代表你现在程序的进程
  3. 代表错误提示tip是哪个级别的。
    在这里插入图片描述
    一般错误都是在error级别。这时候提一下log方法。输出日志信息在logcat中,其中输出级别可以自己定义,可以参考这篇文章,这篇文章相对信息的分析了这个
    https://www.cnblogs.com/andy-songwei/p/9676823.html
    因为有时候不是只是处理崩溃的代码,有时候还要处理其他问题的代码,比如为什么某个按钮点击不了了,这时候log监测就很重要了。将你怀疑的地方写上注释,一步步的监测它,为什么没有走到你想走到的那一步。
  4. 则代表关键词搜索

二 通过第三方友盟记录错误

有时候一些正式的项目可能不能很好的复现代码。这时候就需要第三方去监测代码和监测崩溃状态了。比如友盟。它可能监测用户崩溃的状态和浏览监测等很多功能。
具体你可以看看这个,这个是接入文档
https://developer.umeng.com/docs/119267/detail/118578

三 错误上传

通过将记录的数据保存到本地和服务器到方式来监控代码。
主要有2种,一种是将log信息上传,一种是将崩溃日志上传。
崩溃日志主要有一个类可以去监测到Thread.UncaughtExceptionHandler,只要崩溃了,肯定会走这里。
可以看看这篇文章。这篇文章
https://www.jianshu.com/p/457a4783fe6f
还要就是通过try{}catch(Exception e){}来监测代码。将你认为会出错的方法内套入这个,再通过debug或者log日志来查看出了什么错误。

四 debug追踪

最后来将这个dubug。可能很多人对这个很陌生,这个主要为跟踪代码,通过打断点的方式对代码进行追踪解析,这个对分析代码和解析源码很有帮助。当然如果你出错了,但又找不到问题,如果你找不到问题所在,可以用这个试试,因为很多错误,不一样是崩溃才出现的。对于这个可以看看这篇文章
https://www.jianshu.com/p/ca3a5ab44516

结尾

嗯。写到这里就差不多结束了,这里引用了很多文章,这里在总结下。如果有什么不懂,可以关注我公众号联系我。
1.证书问题
https://www.jianshu.com/p/89ca5b635d3f(详细篇)
https://www.jianshu.com/p/b4ad6ccbe445(简略篇)
2.Android v4v7转Androidx
https://blog.csdn.net/qq_43053718/article/details/95197088
3.依赖冲突问题
https://blog.csdn.net/TE28093163/article/details/89707241
4.log日志
https://www.cnblogs.com/andy-songwei/p/9676823.html
5.友盟接入文档
https://developer.umeng.com/docs/119267/detail/118578
6.debug介绍
https://www.jianshu.com/p/ca3a5ab44516

                                  欢迎关注我的公众号 

android 问题分析解析,有你想要的吗_第5张图片

                                     期待的你关注

你可能感兴趣的:(android,问题分析)