Android 11 新工具 | 提升應(yīng)用私密性和穩(wěn)定性

image

幫助您構(gòu)建高質(zhì)量的應(yīng)用逛尚,是我們長(zhǎng)期努力的一個(gè)方向吨些。為此搓谆,我們經(jīng)常尋找可以在工具和資源上投入精力的領(lǐng)域,這些工具和資源可以使您更加深刻地了解應(yīng)用的性能豪墅。

重大更新

在 Android 11 上泉手,我們引入了兩個(gè)新工具——"數(shù)據(jù)訪問(wèn)審核 (Data Access Audit) API" 和 "進(jìn)程退出原因 (Process Exit Reasons)",這可以使您更清晰地了解隱私數(shù)據(jù)的訪問(wèn)和進(jìn)程退出的原因偶器。

數(shù)據(jù)訪問(wèn)審核 API

Android 鼓勵(lì)開(kāi)發(fā)者審慎地訪問(wèn)敏感數(shù)據(jù)斩萌。在 Android 11 上,通過(guò)訪問(wèn)新的 API屏轰,可以給您帶來(lái)更加透明的私有數(shù)據(jù)以及受保護(hù)數(shù)據(jù)的使用情況颊郎。這一 API 對(duì)于那些保留了舊代碼或使用了第三方庫(kù)或 SDK 的大型應(yīng)用或許會(huì)十分有用。

image

在大型應(yīng)用中霎苗,排查使用隱私數(shù)據(jù)的歸因并非易事

第一個(gè) API 是一個(gè)回調(diào)姆吭,當(dāng)運(yùn)行時(shí)權(quán)限所保護(hù)的數(shù)據(jù)被調(diào)用時(shí),它允許應(yīng)用 回溯到代碼調(diào)用處唁盏。如果希望得到通知内狸,任何應(yīng)用都可以在 AppOpsManager 中設(shè)置回調(diào),每當(dāng)有代碼使用私有數(shù)據(jù) (例如獲取位置更新) 時(shí)都會(huì)執(zhí)行該回調(diào)厘擂。您可以創(chuàng)建特定的邏輯來(lái)跟蹤昆淡、提取和分析數(shù)據(jù)。

image

Android 11 中的數(shù)據(jù)訪問(wèn)審核 API 有助于追溯您代碼中私有數(shù)據(jù)的使用情況

第二個(gè) API 針對(duì)多功能的復(fù)雜應(yīng)用驴党。一個(gè)社交類應(yīng)用可能同時(shí)擁有 "查找好友" 以及 "照片標(biāo)記" 功能瘪撇,每個(gè)功能使用了各自的敏感數(shù)據(jù)子集。舉例來(lái)說(shuō),"查找好友" 使用了位置倔既、聯(lián)系人數(shù)據(jù)恕曲,而 "照片標(biāo)記" 使用位置、聯(lián)系人以及相機(jī)渤涌。在 Android 11 中佩谣,您可以創(chuàng)建一個(gè)新的 Context 對(duì)象,該對(duì)象可以將應(yīng)用中的部分代碼 歸因 于一個(gè)或者多個(gè)功能实蓬。此后茸俭,每種權(quán)限的使用都將追溯到與此上下文關(guān)聯(lián)的功能。

關(guān)于這些 API 的實(shí)際使用情況安皱,請(qǐng)查閱 代碼示例:

image

除了幫助您識(shí)別私有數(shù)據(jù)訪問(wèn)之外调鬓,Android 11 還包含了另一個(gè)新的 API,用來(lái)輔助排查無(wú)法捕捉現(xiàn)場(chǎng)的崩潰酌伊。

進(jìn)程退出原因

造成應(yīng)用被終止的原因腾窝,可能是 ANR、崩潰或是用戶強(qiáng)行關(guān)閉應(yīng)用等諸多情況居砖,也因此難以進(jìn)行跟蹤虹脯,我們也收到了開(kāi)發(fā)者們對(duì)此的相關(guān)反饋。為了診斷應(yīng)用終止原因奏候,一些開(kāi)發(fā)者正在加入自定義代碼循集,以構(gòu)建自己的分析程序來(lái)改善應(yīng)用的穩(wěn)定性。

基于此想法蔗草,我們?yōu)槟峁┝艘环N簡(jiǎn)化診斷部分的方法咒彤。

Android 11 引入了一個(gè)新的 ActivityManager API 來(lái)上報(bào)應(yīng)用進(jìn)程終止相關(guān)的歷史信息。

