史上最全的遷移Android 11詳情

Android 10 遷移 Android 11
官方地址:https://developer.android.com/distribute/best-practices/develop/target-sdk?hl=zh-cn#prepie

image.png

主要是2個部分 隱私權(quán)和安全性

隱私權(quán)

從 Android 11 開始操灿,使用分區(qū)存儲模型的app只能訪問自身的應(yīng)用專用緩存文件搅方。
從 Android 11 開始,應(yīng)用無法在外部存儲設(shè)備上創(chuàng)建自己的應(yīng)用專用目錄黔州。如需訪問系統(tǒng)為您的應(yīng)用提供的目錄者疤,請調(diào)用 getExternalFilesDirs()福澡。

強制執(zhí)行分區(qū)存儲:

對外部存儲目錄的訪問僅限于應(yīng)用專屬目錄,以及應(yīng)用已創(chuàng)建的特定類型的媒體驹马。

**什么是應(yīng)用專屬存儲空間革砸?**

存儲僅供應(yīng)用使用的文件,可以存儲到內(nèi)部存儲卷中的專屬目錄或外部存儲空間中的其他專屬目錄糯累。使用內(nèi)部存儲空間中的目錄保存其他應(yīng)用不應(yīng)訪問的敏感信息算利。(只有應(yīng)用自己可以訪問)
從內(nèi)部存儲空間訪問,可以使用 getFilesDir() 或 getCacheDir() 方法泳姐;從內(nèi)部存儲空間訪問不需要任何權(quán)限 其他應(yīng)用不能訪問 app卸載后文件將移除
從外部存儲空間訪問效拭,可以使用 getExternalFilesDir() 或 getExternalCacheDir() 方法 如果應(yīng)用在搭載 Android 4.4(API 級別 19)或更高版本的設(shè)備上運行,從外部存儲空間訪問不需要任何權(quán)限 其他應(yīng)用可以訪問 app卸載后文件不會被移除

app使用分區(qū)存儲模式,將應(yīng)用專有的文件缎患、媒體文件以及其他類型的文件保存到其專屬的位置慕的,并通過這些位置訪問這些文件。

Android 10的應(yīng)用仍可請求 requestLegacyExternalStorage 屬性挤渔。應(yīng)用更新為以 Android 11 為目標(biāo)平臺后肮街,系統(tǒng)會忽略 requestLegacyExternalStorage 標(biāo)記)

自動重置權(quán)限

如果用戶幾個月未與應(yīng)用互動,系統(tǒng)會自動重置應(yīng)用的敏感權(quán)限判导。此設(shè)置不會影響大多數(shù)應(yīng)用嫉父。如果您的應(yīng)用主要在后臺運行,無需用戶與之互動眼刃,您可以考慮請求用戶停用自動重置功能

**什么是自動重置绕辖?**

≥android11的系統(tǒng)數(shù)月未使用,系統(tǒng)會通過自動重置用戶已授予應(yīng)用的運行時敏感權(quán)限來保護(hù)用戶數(shù)據(jù)鸟整。此操作與用戶在系統(tǒng)設(shè)置中查看權(quán)限并將應(yīng)用的訪問權(quán)限級別更改為拒絕的做法效果一樣引镊。可考慮篮条,每次在使用的時候申請弟头。

后臺位置信息訪問權(quán)限

≥30API(≥Android11) 針對前臺位置信息獲取權(quán)限和后臺位置信息獲取權(quán)限,應(yīng)用必須分開進(jìn)行請求涉茧。后臺位置信息權(quán)限只能在應(yīng)用設(shè)置中授予赴恨,而不是通過運行時權(quán)限對話框授予該權(quán)限。

軟件包可見性

