自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

別讓引入的 SDK 和第三方庫導(dǎo)致您應(yīng)用被下架!

開發(fā) 前端
在本文中,我將和大家分享幾個(gè)工具,可用于應(yīng)用開發(fā)的不同階段,包括開發(fā)階段和應(yīng)用發(fā)布后 (這是對 SDK 廠商文檔的補(bǔ)充,推薦大家仔細(xì)閱讀 SDK 文檔)。

或許您的應(yīng)用正在使用一些第三方 SDK 或者代碼庫,畢竟 "站在巨人的肩膀上" 比從頭開始最基礎(chǔ)的應(yīng)用開發(fā)更節(jié)省時(shí)間。作為應(yīng)用開發(fā)者,您需要為應(yīng)用的整體情況負(fù)責(zé),包括用戶體驗(yàn)和您的代碼,當(dāng)然,也包含第三方 SDK 和代碼庫。

[[399573]]

當(dāng)您在考慮使用 SDK 或代碼庫時(shí),知曉它們對如何處理和使用數(shù)據(jù)處理尤為重要,這將使得您可以更好地保護(hù)用戶隱私。

在本文中,我將和大家分享幾個(gè)工具,可用于應(yīng)用開發(fā)的不同階段,包括開發(fā)階段和應(yīng)用發(fā)布后 (這是對 SDK 廠商文檔的補(bǔ)充,推薦大家仔細(xì)閱讀 SDK 文檔)。

Merged Manifest 視圖

為了能夠增加靈活性,Gradle 支持多個(gè)以應(yīng)用構(gòu)建配置、應(yīng)用模塊或代碼庫依賴需求而定義的單獨(dú) Android Manifest 文件。這些清單文件根據(jù)工程需要包含不同的默認(rèn) XML 元素和屬性。當(dāng)構(gòu)建應(yīng)用時(shí),Gradle 會(huì)將所有清單文件合并到一個(gè)清單文件中。您可以 指定 "合并規(guī)則" 來定義數(shù)值的合并方式。接下來,我們探討如何使用這個(gè)工具洞悉您所依賴的 SDK。

Android Studio 提供了一種簡單的方式來檢查最終合并后的清單文件。方法是點(diǎn)擊處于清單文件編輯窗口底部的 "Merged Manifest" 標(biāo)簽頁。通過界面凸顯的不同顏色,您可以清楚地分辨出不同的清單文件來源 (Manifest Sources)。這些源包括不同的代碼庫依賴,例如下圖展示了名稱為 "transport-backend" 的依賴在應(yīng)用中所用到的權(quán)限。

 

Merged Manifest 視圖示例

 

這樣的展示效果能夠幫助您快速定位到由應(yīng)用依賴所帶來的異常權(quán)限請求。由于運(yùn)行時(shí)的權(quán)限請求對話框可能會(huì)改變用戶的交互,因此這些分析數(shù)據(jù)不僅非常有用,而且還能夠使您更加全面地掌握應(yīng)用的依賴對數(shù)據(jù)的使用目的。如果有必要的話,您需要向用戶解釋何時(shí)以及為何要訪問某些數(shù)據(jù)。

如果您在合并后的清單文件中看到任何異常的權(quán)限使用,請仔細(xì)審閱相關(guān)依賴庫文檔 (或者聯(lián)系開發(fā)者),并確保您了解該權(quán)限使用的實(shí)際目的。

該權(quán)限很有可能對于您所使用的服務(wù)來說是可選的。對于需要最小化數(shù)據(jù)使用的場景,您可以在應(yīng)用模塊的清單文件中添加一個(gè) "remove" 節(jié)點(diǎn)標(biāo)記 來防止該庫的權(quán)限請求被合并到最終的應(yīng)用中。

  1. <uses-permission android:name="SOME_PERMISSION" 
  2.    tools:node="remove"/> 

模塊依賴視圖

在開發(fā)工具鏈中另一個(gè)非常實(shí)用的工具是 Gradle 的模塊依賴支持。依賴圖表通常的用法是定位構(gòu)建過程中遇到的問題。依賴圖表還可以顯示間接依賴的信息,有助于幫助開發(fā)者知曉由依賴庫引入的額外依賴。如需了解更多信息,請參閱: 查看模塊依賴項(xiàng)。

接下來,我們將介紹另外一款工具,它可以幫助您更好地了解應(yīng)用中的數(shù)據(jù)訪問情況。

數(shù)據(jù)訪問審計(jì)

隨著應(yīng)用復(fù)雜性的提高 (包括您團(tuán)隊(duì)規(guī)模的不斷擴(kuò)大),在應(yīng)用的開發(fā)過程中很難直觀地檢查與 SDK 相關(guān)隱私數(shù)據(jù)的訪問情況。

