android 問題分析解析,有你想要的嗎

很久沒有寫文了,之前一段時間都在忙,所有一直沒有時間寫,今天閒下來了,打算寫一篇。
期間有很多人問了我問題,然後發現,其實在這些問題都很簡單,只要掌握一定的技巧,
其實都可以解決,今天我來寫一篇關於如何分析和解決問題的文章。這邊文章不講具體問題的解決方案
(可能會有幾個例子),主要講的是一些解決問題的方法。

正文

文章可能會有點長,如果有耐心可以慢慢看,算是我的一些個人經驗和總結。
我將從以下幾個方面開始講:
一般問題的錯誤分爲系統錯誤和程序錯誤。系統錯誤指的是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 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是否顯示哪裏錯誤或者在

在這裏插入圖片描述
下面的terminal中輸入gradlew processDebugManifest --stacktrace
如果是mac則是./gradlew processDebugManifest --stacktrace
當然這種方法主要對英文和代碼有些懂纔行。
3. 點九圖片報錯,這種報錯一般爲點九圖片不規範導致的,如果不行就直接將點九圖片後綴改成.png試試就知道是不是這種錯誤了。
4. 還有種常見的問題是新手常犯的,比如在你繼承activity的類中調用finish();
但是繼承fragmetn不能直接調用finish();這是因爲這個繼承類沒有該方法導致的。這主要是Java基礎沒有學好導致的,對該語言瞭解不多。

運行後錯誤

其實前面說了那麼多。這個纔是關鍵,很多人遇到的問題大概都是這裏,這裏的問題有很多解決方法,可以直接連接手機,看報錯日誌。還可以通過第三方記錄錯誤(比如友盟)。也可以通過存儲錯誤的方法,將錯誤存儲到本地,然後進行查看(也可以上傳到遠程服務器)。也可以通過debug方法進行錯誤查看

一 logcat查看

通過手機連接電腦,然後查看logcat來查看錯誤。(這個需要手機打開開發者模式,然後項目就可以直接點擊運行,
在手機上運行了)

舉個例子把。
在這裏插入圖片描述
比如上圖所示,就是一個被除數不能爲0的錯誤。一般錯誤就會這樣簡單的顯示出來,很快能就定位到錯誤所在,但是有時候這些數據很快就被很多信息淹沒了,這時候就需要手動操作將這些信息找出來了。

在這裏插入圖片描述
如上圖

  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

                                  歡迎關注我的公衆號 

在這裏插入圖片描述

                                     期待的你關注
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章