當(dāng)應(yīng)用查詢設(shè)備上已安裝應(yīng)用和服務(wù)的列表時伴栓,系統(tǒng)會過濾返回的列表伦连。 如果您使用文字轉(zhuǎn)語音或語音識別服務(wù),則需在清單文件中為這些服務(wù)添加
<queries> 元素
也就是說钳垮,Android11中惑淳,如果你想去獲取其他應(yīng)用的信息,比如包名饺窿,名稱等等歧焦,不能直接獲取了,必須在清單文件中添加<queries>元素肚医,告知系統(tǒng)你要獲取哪些應(yīng)用信息或者哪一類應(yīng)用

隱私權(quán)

壓縮的 resource.arsc 文件不再受支持

如果以 Android 11(API 級別 30)或更高版本為目標(biāo)平臺的應(yīng)用包含壓縮的 resources.arsc 文件或者如果此文件未按 4 字節(jié)邊界對齊绢馍,應(yīng)用將無法安裝。
https://developer.android.com/about/versions/11/behavior-changes-11?hl=zh-cn#change-details_3

現(xiàn)在需要使用 APK 簽名方案 v2

Android 11(API 級別 30)必須使用 APK 簽名方案 v2 或更高版本進(jìn)行簽名肠套。用戶無法在搭載 Android 11 的設(shè)備上安裝或更新僅通過 APK 簽名方案 v1 簽名的應(yīng)用

注意:為支持運行舊版 Android 的設(shè)備舰涌,除了使用 APK 簽名方案 v2 或更高版本為您的 APK 簽名之外,您還應(yīng)繼續(xù)使用 APK
簽名方案 v1 進(jìn)行簽名你稚。

Firebase

