日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DropBox系列-安卓DropBox介绍

發布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DropBox系列-安卓DropBox介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:

作者本人負責公司的APM監控模塊,因為工作的原因,對ANR,crash等流程研究的比較多,最近在打造APM監控平臺的時候,順帶對DropBox的實現原理進行了一定的學習和研究,發現了一些妙用,因此寫這篇文章來分享。

本系列分為兩篇文章,

1.DropBox系列-安卓DropBox介紹:主要介紹DropBox的一些實現原理。

2.DropBox系列-利用DropBox打造APM框架:主要介紹利用DropBox打造一個面向所有APP的穩定性監控框架。

PS:本文的代碼以安卓9(SDK=28)的源碼來介紹,因為目前車載開發基本上都是以安卓9為基礎來定制的,而且DropBox對于那些擁有系統權限的APP來講意義更大一些。

一.DropBox簡介

dropbox是安卓系統中用來記錄一些異常信息的模塊,比如某個應用crash了或者anr了,系統最終都會把記錄的異常信息記錄到dropbox中。

其一般會把異常信息記錄到中:data/system/dropbox文件夾下,記錄的類型會有很多種,主要有CRASH,ANR,墓碑日志,native崩潰等等,如下圖所示:

?

當然,由于SELinux權限的限制,這些文件夾對于普通的APP來講說不可訪問的,只有擁有系統簽名的APP才可以訪問的。

二.DropBox記錄流程

2.1 binder接口

DropBoxManagerService中,提供了一個binder實現類,主要提供了四個方法,其實最核心的,就是add方法,也就是真正實現記錄的方法。我們的源碼閱讀,也從這里開始。

private final IDropBoxManagerService.Stub mStub = new IDropBoxManagerService.Stub() {@Overridepublic void add(DropBoxManager.Entry entry) {DropBoxManagerService.this.add(entry);}@Overridepublic boolean isTagEnabled(String tag) {return DropBoxManagerService.this.isTagEnabled(tag);}@Overridepublic DropBoxManager.Entry getNextEntry(String tag, long millis) {return DropBoxManagerService.this.getNextEntry(tag, millis);}@Overridepublic void dump(FileDescriptor fd, PrintWriter pw, String[] args) {DropBoxManagerService.this.dump(fd, pw, args);}};

2.2?add流程

binder的add方法之后,會調用到DropBoxManagerService的add方法。

其核心實現邏輯就是add方法,add方法主要做了一下的工作:

1.把接收到的Entry內容寫入到臨時文件tmp中。

temp = new File(mDropBoxDir, "drop" + Thread.currentThread().getId() + ".tmp");

2.寫入完成后,把tmp文件修改文件名,改成data_app_anr@111這樣的文件名。

final File file = this.getFile(dir);if (!temp.renameTo(file)) {throw new IOException("Can't rename " + temp + " to " + file);}

3.切換成主線程,發送廣播。

final Intent dropboxIntent = new Intent(DropBoxManager.ACTION_DROPBOX_ENTRY_ADDED);dropboxIntent.putExtra(DropBoxManager.EXTRA_TAG, tag);dropboxIntent.putExtra(DropBoxManager.EXTRA_TIME, time);if (!mBooted) {dropboxIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);}// Call sendBroadcast after returning from this call to avoid deadlock. In particular// the caller may be holding the WindowManagerService lock but sendBroadcast requires a// lock in ActivityManagerService. ActivityManagerService has been caught holding that// very lock while waiting for the WindowManagerService lock.mHandler.sendMessage(mHandler.obtainMessage(MSG_SEND_BROADCAST, dropboxIntent));

三.DropBox妙用

既然在系統發現異常后,會主動把對應的記錄文件進行記錄,那么,我們是不是可以利用dropbox,針對系統中所有的APP應用進行一個切面編程,捕獲所有的異常進行上報。這樣就不需要每個應用單獨去接入注入bugly一類的框架了,而且由于少了bugly的影響,性能,穩定性會更好。

