Android Q 開發者常見問題 | FAQ・第二期

64-bit

Q: 爲應用添加 64 位架構支持會帶來 APK 的體積增大,但 Google Play 只允許上傳最大 100MB 的 APK,這種情況應該如何解決?

A:我們強烈建議您使用 Android App Bundle,這是 Android 所支持的一種官方發佈格式,可讓您以更高效的方式開發和發佈應用。當您發佈 Android App Bundle 文件到 Google Play 時,如果 Google Play 分析並發現任何一個可能設備的下載包超過 150MB 時,將會拒絕這個 App Bundle 文件。如: 當用戶首次下載您的應用時,基礎 APK 加上爲特定設備而構建的 APK 之和不超過 150MB。除了 Android App Bundle 方式,您也可以爲不同架構發佈不同的 APK 文件。

> 關於 App Bundle 的介紹,請參閱:

https://developer.android.google.cn/platform/technology/app-bundle/?hl=zh-cn

Q: 2019 年 8 月 1 號開始沒有支持 64 位的在線應用,64 位的手機還能不能下載使用?

A: 因爲 Google Play 只提供對適配該設備的應用下載,所以除非設備同時也支持 32 位運行環境,否則將不能下載沒有支持 64 位的應用。

Android 性能

Q: 近期的 Android 版本在提升性能上做了什麼努力?

A: Android Q 爲 ART 運行時新添了多項改進。讓開發者無需更改任何代碼,便可有效縮短應用的啓動時間,減少內存消耗。例如,我們改進了 Android Q 中的 Zygote 進程,提早開啓應用進程並將其移至安全容器中,如此一來,應用便做好了隨時啓動的準備。此外,我們還在應用的系統啓動映像中加入了更多信息,例如類,並藉助線程管理加快映像文件的加載速度。

與此同時,我們還在 ART 的併發複製垃圾收集器 (Concurrent Copying Garbage Collector) 中加入了分代收集機制 (Generational Garbage Collection)。分代算法可以將新生代的對象單獨收集出來,這樣效率更高,而且與 Full-heap GC 相比成本更小,釋放空間也十分可觀。總體而言,引入分代算法後,ART 垃圾回收速度和 CPU 利用效率有了明顯提升,在減少垃圾的同時,幫助應用在低端設備上流暢運行。

我們在近期的 Android 版本中也加強了對後臺運行以及隱式廣播的限制,同時我們也改進了低電耗模式。在 Android 9 中,我們引入了一項名爲應用待機羣組 (App standby buckets) 的特性。但更重要的是,我們希望和開發者一同去改進應用的質量。

  > 關於應用待機羣組,請參閱:

https://developer.android.google.cn/about/versions/pie/power

針對非 SDK 接口的限制

Q: 非 SDK 接口的灰名單是何時確定的?是否會不定時動態更新呢?

A: 非 SDK 接口的各類名單是隨着每個 Android 版本的發佈而更新的。

   > 關於針對非 SDK 接口的限制,請查閱:

https://developer.android.google.cn/distribute/best-practices/develop/restrictions-non-sdk-interfaces

Bubbles

Q: Bubbles 爲何要放在開發者選項?

A: 在 Android Q 中,氣泡 (Bubbles) 僅作爲一項預覽功能,我們仍在探索氣泡功能的發展方向。歡迎向我們反饋您的意見,這將有助我們改進氣泡功能,並在未來以最好的形式推出該功能。

Q: 當應用在後臺被關閉後,此前顯示的氣泡 (Bubble) 還會顯示嗎?

A: 氣泡是基於通知的,也應該和通知一樣工作。

 > 關於氣泡的更多信息,請查閱

https://developer.android.google.cn/preview/features/bubbles

CameraX

Q: 現在有哪些手機已經支持 CameraX Extension,以及是否有後續的路線圖?

A:我們正協助包括三星、摩托羅拉和 LG 在內的一系列 OEM 廠商在設備上支持 CameraX Extension

Q: CameraX 中的圖像分析功能是在線還是離線的?它是否支持人臉和物品識別?

A: ImageAnalysis 只會從相機獲取實時圖像,並傳遞到開發者定義的分析器。開發者可以利用這些圖像來進行更深入的分析,如進行人臉識別。

 > 關於分析圖片的更多信息,請查閱:

https://developer.android.google.cn/training/camerax/analyze

Device ID

Q: Android Q 上禁止了對於設備 IMEI 的獲取,那麼如何更好地唯一識別設備呢?

A: 針對不同的場景,我們建議用不同的唯一標識符。

 > 請參閱下方文章,瞭解更多:

https://developer.android.google.cn/training/articles/user-data-ids

Q: Device ID 廢棄後,如何識別卸載再安裝的用戶?

A: 在 Android 8.0 或以上的版本中,可以考慮使用 SSAID (Settings.Secure.ANDROID_ID),因爲它的生成是基於設備用戶安裝應用簽名的密鑰。

Q: 在同一臺設備上,不同應用的 Android ID 是否相同?

A: 對於由不同開發者密鑰簽名的應用或同一設備上的不同用戶,Android ID (Setting.Secure.ANDROID_ID 或 SSAID) 是不一樣的。如果不同應用由同一開發者密鑰簽名,那同一用戶在這些應用間的 Android ID 是相同的。

Generic System Image (GSI)

Q: GSI 是支持所有手機硬件嗎?還是隻支持像 Pixel 這樣的標準硬件?

A: 支持使用常規系統映像 (GSI) 的設備需要滿足以下條件: 完全的 Treble 支持;可解鎖 bootloader;停用 Android 啓動時驗證 (Verify Boot)。我們測試了少量的設備,如 Moto G7/G7+、Sony XZ3、小米 Note7、MIX3,這些是支持的;同時我們發現一加 6T 有兼容性問題,我們正在修復。

Q: 怎麼在廠商手機上安裝 Android Q?

A: 如果您想安裝 Android Q Beta,可參閱:https://developer.android.google.cn/preview/devices/index.html 的有關說明。該頁面列舉了如何從 OEM 廠商獲取並安裝 Beta 版本。

Permissions

Q: 爲什麼掃描藍牙及 Wi-Fi 熱點也需要申請地理位置權限?

A: 因爲開發者可以利用這些信息來推斷用戶的位置。爲了提高用戶的透明度,Android Q 對這些功能加上了地理位置權限的要求。開發者可以使用系統的對話框來選擇 Wi-Fi 熱點。

Wi-Fi network connection API

> Wi-Fi network suggestion API

其他

Q: 關於應用內存的分析,有什麼好的工具或者方法嗎?

A: https://developer.android.google.cn/games 提供了一些運行時分析的方法。

點擊這裏提交產品反饋建議

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章