≥Android11(API 級別 30)瓷耙,在搭載 Android 6.0(API 級別 23)或更高版本的設(shè)備上會停用 Firebase JobDispatcher 和 GcmNetworkManager API 調(diào)用朱躺。如需了解遷移,請參閱從 官方文檔哺徊,下面是地址
Firebase JobDispatcher 遷移到 WorkManager
(https://developer.android.com/topic/libraries/architecture/workmanager/migrating-fb?hl=zh-cn)
從 GCMNetworkManager 遷移到 WorkManager
(https://developer.android.com/topic/libraries/architecture/workmanager/migrating-gcm?hl=zh-cn)

設(shè)備到設(shè)備文件傳輸

如果您的應(yīng)用≥Android11(API 級別 30)室琢,您將無法使用 allowBackup 屬性停用應(yīng)用文件的設(shè)備到設(shè)備遷移。系統(tǒng)會自動啟用此功能落追。
不過盈滴,即使您的應(yīng)用≥Android11(API 級別 30),您也可以通過將 allowBackup 屬性設(shè)為 false 來停用應(yīng)用文件的云端備份和恢復(fù)

OnSharedPreferenceChangeListener 的回調(diào)變更

如果您的應(yīng)用≥Android11(API 級別 30)轿钠,現(xiàn)在每次調(diào)用 Editor.clear 時巢钓,都會使用 null 鍵回調(diào) OnSharedPreferenceChangeListener.onSharedPreferenceChanged。

限制非 SDK 接口疗垛。

對于以 API 級別 30 為目標(biāo)平臺的應(yīng)用症汹,建議不要使用非 SDK 接口,因為其中一些接口現(xiàn)已被屏蔽贷腕。如需查看已屏蔽的非 SDK 接口的完整列表背镇,請參閱目前在 Android 11 中被屏蔽的非 SDK 接口。

非 SDK 接口限制

Android 11 包含更新后的受限制非 SDK 接口列表(基于與 Android 開發(fā)者之間的協(xié)作以及最新的內(nèi)部測試)泽裳。在限制使用非 SDK 接口之前瞒斩,我們會盡可能確保有可用的公開替代方案。
如果您不確定自己的應(yīng)用是否使用了非 SDK 接口涮总,則可以測試該應(yīng)用胸囱,進(jìn)行確認(rèn)。如果您的應(yīng)用依賴于非 SDK 接口瀑梗,您應(yīng)該開始計劃遷移到 SDK 替代方案烹笔。然而,我們知道某些應(yīng)用具有使用非 SDK 接口的有效用例抛丽。如果您無法為應(yīng)用中的功能找到無需使用非 SDK 接口的替代方案谤职,則應(yīng)請求添加新的公共 API。
如需詳細(xì)了解此 Android 版本中的變更亿鲜,請參閱 Android 11 中有關(guān)限制非 SDK 接口的更新搀暑。如需全面了解有關(guān)非 SDK 接口的詳細(xì)信息电湘,請參閱對非 SDK 接口的限制拗慨。

堆指針標(biāo)記

堆指針在最高有效字節(jié) (MSB) 中有一個非零標(biāo)記搀捷。錯誤地使用指針的應(yīng)用(包括修改 MSB 的應(yīng)用)現(xiàn)在會崩潰或遇到其他問題锅很。這是支持未來啟用了 ARM 內(nèi)存標(biāo)記擴展 (MTE) 的硬件所必需的變更其馏。如需了解詳情,請參閱已加標(biāo)記的指針(https://source.android.com/devices/tech/debug/tagged-pointers?hl=zh-cn)

如需停用此功能爆安,請參閱 allowNativeHeapPointerTagging (https://developer.android.com/guide/topics/manifest/application-element?hl=zh-cn#allowNativeHeapPointerTagging)清單文檔

消息框的更新

來自后臺的自定義消息框被屏蔽叛复,出于安全方面的考慮,同時也為了保持良好的用戶體驗,如果包含自定義視圖的消息框是以 Android 11 或更高版本為目標(biāo)平臺的應(yīng)用從后臺發(fā)送的褐奥,系統(tǒng)會屏蔽這些消息框咖耘。

注意:后臺無法彈出自定義Toast(注意限定條件:后臺、自定義)
如果位于后臺撬码,只能彈出原生 Toast儿倒。如果不位于后臺,可以彈出自定義Toast呜笑。Toast.getView() Toast.setView() 方法廢棄夫否,現(xiàn)在會返回空值

//下面是自定義Toast 顯示文本+圖片的Toast,已測試過

public static void showImageToas(Context context,String message){
    View toastview= LayoutInflater.from(context).inflate(R.layout.toast_image_layout,null);
    TextView text = (TextView) toastview.findViewById(R.id.tv_message);
    text.setText(message);    //要提示的文本
    Toast toast=new Toast(context);   //上下文
    toast.setGravity(Gravity.CENTER,0,0);   //位置居中
    toast.setDuration(Toast.LENGTH_SHORT);  //設(shè)置短暫提示
    toast.setView(toastview);   //把定義好的View布局設(shè)置到Toast里面
    toast.show();
}

消息框回調(diào)
如果您希望在消息框(文本消息框或自定義消息框)出現(xiàn)或消失時收到通知叫胁,請使用 Android 11 中添加的 addCallback() 方法凰慈。

Toast消息框 API 變更

以 Android 11 或更高版本為目標(biāo)平臺的應(yīng)用 會發(fā)現(xiàn)Toast框受到以下負(fù)面影響:

getView() 方法返回 null。
以下方法的返回值并不反映實際值驼鹅,因此您不應(yīng)在應(yīng)用中依賴于它們:
getHorizontalMargin()
getVerticalMargin()
getGravity()
getXOffset()
getYOffset()
以下方法是空操作微谓,因此您的應(yīng)用不應(yīng)使用它們:
setMargin()
setGravity()

連接

以 Android 11 為目標(biāo)平臺的應(yīng)用現(xiàn)在必須具備 Manifest.permission.WRITE_APN_SETTINGS 特權(quán),才能讀取或訪問電話提供程序 APN 數(shù)據(jù)庫输钩。如果在不具備此權(quán)限的情況下嘗試訪問 APN 數(shù)據(jù)庫豺型,會生成安全異常。

無障礙服務(wù)

**在清單文件中聲明與 TTS 引擎的交互**
由于軟件包可見性發(fā)生了變更张足,因此以 Android 11 為目標(biāo)平臺且與文字轉(zhuǎn)語音 (TTS) 引擎交互的應(yīng)用需要將以下 <queries> 元素添加到其清單文件中:

    <queries>
       <intent>
         <action
            android:name="android.intent.action.TTS_SERVICE" />
      </intent>
    </queries>


**在元數(shù)據(jù)文件中聲明“無障礙”按鈕使用情況 **
從 Android 11 開始触创,您的無障礙服務(wù)無法在運行時聲明與系統(tǒng)的“無障礙”按鈕相關(guān)聯(lián)。如果您將 AccessibilityServiceInfo.FLAG_REQUEST_ACCESSIBILITY_BUTTON 附加到 AccessibilityServiceInfo 對象的 flags 屬性为牍,框架就不會將“無障礙”按鈕回調(diào)事件傳遞給您的服務(wù)哼绑。

如需在無障礙服務(wù)中收到無障礙回調(diào)事件,請使用無障礙服務(wù)元數(shù)據(jù)文件聲明您的服務(wù)與“無障礙”按鈕的關(guān)聯(lián)碉咆。在 accessibilityFlags 屬性的定義中添加 flagRequestAccessibilityButton 值抖韩。無障礙服務(wù)元數(shù)據(jù)文件的常用位置為 res/raw/accessibilityservice.xml。

相機

媒體 intent 操作需要系統(tǒng)默認(rèn)相機

從 Android 11 開始疫铜,只有預(yù)裝的系統(tǒng)相機應(yīng)用可以響應(yīng)以下 intent 操作:
android.media.action.VIDEO_CAPTURE
android.media.action.IMAGE_CAPTURE
android.media.action.IMAGE_CAPTURE_SECURE
如果有多個預(yù)裝的系統(tǒng)相機應(yīng)用可用茂浮,系統(tǒng)會顯示一個對話框,供用戶選擇應(yīng)用壳咕。如果您希望自己的應(yīng)用使用特定的第三方相機應(yīng)用來代表其捕獲圖片或視頻席揽,可以通過為 intent 設(shè)置軟件包名稱或組件來使這些 intent 變得明確。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末谓厘,一起剝皮案震驚了整個濱河市幌羞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌竟稳,老刑警劉巖属桦,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件熊痴,死亡現(xiàn)場離奇詭異,居然都是意外死亡聂宾,警方通過查閱死者的電腦和手機果善,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來系谐,“玉大人巾陕,你說我怎么就攤上這事∥蹬福” “怎么了惜论?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長止喷。 經(jīng)常有香客問我馆类,道長,這世上最難降的妖魔是什么弹谁? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任乾巧,我火速辦了婚禮,結(jié)果婚禮上预愤,老公的妹妹穿的比我還像新娘沟于。我一直安慰自己,他們只是感情好植康,可當(dāng)我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布旷太。 她就那樣靜靜地躺著,像睡著了一般销睁。 火紅的嫁衣襯著肌膚如雪供璧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天冻记,我揣著相機與錄音睡毒,去河邊找鬼。 笑死冗栗,一個胖子當(dāng)著我的面吹牛演顾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播隅居,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼钠至,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了胎源?” 一聲冷哼從身側(cè)響起棕洋,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎乒融,沒想到半個月后掰盘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡赞季,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年愧捕,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片申钩。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡次绘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出撒遣,到底是詐尸還是另有隱情邮偎,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布义黎,位于F島的核電站禾进,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏廉涕。R本人自食惡果不足惜泻云,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望狐蜕。 院中可真熱鬧宠纯,春花似錦、人聲如沸层释。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贡羔。三九已至廉白,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間治力,已是汗流浹背蒙秒。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留宵统,地道東北人晕讲。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像马澈,于是被迫代替她去往敵國和親瓢省。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內(nèi)容