實現對dropbox的切面編程,主要有以下三個方案:

方案一:監聽dropbox文件夾變化

利用FileObserver對data/system/dropbox文件夾進行修改監聽,bugly其實也是用的這個原理,6.0以上會因為SELinux的權限失效。所以要對SELinux的文件夾進行配置。

方案二:修改系統源碼進行binder通訊

修改系統AMS中的源碼,APP進行binder的注冊。在發現崩潰或者ANR的之后,利用APP注冊的binder,通知APP一側。

方案三:利用廣播進行通知

上面介紹,保存完成后,回發送一個廣播。那么我們在APP側監聽這個廣播,就可以知道什么時候出現了異常。

具體的實現和結果,我們下一章APM框架再來細細講解。

總結

以上是生活随笔為你收集整理的DropBox系列-安卓DropBox介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 新香蕉视频 | 日本一区二区成人 | 大陆极品少妇内射aaaaa | 深夜视频在线免费 | 成人丁香婷婷 | 国产一区二区精品在线 | 超黄av | 日韩一级片在线播放 | 国产又猛又粗 | 亚洲国产精品久久久久 | 国产真人做爰毛片视频直播 | 久久二| 欧美精品一二区 | 亚洲情欲网 | 中文字幕人妻一区二 | 亚洲熟妇无码av | 日产精品久久久久久久蜜臀 | 国产色频 | 亚洲黄站 | 日本一道本在线 | 亚洲无遮挡 | 久久免费影院 | 精品一区二区三区四区视频 | 国产一区二区三区久久久 | 成人禁污污啪啪入口 | 欧美另类xxxxx | 91精品免费看| 国产污网站 | 97久久精品 | 国产18在线 | 成人青青草 | 欧美人与动性xxxxx杂性 | 在线观看一区二区三区四区 | 玖玖在线 | 国产又大又黄的视频 | 中国国产毛片 | 91精品国产自产91精品 | 少妇精品无码一区二区三区 | 日日操天天操夜夜操 | 亚洲美女性视频 | 国产毛片毛片毛片毛片毛片毛片 | 欧美一区二区黄片 | av资源免费看 | 日本激情网址 | 国产精品久久久久9999 | 宅男噜噜噜666在线观看 | 亚洲AV无码成人精品一区 | 超碰人人人人人人 | 精品久久电影 | 尤物毛片 | 正在播放国产精品 | 黄网免费观看 | 午夜精品在线播放 | 亚洲成人一区在线观看 | 九九啪| 欧美一区在线观看视频 | 99伊人 | 影音先锋国产资源 | 欧美日韩免费一区二区三区 | 成年激情网 | 日韩精品视频在线播放 | 91少妇丨porny丨 | 9i看片成人免费 | 亚洲国产高清国产精品 | 国产尤物视频在线观看 | 成年人性生活免费视频 | 国产伦精品一区二区三区免费 | 精品人妻一区二区三区含羞草 | 亚洲图片小说视频 | 曰本黄色片 | 又爽av| 一本到久久 | www射 | 大白屁股一区二区视频 | 国产精品久久久久免费 | 欧美操大逼 | 一本到免费视频 | 久久影| 四虎影视免费在线观看 | 99一区二区 | 外国电影免费观看高清完整版 | 欧美大片在线看免费观看 | 办公室荡乳欲伦交换bd电影 | 欧美日韩久 | 狠狠搞av | 综合色爱 | 无码国精品一区二区免费蜜桃 | 午夜视频免费在线观看 | 久久影院一区二区 | 麻豆免费在线视频 | 欧美黄色性 | 超碰1000| 影音先锋每日资源 | 成人精品久久久午夜福利 | 天堂视频在线 | 麻豆资源 | 亚洲午夜精品一区 | 亚洲国产精品久久久久爰性色 | 国产乱妇乱子 |