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