Android Weekly #504
https://androidweekly.net/issues/issue-504
All about Proto DataStore
DataStore proto類型的一篇介紹.
High performance with idiomatic Kotlin
一些提示性能的kotlin寫法的介紹.
Unpacking Android Security: Part 1 — Improper Platform Usage
Android安全系列文章, 這篇主要是關於exported屬性.
逆向工具:
Oh Snap! Snapshot Testing with Jetpack Compose
Compose的snapshot測試.
iOS用的是這個: https://github.com/pointfreeco/swift-snapshot-testing
Android用的是這個: https://github.com/pedrovgs/Shot
文章裏講了CI配置的部分, 是Bitrise, 還有截圖.
對於不同emulator的差異性, 設置了容忍度.
爲了更高效, 還在IDE裏設置了live template.
Accessing App Usage History In Android
關於獲取用戶設備上其他應用的使用情況, 有些api已經deprecated了.
比較官方的方法是使用: UsageStatsManager
需要向用戶申請權限.
Combining flows: merge, zip, and combine
flow組合的各種操作符:
- merge: 兩個flow合成一個flow. flow之間的元素沒有等待關係; 最終flow的個數爲兩個flow個數的總和.
- zip: 從兩個flow中各取一個元素組成pair, 構成新flow的元素, 所以元素之間有等待關係. 當源頭flow中有一個結束時, 結果flow結束, 不成對的元素會被丟棄. (類比: 雙人舞的pair).
- combine: 和zip一樣, 也是利用元素組成pair, 所以也會等待. 但是與zip的一對一不同的是, 每個flow最新的元素都會被作爲下一個候選人, 也就是說如果新的元素沒有出現, 那麼老的元素會被用於和另一個flow的新元素配對. 所以combine會等到所有flow都沒有元素時結束.
How to generate Kotlin DSL Client from GraphQL schema
一個插件: https://github.com/ermadmi78/kobby
Using Google Maps in a Jetpack Compose app
Google maps:
https://github.com/googlemaps/android-maps-compose
Compiler Warnings Are Good, Actually
應該關注一下編譯錯誤和警告.
Code
- https://github.com/ermadmi78/kobby
- https://github.com/skydoves/Lazybones
- https://github.com/googlemaps/android-maps-compose