您的應(yīng)用可以使用該 API 來(lái)獲取任何可用的進(jìn)程退出的歷史診斷信息蕉世,如進(jìn)程終止是否源于ANR蔼紧、內(nèi)存問(wèn)題、還是其他原因狠轻。

如果應(yīng)用由于 ANR 導(dǎo)致終止奸例,那么 ApplicationExitInfo.getTraceInputStream() 將在終止之前將一個(gè) InputStream 返回給堆棧跟蹤存儲(chǔ)。這在高版本的系統(tǒng)上尤其有效向楼,因?yàn)槌鲇陔[私和安全考慮查吊,高版本系統(tǒng) 提取 ANR traces 文件 將更加復(fù)雜。為了避免資源泄漏湖蜕,讀取 InputStream 后將其關(guān)閉即可逻卖。

此外,您還可以使用新的 ActivityManager.setProcessStateSummary() 方法存儲(chǔ)自定義狀態(tài)信息昭抒。您可以保存任意進(jìn)程數(shù)據(jù)评也,這能非常有效地幫助您調(diào)試導(dǎo)致應(yīng)用崩潰的代碼段炼杖。對(duì)于一些開(kāi)發(fā)者來(lái)講,了解應(yīng)用終止之前的狀態(tài)必不可少盗迟,比如: 游戲開(kāi)發(fā)者可能希望了解進(jìn)程終止之前用戶的游戲等級(jí)坤邪,一種常見(jiàn)的解決方案是將數(shù)據(jù)持久化保存,并在應(yīng)用下次啟動(dòng)時(shí)讀取罚缕。然而需要注意的是艇纺,輸入數(shù)據(jù)的大小非常有限。任何保存過(guò)的進(jìn)程狀態(tài)信息都可以通過(guò) ApplicationExitInfo.getProcessStateSummary() 方法獲取邮弹。

相關(guān)資源

我們希望您通過(guò)這些額外的工具可以提升應(yīng)用的隱私意識(shí)和穩(wěn)定性黔衡。詳細(xì)了解,請(qǐng)參閱以下開(kāi)發(fā)文檔:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末腌乡,一起剝皮案震驚了整個(gè)濱河市盟劫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌导饲,老刑警劉巖捞高,帶你破解...
    沈念sama閱讀 211,423評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異渣锦,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)氢哮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,147評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)袋毙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人冗尤,你說(shuō)我怎么就攤上這事听盖。” “怎么了裂七?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,019評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵皆看,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我背零,道長(zhǎng)腰吟,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,443評(píng)論 1 283
  • 正文 為了忘掉前任徙瓶,我火速辦了婚禮毛雇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘侦镇。我一直安慰自己灵疮,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,535評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布壳繁。 她就那樣靜靜地躺著震捣,像睡著了一般荔棉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蒿赢,一...
    開(kāi)封第一講書(shū)人閱讀 49,798評(píng)論 1 290
  • 那天润樱,我揣著相機(jī)與錄音,去河邊找鬼诉植。 笑死祥国,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的晾腔。 我是一名探鬼主播舌稀,決...
    沈念sama閱讀 38,941評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼灼擂!你這毒婦竟也來(lái)了壁查?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,704評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤剔应,失蹤者是張志新(化名)和其女友劉穎睡腿,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體峻贮,經(jīng)...
    沈念sama閱讀 44,152評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡席怪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,494評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了纤控。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挂捻。...
    茶點(diǎn)故事閱讀 38,629評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖船万,靈堂內(nèi)的尸體忽然破棺而出刻撒,到底是詐尸還是另有隱情,我是刑警寧澤耿导,帶...
    沈念sama閱讀 34,295評(píng)論 4 329
  • 正文 年R本政府宣布声怔,位于F島的核電站,受9級(jí)特大地震影響舱呻,放射性物質(zhì)發(fā)生泄漏醋火。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,901評(píng)論 3 313
  • 文/蒙蒙 一狮荔、第九天 我趴在偏房一處隱蔽的房頂上張望胎撇。 院中可真熱鬧,春花似錦殖氏、人聲如沸晚树。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)爵憎。三九已至慨亲,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間宝鼓,已是汗流浹背刑棵。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,978評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留愚铡,地道東北人蛉签。 一個(gè)月前我還...
    沈念sama閱讀 46,333評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像沥寥,于是被迫代替她去往敵國(guó)和親碍舍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,499評(píng)論 2 348