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

創(chuàng)新互聯(lián)長(zhǎng)期為近千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為滎陽(yáng)企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì),滎陽(yáng)網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
當(dāng)您在考慮使用 SDK 或代碼庫(kù)時(shí),知曉它們對(duì)如何處理和使用數(shù)據(jù)處理尤為重要,這將使得您可以更好地保護(hù)用戶隱私。
在本文中,我將和大家分享幾個(gè)工具,可用于應(yīng)用開(kāi)發(fā)的不同階段,包括開(kāi)發(fā)階段和應(yīng)用發(fā)布后 (這是對(duì) SDK 廠商文檔的補(bǔ)充,推薦大家仔細(xì)閱讀 SDK 文檔)。
Merged Manifest 視圖
為了能夠增加靈活性,Gradle 支持多個(gè)以應(yīng)用構(gòu)建配置、應(yīng)用模塊或代碼庫(kù)依賴需求而定義的單獨(dú) Android Manifest 文件。這些清單文件根據(jù)工程需要包含不同的默認(rèn) XML 元素和屬性。當(dāng)構(gòu)建應(yīng)用時(shí),Gradle 會(huì)將所有清單文件合并到一個(gè)清單文件中。您可以 指定 "合并規(guī)則" 來(lái)定義數(shù)值的合并方式。接下來(lái),我們探討如何使用這個(gè)工具洞悉您所依賴的 SDK。
Android Studio 提供了一種簡(jiǎn)單的方式來(lái)檢查最終合并后的清單文件。方法是點(diǎn)擊處于清單文件編輯窗口底部的 "Merged Manifest" 標(biāo)簽頁(yè)。通過(guò)界面凸顯的不同顏色,您可以清楚地分辨出不同的清單文件來(lái)源 (Manifest Sources)。這些源包括不同的代碼庫(kù)依賴,例如下圖展示了名稱為 "transport-backend" 的依賴在應(yīng)用中所用到的權(quán)限。
Merged Manifest 視圖示例
這樣的展示效果能夠幫助您快速定位到由應(yīng)用依賴所帶來(lái)的異常權(quán)限請(qǐng)求。由于運(yùn)行時(shí)的權(quán)限請(qǐng)求對(duì)話框可能會(huì)改變用戶的交互,因此這些分析數(shù)據(jù)不僅非常有用,而且還能夠使您更加全面地掌握應(yīng)用的依賴對(duì)數(shù)據(jù)的使用目的。如果有必要的話,您需要向用戶解釋何時(shí)以及為何要訪問(wèn)某些數(shù)據(jù)。
如果您在合并后的清單文件中看到任何異常的權(quán)限使用,請(qǐng)仔細(xì)審閱相關(guān)依賴庫(kù)文檔 (或者聯(lián)系開(kāi)發(fā)者),并確保您了解該權(quán)限使用的實(shí)際目的。
該權(quán)限很有可能對(duì)于您所使用的服務(wù)來(lái)說(shuō)是可選的。對(duì)于需要最小化數(shù)據(jù)使用的場(chǎng)景,您可以在應(yīng)用模塊的清單文件中添加一個(gè) "remove" 節(jié)點(diǎn)標(biāo)記 來(lái)防止該庫(kù)的權(quán)限請(qǐng)求被合并到最終的應(yīng)用中。
- tools:node="remove"/>
模塊依賴視圖
在開(kāi)發(fā)工具鏈中另一個(gè)非常實(shí)用的工具是 Gradle 的模塊依賴支持。依賴圖表通常的用法是定位構(gòu)建過(guò)程中遇到的問(wèn)題。依賴圖表還可以顯示間接依賴的信息,有助于幫助開(kāi)發(fā)者知曉由依賴庫(kù)引入的額外依賴。如需了解更多信息,請(qǐng)參閱: 查看模塊依賴項(xiàng)。
接下來(lái),我們將介紹另外一款工具,它可以幫助您更好地了解應(yīng)用中的數(shù)據(jù)訪問(wèn)情況。
數(shù)據(jù)訪問(wèn)審計(jì)
隨著應(yīng)用復(fù)雜性的提高 (包括您團(tuán)隊(duì)規(guī)模的不斷擴(kuò)大),在應(yīng)用的開(kāi)發(fā)過(guò)程中很難直觀地檢查與 SDK 相關(guān)隱私數(shù)據(jù)的訪問(wèn)情況。
Android 11 引入了 數(shù)據(jù)訪問(wèn)審計(jì) 的特性,它可以幫助開(kāi)發(fā)者確認(rèn)在應(yīng)用使用過(guò)程中哪段代碼訪問(wèn)了數(shù)據(jù)。該特性可以讓您將隱私數(shù)據(jù)與應(yīng)用中的業(yè)務(wù)場(chǎng)景相關(guān)聯(lián),比如 "點(diǎn)咖啡" 或者 "與朋友分享"。進(jìn)而定位任何異常的數(shù)據(jù)訪問(wèn)操作,并確定哪個(gè)模塊或者應(yīng)用場(chǎng)景執(zhí)行了訪問(wèn)操作。
如需使用該特性,首先創(chuàng)建一個(gè) context 對(duì)象,并且為其關(guān)聯(lián)一個(gè) "屬性標(biāo)簽",該標(biāo)簽和某個(gè)業(yè)務(wù)場(chǎng)景相關(guān),比如 "點(diǎn)咖啡"。您可以在 OrderCoffeeActivity.onCreate() 方法內(nèi)實(shí)現(xiàn)這些。
- attributionContext = createAttributionContext("orderCoffee")
您可以在之后開(kāi)發(fā)框架的 API 調(diào)用中將上面創(chuàng)建的 attributionContext 作為 Context 類型的參數(shù)進(jìn)行使用。
接下來(lái),設(shè)置一個(gè)回調(diào),當(dāng)隱私數(shù)據(jù)被訪問(wèn)的時(shí)候會(huì)調(diào)用該回調(diào)。在回調(diào)內(nèi)部,您可以獲取 attributionTag (上面所設(shè)置的屬性標(biāo)簽),并提取堆棧信息或者集成您自己的應(yīng)用分析方法。
- val appOpsCallback = object : AppOpsManager.OnOpNotedCallback() {
- // 當(dāng)您的應(yīng)用訪問(wèn)了隱私數(shù)據(jù)的時(shí)候,該回調(diào)會(huì)在應(yīng)用訪問(wèn)隱私數(shù)據(jù)的時(shí)候被調(diào)用
- // 比如聯(lián)系人數(shù)據(jù)
- override fun onNoted(syncNotedAppOp: SyncNotedAppOp) {
- logDataAccess(syncNotedAppOp.op,
- // 這里會(huì)返回上面創(chuàng)建 attributionContext 的時(shí)候所傳入的標(biāo)簽字符串,
- // 比如,這里就是 “orderCoffee”
- syncNotedAppOp.attributionTag,
- Throwable().stackTrace.toString())
- }
數(shù)據(jù)訪問(wèn)審計(jì)同時(shí)支持同步和異步兩種 API 調(diào)用,并且可以在 Android 11 及之后的設(shè)備上使用。如需了解更多信息,請(qǐng)參閱: 數(shù)據(jù)訪問(wèn)審計(jì)。
小結(jié)
Android 11 中新增的 Merged Manifest 工具、Gradle 對(duì)于模塊依賴的支持、數(shù)據(jù)訪問(wèn)審計(jì) API,均是為了能夠幫助開(kāi)發(fā)者針對(duì)應(yīng)用內(nèi)和 SDK 依賴的數(shù)據(jù)訪問(wèn)和操作提供額外的監(jiān)測(cè)。從而使您為終端用戶展現(xiàn)更好的透明性。推薦大家將這些工具整合進(jìn)現(xiàn)有的工作流程中。
此外,如果您通過(guò) Google Play 商店發(fā)布應(yīng)用,請(qǐng)確認(rèn)已經(jīng)閱讀了相關(guān)的 用戶數(shù)據(jù)策略,并且確保您使用的 SDK 是符合要求的。
本文轉(zhuǎn)自O(shè)SCHINA
本文標(biāo)題:別讓引入的 SDK 和第三方庫(kù)導(dǎo)致您應(yīng)用被下架!
本文地址:https://www.oschina.net/news/141535/pay-attention-on-3rd-library-and-sdk
資訊來(lái)源:https://my.oschina.net/androiddevs/blog/5048766
新聞名稱:別讓引入的SDK和第三方庫(kù)導(dǎo)致您應(yīng)用被下架!
網(wǎng)頁(yè)URL:http://m.fisionsoft.com.cn/article/djeohdc.html


咨詢
建站咨詢
