In this episode Chet, Romain and Tor chat with Shai Barack about how the Android platform team studies performance and understands system health - and what is system health anyway? We talk about measuring performance, deciding trade-offs, and our favorite tools such as Perfetto, Compiler Explorer, and Android Studio's Memory Profiler.
Chapters:
Intro (00:00)
System health (0:27)
Efforts to make apps more efficient (3:35)
Telemetry data (5:59)
Trade offs between long battery life and good performance (8:21)
Scheduling groups (10:38)
Static drain (13:32)
Collaborating with App developers vs operating system (19:10)
High refresh rates (23:26)
Reach vs engagement (32:02)
What tools does your team use to optimize performance? (34:10)
Godbolt.org (37:09)
Demystifying (39:39)
The best tools are multi-player (43:52)
R8 or R-Not? (45:42)
Optimizing for feature sets (48:05)
Tools, not Rules (50:08)
What are the tools I should be aware of as an app developer looking to upscale performance? (54:36)
Allocation tracker (55:37)
Open source tools (57:08)
Useful resources for devs to understand various tools (59:04)
Final thoughts (1:06:19)
Links:
Compiler Explorer → https://goo.gle/3Zbq6DV
Perfetto → https://goo.gle/3OtD3UK and https://goo.gle/3B3S3p5
Tools, not Rules → https://goo.gle/416CyY7
Shai:
Romain: @romainguy, threads.net/@romainguy, [email protected]
Tor: threads.net/@tor.norbye and [email protected]
Chet: @chethaase, threads.net/@chet.haase, and [email protected]
Catch videos on YouTube → https://goo.gle/adb-podcast
Subscribe to Android Developers → https://goo.gle/AndroidDevs
In this episode Chet, Romain and Tor chat with Sebastiano about how the Android Studio team builds UIs. We talk about how Compose for Desktop is used in parts of Android Studio and how the Compose Markdown renderer available in the Jewel library makes Studio Bot tick.
Chapters:
Intro (00:00)
Android Dev UX team (00:39)
What kind of libraries and languages are used to build Android studio? (1:52)
Swing (2:53)
Reactive and declarative programming models (8:25)
SKIA for Kotlin (10:01)
Jetpack Compose widgets (11:54)
Jewel (13:07)
Text rendering across platforms (15:51)
Differences in behaviors (17:40)
Support for markdown files (20:26)
What is markdown? (21:25)
Swing and html (25:45)
Selection handling in StudioBot (28:46)
Boosting productivity with Compose (30:40)
Standalone vs plugin artifacts (34:29)
The difference between Jewel & Swing (35:30)
HTML vs Markdown (39:31)
Markdeep (41:53)
Jewel's Markdown API (43:46)
Where to find Jewel? (46:54)
Sebastiano’s podcast - Code with the Italians (47:34)
Final thoughts (49:13)
Links:
Compose Multiplatform, for Desktop
Sebastiano: https://github.com/rock3r, https://codewiththeitalians.it/
Romain: @romainguy, threads.net/@romainguy, [email protected]
Tor: threads.net/@tor.norbye and [email protected]
Chet: @chethaase, threads.net/@chet.haase, and [email protected]
Catch videos on YouTube → https://goo.gle/adb-podcast
Subscribe to Android Developers → https://goo.gle/AndroidDevs
In this episode Chet, Romain and Tor chat with Doris Liu from the Compose team about animations in Compose -- covering everything from the basic primitives up to the recently added Shared Element Transitions.
Chapters: Intro (00:00) Animation capabilities of Compose (1:06) Different types of animation specs (3:43) Layers of functionality, transitions (7:49) TargetBasedAnimation (9:48) Vectors & velocity of color change (12:43) Second layer parallel to animation spec (16:39) Animation interruptions (18:48) Motion layout problem-solving (20:19) Both scale and move in question (25:45) Different mental models for layout animation in Compose vs. View (26:20) Shared element (31:05) Are there things you wish more people were aware of? (34:19) What's the tooling story for this? (41:57) What is Look Ahead? (43:16) All software is regret (48:49) New API: Modifier.animateBounds (51:52) How to reach Doris – leave a comment (55:57) Motion Frame of Reference Placement (57:29) Wrap up (59:10)
Links: Shared element tutorial → https://goo.gle/3XrGYp5 Shared element talk → https://goo.gle/47tm3qm A quick guide to compose animations → https://goo.gle/3Tm853p The API layers except the highest level APIs we chatted about in the podcast → https://goo.gle/3MGsiNE
Doris: @doris4lt
Romain: @romainguy, threads.net/@romainguy, [email protected]
Tor: threads.net/@tor.norbye and [email protected]
Chet: @chethaase, threads.net/@chet.haase, and [email protected]
Catch more Android Developers Backstage on YouTube → https://goo.gle/adb-podcast Subscribe to Android Developers YouTube → https://goo.gle/AndroidDevs
In this episode Tor and Romain find themselves without a guest and decide to chat about micro optimizations and writing custom tools.
Tor and Romain
Chapters:
Intro (00:00)
Micro optimizations (00:32)
Kotlin explorer (3:25)
Avoiding object allocations (6:49)
Code Inefficiencies (8:10)
Compilers (12:13)
Understand assembly with AI (18:39)
Layout opt (21:20)
Programmers writing tools (21:52)
char.isBlank (25:35)
Lint checks (27:59)
Companion objects (29:40)
Java assertion mechanism (32:00)
Hash maps (35:13)
When to micro optimize and when not to (43:46)
Benchmarking (47:26)
New optimizations (48:46)
Wrap up (50:46)
Romain: @romainguy, threads.net/@romainguy, [email protected]
Tor: threads.net/@tor.norbye and [email protected]
Catch videos on YouTube → https://goo.gle/adb-podcast
Subscribe to Android Developers → https://goo.gle/AndroidDevs
In this episode we talk with Kathy Korevec from the AIDA team at Google about AI assisted developer tools, such as Android Studio -- which is using Gemini AI models provided by AIDA.
Romain, Kathy, and Tor
Kathy: twitter.com/simpsoka
Romain: @romainguy, threads.net/@romainguy, [email protected]
Tor: threads.net/@tor.norbye and [email protected]
Check out → https://goo.gle/3wK4EM4
Catch videos on YouTube → https://goo.gle/adb-podcast
Subscribe to Android Developers → https://goo.gle/AndroidDevs
In this episode we cover ADB -- not "Android Developers Backstage", but "Android Debug Bridge", the technology powering device connections. Romain and Tor talk with Fabien Sanglard from the Android Studio team on his work to improve the debug stack -- including the new USB speed detection feature recently unveiled at Google I/O.
Chapters:
Intro (00:00)
You may know Fabien from… (00:50)
Applying relevant knowledge to Android Studio (3:28)
Communicating with remote devices and debugging (12:18)
Accommodating a debugger (13:55)
Fixed protocols and how to work around (16:10)
What other versions of ADB do you use to get the suite faster? (19:27)
Other ways to make the debugger faster (20:38)
The differences between USB cables (21:51)
How to find the right cable (30:17)
ADB over wifi (32:41)
How to detect which usb port is faster on your laptop? (34:46)
Complexity of new cables (36:57)
Install time of APK’s (37:41)
New ways of helping full stack devs (45:44)
Final thoughts (49:19)
Viewer questions (57:54)
Romain: @romainguy, threads.net/@romainguy, [email protected]
Tor: threads.net/@tor.norbye and [email protected]
Fabien: @fabynou,
Check out → https://goo.gle/3wK4EM4
Catch videos on YouTube → https://goo.gle/adb-podcast
Subscribe to Android Developers → https://goo.gle/AndroidDevs
In this episode, Tor, Romain, and Chet talk with Aurash Mahbod from the Play Games team at Google -- covering trends in mobile games, challenges for Android games developers, console games, and more!
Chapters:
Intro (00:00)
What’s Aurash working on currently? (02:40)
How much is Play store providing users with content based on previous interests? (05:29)
Longstanding games vs new games (08:34)
Mobile gaming vs console (10:07)
Are there stats on what type of games people are playing? (18:07)
Difficulties and solutions for transitioning games from various devices (21:14)
Movie corner - War Games (25:15)
How does Play console help devs optimize engagement? (26:23)
What is the breakdown of tools that devs actually use for games? (27:53)
Reducing the backend costs for devs (30:18)
Where does loyalty content surface? (34:28)
Balancing add load (35:16)
Cloud saves (38:18)
Aurash’s history with Play store (42:18)
Wrap up (42:58)
Romain: @romainguy, threads.net/@romainguy, [email protected]
Tor: threads.net/@tor.norbye and [email protected]
Chet: @chethaase, threads.net/@chet.haase, and [email protected]
Aurash: https://twitter.com/aurash - @aurash
Catch videos on YouTube → https://goo.gle/adb-podcast
In this episode, Tor, Romain, and Chet talk about one of Tor’s favorite topics: Lint! Specifically, we talk about Lint checks and the annotations that use them to enable better, more robust, and more self-documenting APIs. Lint: It’s not just for pockets anymore.
Chapters:
Intro (00:00)
Lint checks for annotations (01:50)
Lint checks in Android (05:38)
Logic checks (07:34)
Color representations (10:01)
How does lint know the type of integer? (14:40)
Kotlin annotations (17:19)
Unsigned (20:10)
HalfFloat (22:25)
Thread annotations (25:12)
@CallSuper (28:18)
LayoutOpt (30:26)
Lint checks in AndroidX (32:00)
Restrict to annotation (36:45)
Writing your own custom Lint checks (39:51)
Lint testing framework (43:26)
Kotlin buildList Lint check example (45:25)
@Discouraged (48:15)
Wrap up (50:08)
@Deprecated Chet (50:50)
Romain: @romainguy, threads.net/@romainguy, [email protected]
Tor: threads.net/@tor.norbye and [email protected]
Chet: @chethaase, threads.net/@chet.haase, and [email protected]
Catch videos on YouTube → https://goo.gle/adb-podcast
Subscribe to Android Developers → https://goo.gle/AndroidDevs
In this episode, Tor, Romain, and Chet talk about some of the many things that happened this year in the world of Android development, including new devices and form factors, tool improvements, AndroidX features and libraries, and Jetpack Compose releases. And any tech podcast would be remiss without mentioning AI/ML, so we talk about that too.
Tor, Romain and Chet
Chapters:
Intro (00:00)
Google engineers vs Android (00:57)
Big changes of 2023 intro (3:03)
AI (3:38)
Programming with AI (5:08)
Writing with AI (8:52)
New devices from Android - Pixel fold (12:31)
Pixel watch (18:50)
Bard (19:37)
Changes in device release times (20:23)
Major changes in devices vs incremental updates (21:42)
Camera (22:40)
Platform developments - mainline modules (24:03)
More testing for Android (25:12)
Flaky tests (26:55)
Jetpack compose features (32:32)
RTO (38:00)
Shapes library and KMP (42:42)
Final thoughts on big events of 2023 (45:03)
Studio build improvements (46:43)
Baseline profiles (49:21)
Listener mail (50:45)
Where has Chet been? (52:46)
Metalava question (55:46)
Wrap up wrap up (57:00)
Romain: @romainguy, threads.net/@romainguy, [email protected]
Tor: threads.net/@tor.norbye and [email protected]
Chet: @chethaase, threads.net/@chet.haase, and [email protected]
Catch videos on YouTube → https://goo.gle/adb-podcast
Subscribe to Android Developers → https://goo.gle/AndroidDevs
In this episode, Tor and Romain chat with Aurimas Liutikas from the AndroidX team. Topics include performance tuning the AndroidX Gradle builds using configuration caching, local caching and remote caching, as well as tracking API compatibility using the Metalava tool.
Aurimas, Romain and Tor
Romain: @romainguy, threads.net/@romainguy, [email protected]
Tor: threads.net/@tor.norbye and [email protected]
Aurimas: androiddev.social/@Aurimas and www.liutikas.net/blog-posts
Catch videos on YouTube → https://goo.gle/adb-podcast
Subscribe to Android Developers → https://goo.gle/AndroidDevs
In this episode, Tor and Romain chat with Greg Baker and Joe Baker-Malone about exciting new Android Studio features made possible by Firebase integration. Physical device streaming allows you to connect remotely to physical devices hosted in Google’s secure data centers and use them for all your development needs. We also explore other time saving features like the ability to go from a crash report directly to the correct line of code, even across git branches.
Tor, Romain, Joe, Greg
Links:
Romain: @romainguy, romainguy@threads, [email protected]
Tor: tor.norbye@threads and [email protected]
Greg: @[email protected]
Your feedback is valuable to us. Should you encounter any bugs, glitches, lack of functionality or other problems, please email us on [email protected] or join Moon.FM Telegram Group where you can talk directly to the dev team who are happy to answer any queries.