Android 11 引入了 數(shù)據(jù)訪問審計(jì) 的特性,它可以幫助開發(fā)者確認(rèn)在應(yīng)用使用過程中哪段代碼訪問了數(shù)據(jù)。該特性可以讓您將隱私數(shù)據(jù)與應(yīng)用中的業(yè)務(wù)場景相關(guān)聯(lián),比如 "點(diǎn)咖啡" 或者 "與朋友分享"。進(jìn)而定位任何異常的數(shù)據(jù)訪問操作,并確定哪個(gè)模塊或者應(yīng)用場景執(zhí)行了訪問操作。

如需使用該特性,首先創(chuàng)建一個(gè) context 對象,并且為其關(guān)聯(lián)一個(gè) "屬性標(biāo)簽",該標(biāo)簽和某個(gè)業(yè)務(wù)場景相關(guān),比如 "點(diǎn)咖啡"。您可以在 OrderCoffeeActivity.onCreate() 方法內(nèi)實(shí)現(xiàn)這些。

  1. attributionContext = createAttributionContext("orderCoffee"

您可以在之后開發(fā)框架的 API 調(diào)用中將上面創(chuàng)建的 attributionContext 作為 Context 類型的參數(shù)進(jìn)行使用。

接下來,設(shè)置一個(gè)回調(diào),當(dāng)隱私數(shù)據(jù)被訪問的時(shí)候會(huì)調(diào)用該回調(diào)。在回調(diào)內(nèi)部,您可以獲取 attributionTag (上面所設(shè)置的屬性標(biāo)簽),并提取堆棧信息或者集成您自己的應(yīng)用分析方法。

 

  1. val appOpsCallback = object : AppOpsManager.OnOpNotedCallback() { 
  2.       // 當(dāng)您的應(yīng)用訪問了隱私數(shù)據(jù)的時(shí)候,該回調(diào)會(huì)在應(yīng)用訪問隱私數(shù)據(jù)的時(shí)候被調(diào)用 
  3.       // 比如聯(lián)系人數(shù)據(jù) 
  4.       override fun onNoted(syncNotedAppOp: SyncNotedAppOp) { 
  5.         logDataAccess(syncNotedAppOp.op, 
  6.                  // 這里會(huì)返回上面創(chuàng)建 attributionContext 的時(shí)候所傳入的標(biāo)簽字符串, 
  7.                 // 比如,這里就是 “orderCoffee” 
  8.                 syncNotedAppOp.attributionTag,  
  9.                 Throwable().stackTrace.toString()) 
  10.     } 

數(shù)據(jù)訪問審計(jì)同時(shí)支持同步和異步兩種 API 調(diào)用,并且可以在 Android 11 及之后的設(shè)備上使用。如需了解更多信息,請參閱: 數(shù)據(jù)訪問審計(jì)。

小結(jié)

Android 11 中新增的 Merged Manifest 工具、Gradle 對于模塊依賴的支持、數(shù)據(jù)訪問審計(jì) API,均是為了能夠幫助開發(fā)者針對應(yīng)用內(nèi)和 SDK 依賴的數(shù)據(jù)訪問和操作提供額外的監(jiān)測。從而使您為終端用戶展現(xiàn)更好的透明性。推薦大家將這些工具整合進(jìn)現(xiàn)有的工作流程中。

此外,如果您通過 Google Play 商店發(fā)布應(yīng)用,請確認(rèn)已經(jīng)閱讀了相關(guān)的 用戶數(shù)據(jù)策略,并且確保您使用的 SDK 是符合要求的。

本文轉(zhuǎn)自O(shè)SCHINA

本文標(biāo)題:別讓引入的 SDK 和第三方庫導(dǎo)致您應(yīng)用被下架!

本文地址:https://www.oschina.net/news/141535/pay-attention-on-3rd-library-and-sdk

資訊來源:https://my.oschina.net/androiddevs/blog/5048766

責(zé)任編輯:未麗燕 來源: 開源中國
相關(guān)推薦

2019-07-30 11:35:54

AndroidRetrofit

2015-11-05 16:44:37

第三方登陸android源碼

2022-01-27 08:16:43

蘋果iCloud應(yīng)用程序

2013-08-12 16:04:19

第三方移動(dòng)應(yīng)用

2020-09-09 10:04:30

9 Game應(yīng)用程序惡意軟件

2014-07-22 10:56:45

Android Stu第三方類庫

2014-08-06 10:15:06

Java 8

2022-04-25 09:00:46

npm包管理器

2017-12-11 15:53:56

2014-07-23 08:55:42

iOSFMDB

2011-06-07 14:36:24

iOS5WWDC

2021-10-11 06:38:52

Go開源庫語言

2012-08-03 09:44:11

iOS 6蘋果地圖

2016-10-14 14:37:36

安全風(fēng)險(xiǎn)安全第三方訪問

2022-01-14 09:57:14

鴻蒙HarmonyOS應(yīng)用

2022-06-06 07:50:55

PythonJSON

2022-05-21 23:56:16

Python庫搜索Python

2013-01-15 13:50:22

iOS開發(fā)開源庫

2011-07-25 14:14:49

iPhone SQLITE Pldatabase

2010-03-03 15:10:49

第三方Python庫
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號