極力推薦Android 開發大總結文章:歡迎收藏
Android 開發技術文章大總結
本篇文章主要介紹 Android
開發中的部分知識點,經過閱讀本篇文章,您將收穫如下內容:html
1.Android Q 簡介
2.Android Q 隱私保護
3.Android Q兼容摺疊屏
4.Android Q 分享功能新樣式
5.Android Q更新 設置功能
6.Android Q 更新Media
7.Android Q 優化神經網絡API 1.2
8.Android Q 優化Android 基礎功能java
2019年,移動創新比以往任什麼時候候都更增強大,從5G到邊緣到邊緣顯示器甚至可摺疊屏幕的新技術。Android正處於這一創新週期的中心,而且因爲數十億設備的普遍合做夥伴生態系統,Android有助於突破硬件和軟件的界限,爲用戶帶來新的體驗和功能。android
隨着移動生態系統的發展,Android專一於幫助用戶利用最新的創新,同時確保用戶的安全和隱私始終是首要任務。基於Google Play Protect和運行時權限等工做,Android Q爲用戶帶來了許多額外的隱私和安全功能,以及可摺疊的加強功能,用於鏈接的新API,新媒體編解碼器和相機功能,NNAPI擴展,Vulkan 1.1支持,更快的應用啓動等等。git
今天咱們正在爲早期採用者發佈Android Q的Beta 1,併爲開發人員發佈預覽SDK。您能夠經過註冊任何Pixel設備開始使用Beta 1 (包括原始的Pixel和Pixel XL,咱們已根據大衆需求擴展支持!)請告訴咱們您的想法!繼續閱讀以瞭解Android Q中的內容,咱們將在5月份的Google I / O上看到您,咱們將分享更多內容。github
Android在中心設計了安全和隱私。隨着Android的成熟,咱們添加了一系列功能來保護用戶,例如基於文件的加密,須要應用程序在訪問敏感資源以前請求權限的操做系統控件,鎖定相機/麥克風後臺訪問,鎖定模式,加密備份,Google Play Protect(天天掃描超過500億個應用以識別可能有害的應用並將其刪除)等等。在Android Q中,咱們進行了更多加強功能以保護用戶。其中許多加強功能都是咱們在Strobe項目中工做的一部分。api
藉助Android Q,操做系統可幫助用戶更好地控制應用什麼時候獲取位置信息。與之前版本的操做系統同樣,只有在應用程序請求您許可後,應用程序才能獲取位置,而且您已授予該權限。瀏覽器
一個特別敏感的事情是應用程序未使用時(在後臺)應用程序訪問位置。Android Q容許用戶授予應用程序權限,以便永遠不會看到他們的位置,僅在應用程序正在使用(運行)時,或始終(在後臺)。安全
例如,要求用戶的食物遞送位置的應用程序是有意義的,而且用戶可能想要授予它執行該操做的能力。但因爲應用程序可能不須要位於當前正在使用的位置以外,所以用戶可能不但願授予該訪問權限。Android Q如今提供更高級別的控制。閱讀開發人員指南,瞭解有關如何針對此新控件調整應用的詳細信息。尋找即將到來的Betas中更多以用戶爲中心的改進。與此同時,咱們的目標是很是敏感,始終經過這些更改儘量多地給予開發人員注意和支持。性能優化
除了位置變化以外,咱們還會進行進一步的更新,以確保透明度,讓用戶控制並保護我的數據。網絡
在Android Q中,操做系統使用戶能夠更好地控制應用程序,控制對共享文件的訪問。用戶將可以經過新的運行時權限控制應用程序對照片和視頻或音頻集合的訪問。對於下載,應用必須使用系統文件選擇器,容許用戶決定應用能夠訪問哪些下載文件。對於開發人員,應用程序能夠在外部存儲上使用共享區域的方式發生了變化。請務必閱讀Scoped Storage更改以獲取詳細信息。
咱們還看到,當應用程序意外跳轉到前臺並從新關注時,用戶(和開發人員!)會感到不安。爲了減小這些中斷,Android Q將阻止應用在後臺啓動活動。若是您的應用程序處於後臺而且須要快速引發用戶的注意 - 例如來電或鬧鐘 - 您可使用高優先級通知並提供全屏意圖。有關更多信息,請參閱文檔。
咱們限制訪問不可重置的設備標識符,包括設備IMEI,序列號和相似標識符。閱讀最佳實踐以幫助您爲用例選擇正確的標識符,並在此處查看詳細信息。咱們還默認鏈接到不一樣的Wi-Fi網絡時隨機化設備的MAC地址 - 這是Android 9 Pie中可選的設置。
咱們會盡早爲您提供這些更改,所以您能夠儘量多地準備時間。咱們還努力爲開發人員提供詳細的信息,咱們建議您查看有關隱私更改的詳細文檔,並當即開始測試。
在Android Q中,咱們正在啓用新方法,將用戶引入您的應用,並在從其餘應用轉換時簡化體驗。
可摺疊設備開闢了一些創新體驗和用例。爲了幫助您的應用利用這些和其餘大屏幕設備,咱們在Android Q中進行了一些改進,包括對onResume和onPause的更改,以支持多重簡歷,並在重點關注時通知您的應用。咱們還更改了resizeableActivity清單屬性的工做方式,以幫助您管理應用在可摺疊和大屏幕上的顯示方式。爲了開始構建和測試這些新設備,咱們一直在努力更新Android Emulator以支持多顯示器類型切換 - 更多細節即將推出!
當用戶想要與另外一個應用中的某人共享照片等內容時,該過程應該很快。在Android Q中,咱們使用「共享快捷方式」讓用戶更快更輕鬆,這樣用戶就能夠直接跳轉到另外一個應用程序來共享內容。開發人員能夠發佈在其應用中添加內容的特定活動的共享目標,並在共享UI中向用戶顯示這些目標。由於它們是預先發布的,因此共享UI能夠在啓動時當即加載。
共享快捷方式機制相似於應用程序快捷方式的工做方式,所以咱們擴展了ShortcutInfo API,使兩個功能的集成更加容易。新的ShareTarget AndroidX庫也支持這個新的API。這容許應用程序使用新功能,同時容許pre-Q設備使用Direct Share工做。您能夠在此處找到包含源代碼的早期示例應用。
您如今還能夠經過新的設置面板API直接在應用程序的上下文中顯示關鍵系統設置,該API利用了咱們在Android 9 Pie中引入的切片功能。
設置面板是一個浮動UI,您能夠從應用程序調用該UI以顯示用戶可能須要的系統設置,例如Internet鏈接,NFC和音量。例如,瀏覽器能夠顯示具備鏈接設置的面板,如飛行模式,Wi-Fi(包括附近的網絡)和移動數據。沒有必要離開應用程序; 用戶能夠從面板中根據須要管理設置。要顯示設置面板,只需使用新的Settings.Panel操做之一觸發意圖。
在Android Q中,咱們擴展了您的應用程序可使用Android的鏈接堆棧並添加新的鏈接API。
咱們用於掃描網絡的大多數API都須要COARSE位置權限,但在Android Q中,對於藍牙,移動電話和Wi-Fi,咱們經過要求得到FINE位置權限來增長對這些API的保護。若是您的應用只須要創建點對點鏈接或建議網絡,請查看下面改進的Wi-Fi API - 它們簡化了鏈接,不須要位置許可。
除了Android Q在鏈接到不一樣Wi-Fi網絡時提供的隨機MAC地址,咱們還添加了新的Wi-Fi標準支持,WPA3和加強型開放,以提升家庭和工做網絡以及開放/公共網絡的安全性網絡。
在Android Q中,咱們重構了Wi-Fi堆棧以改善隱私和性能,同時也改善了管理物聯網設備和建議互聯網鏈接等常見用例 - 無需位置許可。
經過網絡鏈接API,能夠更輕鬆地經過本地Wi-Fi管理物聯網設備,實現配置,下載或打印等對等功能。應用程序經過將首選SSID和BSSID指定爲WiFiNetworkSpecifiers來間接啓動鏈接請求。該平臺處理Wi-Fi掃描自己並在Wi-Fi選擇器中顯示匹配的網絡。當用戶選擇時,平臺會自動設置鏈接。
該網絡建議的API容許應用表面優選Wi-Fi網絡給用戶用於互聯網鏈接。應用程序經過提供網絡和憑據的排序列表來間接啓動鏈接,如WifiNetworkSuggestions。該平臺將在這些網絡的範圍內基於過去的性能無縫鏈接。
您如今能夠經過啓用高性能和低延遲模式在Android Q中請求自適應Wi-Fi。若是低延遲對用戶體驗很重要,例如實時遊戲,主動語音呼叫和相似用例,這些將是很是有益的。
要使用新的性能模式,請使用或調用WifiManager.WifiLock.createWifiLock()。在這些模式下,平臺與設備固件配合使用,以最低功耗知足要求。WIFI_MODE_FULL_LOW_LATENCY``WIFI_MODE_FULL_HIGH_PERF
移動設備上的許多相機能夠經過模糊相對於主體的前景或背景來模擬窄景深。它們捕獲圖像中各個點的深度元數據,並對圖像應用靜態模糊,而後丟棄深度元數據。
從Android Q開始,應用能夠請求動態深度圖像,該圖像由與深度相關元素相關的JPEG,XMP元數據以及嵌入在廣告支持的設備上的同一文件中的深度和置信度圖組成。
請求JPEG +動態深度圖像使您能夠在應用程序中提供專門的模糊和散景選項。您甚至能夠在未來使用數據建立3D圖像或支持AR攝影用例。咱們正在將Dynamic Depth做爲生態系統的開放格式,咱們正在與咱們的設備製造商合做夥伴合做,使其在運行Android Q及更高版本的設備上可用。
Android Q引入了對開源視頻編解碼器AV1的支持。這容許媒體提供商使用更少的帶寬將高質量的視頻內容流式傳輸到Android設備。此外,Android Q支持使用Opus(一種針對語音和音樂流優化的編解碼器)的音頻編碼,以及支持它的設備上的高動態範圍視頻的HDR10 +。
該MediaCodecInfo API引入了一個更簡單的方法來肯定視頻渲染的Android設備的能力。對於任何給定的編解碼器,您可使用VideoCodecCapabilities.getSupportedPerformancePoints()獲取支持的大小和幀速率列表。這容許您選擇要在任何給定設備上呈現的最佳質量的視頻內容。
對於使用C ++執行音頻處理的應用程序,Android Q引入了原生MIDI API,經過NDK與MIDI設備進行通訊。此API容許使用非阻塞讀取在音頻回調內檢索MIDI數據,從而實現MIDI消息的低延遲處理。試試這裏的示例應用程序和源代碼吧。
爲了使遊戲和圖形開發人員更加一致,咱們正在爲Vulkan上構建的全部設備開發標準的,可更新的OpenGL驅動程序。在Android Q中,咱們在Android設備上的Vulkan上添加了對ANGLE的實驗性支持。ANGLE是一個圖形抽象層,旨在實現跨實現的高性能OpenGL兼容性。經過ANGLE,使用OpenGL ES的許多應用程序和遊戲能夠充分利用Vulkan的性能和穩定性,並從Android設備上一致的,獨立於供應商的ES實施中受益。在Android Q中,咱們計劃在路線圖中支持OpenGL ES 2.0,ES 3.0。
咱們將經過更多OpenGL功能,錯誤修復和性能優化來擴展實現。有關Android當前ANGLE支持,如何使用以及咱們將來計劃的詳細信息,請參閱文檔。您能夠經過選擇「設置」中的開發人員選項來開始使用咱們的初始支持進行測試。今天試一試!
咱們將繼續擴大Vulkan對Android 的影響,這是咱們爲高性能3D圖形實現的低開銷,跨平臺API。咱們的目標是讓Android上的Vulkan成爲普遍支持且一致的圖形開發人員API。咱們正與咱們的設備製造商合做夥伴共同努力,使Vulkan 1.1成爲運行Android Q及更高版本的全部64位設備的要求,並推薦全部32位設備。展望將來,這將有助於爲應用和遊戲提供統一的高性能圖形API。
自2017年引入神經網絡API(NNAPI)以來,咱們不斷擴展支持的操做數量並改進現有功能。在Android Q中,咱們添加了60個新操做,包括ARGMAX,ARGMIN,量化LSTM,以及一系列性能優化。這爲加速更大範圍的模型奠基了基礎 - 例如用於物體檢測和圖像分割的模型。咱們正在與硬件供應商和流行的機器學習框架(如TensorFlow)合做,以優化和推出對NNAPI 1.2的支持。
Android Q引入了ART運行時的幾項新改進,可幫助應用程序更快地啓動並消耗更少的內存,而無需開發人員的任何工做。
自Android Nougat以來,ART提供了配置文件引導優化(PGO),它經過識別和預編譯代碼中常常執行的部分來加速應用程序啓動。爲了幫助初始應用啓動,Google Play如今提供基於雲的配置文件以及APK。這些是匿名的聚合ART配置文件,讓ART在應用程序運行以前預編譯部分應用程序,從而爲整個優化過程提供了重要的啓動。基於雲的配置文件使全部應用程序受益,而且它們已經可用於運行Android P及更高版本的設備。
咱們還在繼續改進ART自己。例如,在Android Q中,咱們經過提早啓動應用程序進程並將其移至安全容器來優化Zygote進程,所以能夠當即啓動。咱們將更多信息存儲在應用程序的堆映像中,例如類,並使用線程來更快地加載映像。咱們還在ART的Concurrent Copying(CC)垃圾收集器中添加了Generational Garbage Collection。分代CC更有效率,由於它分別收集年輕代對象,與全堆GC相比,成本更低,同時仍然能夠回收大量空間。這使得垃圾收集總體上在時間和CPU方面更加高效,減小了jank並幫助應用程序在低端設備上更好地運行。
BiometricPrompt是咱們的統一認證框架,用於支持系統級的生物識別。在Android Q中,咱們擴展了對諸如face之類的被動身份驗證方法的支持,以及添加隱式和顯式身份驗證流程。在顯式流程中,用戶必須在身份驗證期間明確確認TEE中的事務。隱式流程設計用於具備被動身份驗證的事務的輕量級替代方案。咱們還在須要時改進了設備憑據的後備。
Android Q增長了對TLS 1.3的支持,TLS 1.3是對TLS標準的重大修訂,包括性能優點和加強的安全性。咱們的基準測試代表,與TLS 1.2相比,使用TLS 1.3能夠將安全鏈接的速度提升40%。默認狀況下,爲全部TLS鏈接啓用TLS 1.3。有關詳細信息,請參閱文檔。
咱們所關心的另外一件事是確保應用程序在操做系統發生變化和發展時順利運行。使用非SDK API的應用程序可能會面臨用戶崩潰和開發人員緊急部署的風險。在Android Q中,咱們將繼續咱們在Android P中開始的長期努力,將應用程序轉移到僅使用公共API。咱們知道,將您的應用從非SDK API移開須要時間,所以咱們會提早 通知您。
在Android Q中,咱們限制訪問更多非SDK接口,並要求您使用公共等效項。爲了幫助您進行轉換並防止您的應用遭遇破壞,咱們僅在您的應用定位到Android Q時才啓用限制。咱們會根據您的要求繼續添加公共替代API; 若是沒有符合您用例的公共API,請告知咱們。
測試應用程序以使用非SDK接口 很是重要。咱們建議使用StrictMode方法detectNonSdkApiUsage()來警告您的應用程序什麼時候經過反射或JNI訪問非SDK API。即便此時API被免除(灰名單),最好規劃將來並消除其使用以減小兼容性問題。有關Android Q中的限制的更多詳細信息,請參閱開發人員指南。
咱們正在努力讓全部應用程序充分利用最新版Android中的安全性和性能功能。今年晚些時候,Google Play會要求您在新的應用和更新中將應用的targetSdkVersion設置爲28(Android 9 Pie)。根據這些更改,Android Q會在用戶首次運行面向API級別23(Android Marshmallow)以前的平臺的應用時向用戶發出警告。如下是幫助您遷移應用的資源清單。
咱們還將生態系統推向了64位設備的準備狀態。今年晚些時候,Google Play將須要在全部應用中支持64位。若是您的應用使用原生SDK或庫,請記住,您須要提供這些SDK或庫的64位兼容版本。有關如何作好準備的詳細信息,請參閱開發人員指南。
因爲可能會影響您的應用的重要隱私功能,咱們建議您當即開始測試。特別是,您須要啓用和測試Android Q存儲更改,新位置權限狀態,後臺應用啓動限制以及設備標識符限制。有關詳細信息, 請參閱隱私文檔
要開始使用,只需將您當前的應用從Google Play安裝到運行Android Q Beta 的設備或Android虛擬設備上,而後完成用戶流程。該應用應該運行而且看起來很棒,而且正確處理全部應用的Android Q 行爲更改。若是您發現問題,咱們建議您在當前應用中修復它們,而不會更改定位級別。請查看有關步驟和建議時間表的遷移指南。
接下來,儘快將應用的targetSdkVersion更新爲「Q」。這使您可使用Android Q中的全部隱私和安全功能測試您的應用,以及針對Q的應用的任何其餘行爲更改。
準備就緒後,深刻了解Android Q並瞭解可在應用中使用的新功能和API。以API diff報告,Android Q Beta API參考和開發人員指南爲出發點。此外,在Android Q Beta開發人員網站上,您能夠找到用於報告問題的發行說明和支持資源。
要使用Android Q構建,請將Android Q Beta SDK和工具下載到Android Studio 3.3或更高版本,並按照這些說明配置您的環境。若是您須要針對Android Q相關更改的最新修補程序,咱們建議您使用Android Studio 3.5或更高版本。
這很容易 - 您能夠在這裏註冊以在任何Pixel設備上經過無線方式得到Android Q Beta更新(今年咱們支持全部三代Pixel - Pixel 3,Pixel 2,甚至是原始的Pixel! )。這些設備的可下載系統映像也可用。若是您沒有Pixel設備,可使用Android Emulator,並經過Android Studio中的SDK Manager下載最新的仿真器系統映像。
咱們計劃在整個預覽期間按期更新預覽系統圖像和SDK。隨着Beta計劃的推動,咱們將有更多功能可供分享。
一如既往,您的反饋很是重要,請告訴咱們您的想法 - 咱們越早聽到您的意見,咱們就能夠整合您的反饋意見。當您發現問題時,請在此處報告。咱們有單獨的熱門列表來提交平臺問題,應用程序兼容性問題和第三方SDK問題。
至此,本篇已結束,若有不對的地方,歡迎您的建議與指正。同時期待您的關注,感謝您的閱讀,謝謝!
若有侵權,請聯繫小編,小編對此深感抱歉,屆時小編會刪除文章,當即中止侵權行爲,請您多多包涵。