感謝大家關注 Android 開發(fā)者峰會 2019!在本次峰會內(nèi)容連載期間我們收到了不少來自大家的 Android 開發(fā)問題,由于篇幅所限這里精選一部分具有代表性的問題做出解答。
本次開發(fā)者峰會全部演講的中文字幕視頻已經(jīng)全部發(fā)布,覆蓋到了目前 Android 應用和游戲開發(fā)領域的主要課題。歡迎您前往我們的官方網(wǎng)站或播放列表頁面觀看。
Android 開發(fā)者峰會 2019 官方網(wǎng)站
https://developer.android.google.cn/dev-summit-recap
Bilibili 播放列表
https://space.bilibili.com/64169458/channel/detail?cid=91608
Q 1: Jetpack Compose 會給 Android 應用的架構(gòu)帶來哪些變化?
A: Jetpack Compose 設計的初衷是盡可能不影響大家使用架構(gòu)組件打造好的內(nèi)容,并在 UI 方面確保幫助開發(fā)者們高效打造符合架構(gòu)組件一貫高品質(zhì)的體驗。請查看開發(fā)者預覽版本,歡迎通過 Github 提交您的反饋!
開發(fā)者預覽版本
https://developer.android.google.cn/jetpack/compose
Github
https://github.com/android/compose-samples/tree/master/JetNews
Q 2: 有沒有可能脫離其他 Jetpack 庫單獨使用 CameraX?
A: CameraX 目前依賴 Jetpack Lifecycle,但并沒有依賴其他組件 (如 ViewModel 和 LiveData)。我們接下來會逐步在 CameraX 中引入更多針對 Jetpack 的兼容性功能。
Q 3: 接下來 Wear OS 會有怎樣的進展?
A: Google 很重視 Wear OS 以及合作伙伴生態(tài)系統(tǒng)的發(fā)展,許多合作伙伴也在不久前發(fā)布了全新的秋季手表產(chǎn)品陣容。在軟件方面,我們也在繼續(xù)投入資源打造更好的用戶體驗,比如磁貼交互,以及使用滑動操作進入全屏信息界面。這次開發(fā)者峰會上我們沒有面向開發(fā)者的新消息,但我們一直在思考如何為 Wear OS 帶來更多的兼容性。請大家繼續(xù)保持關注。
Q 4: Google 有沒有一些展示 Kotlin 協(xié)程和 Android 架構(gòu)組件的例子,比如使用 MVVM 模式?
A: 我們有不少這樣的例子。比如在 Github 上就有好幾個展示架構(gòu)組件以及 LiveData 的例子,并且有提供 Codelab。這些例子也在我們的 Udacity 課程和文章中有展示。
GitHub 上的示例
https://github.com/android/architecture-components-samples/tree/master/LiveDataSample
將 Kotlin 協(xié)程與架構(gòu)組件一起使用
https://developer.android.google.cn/topic/libraries/architecture/coroutines
Q 5: 我設置了一個 15 分鐘運行一次的循環(huán),其約束條件是需要可以訪問網(wǎng)絡。為什么在網(wǎng)絡一直可用的情況下,第二次運行 1 小時也沒有出現(xiàn)?
A: 在沒有提供更多細節(jié)的情況下很難判斷具體原因,可能是應用被設備強行結(jié)束,或者是約束條件由于某種原因并沒有得到滿足。
Q 6: 有沒有辦法修改 Android 模擬器默認的電話號碼和國家碼?
A: 目前沒有辦法修改。
Q 7: 請問 ViewPager2 的穩(wěn)定版大概會在何時可用?
A: ViewPager2 的穩(wěn)定版已在 2019 年 11 月上線啦!大家久等了。
https://developer.android.google.cn/jetpack/androidx/releases/viewpager2#1.0.0
Q 8: Kotlin 適合企業(yè)開發(fā)者來使用嗎?
A: Kotlin 并不僅限于 Android 開發(fā),事實上在后端、Web 乃至桌面上都有很豐富的用例和強大的支持。
Q 9: Android Studio 的速度有改善嗎?
A: 有。我們通過 Project Marble 等諸多環(huán)節(jié)的努力進一步提升了 Android Studio 在性能和穩(wěn)定性方面的表現(xiàn),包括但不限于 UI 卡頓、內(nèi)存消耗、增量注解處理速度等諸多指標。另外,我們也會針對開發(fā)者的開發(fā)環(huán)境和項目給出建議分配給 Studio 的內(nèi)存大小,從而進一步改善其性能表現(xiàn)。
Q 10: 隨著 Android Studio 的功能越來越復雜,有沒有計劃降低或者優(yōu)化其內(nèi)存需求?
A: 我們正在著手考慮這一點。
Q 11: 單一 Activity 或者多個 Activity,哪一種實現(xiàn)更優(yōu)?
A: 我們建議開發(fā)者采用單一 Activity,這樣能帶來更好的用戶體驗。如果開發(fā)者打算提供深鏈接,也可以考慮多 Activity。
Q 12: 為什么 Android 每年會推出一個版本?會不會太快了?
A: 圍繞我們的技術演進速度本就很快,更加上各種全新硬件的涌現(xiàn)、以及用戶體驗訴求的變遷,使得我們需要讓 Android 平臺和這些趨勢保持同步。但我們也在努力確保開發(fā)者能有充裕的時間跟上平臺演進的節(jié)奏,并會在盡可能早的時間點讓開發(fā)者參與到平臺演進的過程中來。
Q 13: Project Mainline 和 Project Treble 有什么區(qū)別?
A: 考慮到 FAQ 的篇幅,這里簡要概述一下。Project Treble 可以認為是 Android OS 和底層的硬件之間的一條線,這條線的存在可以確保 Android 設備開發(fā)商能更快、更平順地支持最新的 Android。而 Project Mainline 則可以理解為 Treble 上的一條條豎線,這些豎線組成了 OS,而通過 Project Mainline 我們可以做到在不發(fā)布完整 OS 的情況下更新操作系統(tǒng)組件。
Q 14: 我們何時可以在生產(chǎn)環(huán)境使用 CameraX?
A: CameraX 目前仍然在 Alpha 階段。我們建議開發(fā)者在生產(chǎn)環(huán)境至少使用 Beta 版本的庫,請大家關注 CameraX 的后續(xù)發(fā)布。
Q 15: 我現(xiàn)在在使用 Camera 1,我是該遷移至 Camera 2 還是 CameraX?我應該基于什么理由做出決策?
A: CameraX 的學習曲線比 Camera 2 更友好。但如果您打算實現(xiàn)更多自定義的或者完整的攝像頭功能,Camera 2 會提供更多靈活性。另外,針對 API 19 或以前的用戶,請使用 Camera 1,其他的用戶請使用 CameraX,因為 CameraX 可以覆蓋絕大多數(shù)用戶。
Q 16: CameraX 如何處理多個攝像頭的數(shù)據(jù)流?
A: 從 Android 9 開始我們引入了新的邏輯攝像頭 API,它會將多個物理攝像頭封裝成一個邏輯攝像頭供開發(fā)者使用。
Q 17: Compose 是否相比較 LiveData 數(shù)據(jù)綁定更優(yōu)?
A: 這是達到同一個目的的兩種做法,我們鼓勵大家做出自己的嘗試和選擇。
Q 18: 我對 Compose 很感興趣,我該從何學起?
A: 我們的開發(fā)者網(wǎng)站上開設了專區(qū),請務必前往查看。
Jetpack Compose
https://developer.android.google.cn/jetpack/compose
Github 上的示例
https://github.com/android/compose-samples/tree/master/JetNews
Q 19: Jetpack Compose 支持使用約束布局來構(gòu)建動態(tài) UI 嗎?
A: 我們正在努力加入對約束布局的支持。
Q 20: 在切換至深色模式時,是推薦使用深灰色背景還是純黑色背景?
A: 深灰色背景可以在省電的同時做到在視覺上更加柔和,請開發(fā)者結(jié)合自己的應用視覺效果進行嘗試。
Q 21: 在 Android 10 上如何獲取用戶的 IMEI?
A: 從 Android 10 開始,應用必須具有 READ_PRIVILEGED_PHONE_STATE 特許權限才能訪問設備的不可重置標識符 (包含 IMEI 和序列號)。其實許多使用場景都不需要不可重置的設備標識符。例如,如果您的應用將不可重置的設備標識符用于廣告跟蹤或用戶分析目的,請為這些特定使用場景使用 Android 廣告 ID。要了解詳情,請參閱唯一標識符的最佳做法。
唯一標識符最佳做法
https://developer.android.google.cn/training/articles/user-data-ids
再次感謝大家關注 Android 開發(fā)者峰會!
點擊進入 Android Dev Summit 中文官方網(wǎng)站