blob: 70a6c9de34fd91026bc7eb4baccb24b478c755b1 [file] [log] [blame] [view]
# Onboarding to Compose for TV libraries
## Learn about Jetpack Compose
1. The [Compose landing page][compose-landing-page] provides an overview of Compose and its features.
2. The [Compose Quick Tutorial][compose-quick-tutorial] walks you through the basics of Compose using code examples.
3. The [Compose Course][compose-course] is a more comprehensive guide to Compose, covering topics such as layout, animations, and state management.
## Learn about Compose for TV
1. Explore the [available components][tv-components] and the [design patterns][good-design-patterns] that Google recommends.
2. Consult the documentation for information on the packages and various components available.
* [tv-foundation][tv-foundation]
* [tv-foundation-lazy-list][tv-foundation-lazy-list]
* [tv-foundation-lazy-grid][tv-foundation-lazy-grid]
* [tv-material][tv-material]
3. Refer to the documentation and examples on [developer.android.com][dac].
4. Get up to speed with the [codelabs][codelabs].
5. Find the sample app on [GitHub][github-sample-app].
## If you run into issues
1. Make sure that you are using the most recent version of [Compose for TV libraries][compose-for-tv-libraries]
and Jetpack compose.
2. Read the FAQs below.
3. Check with the community over on [stack overflow][stackoverflow].
4. Check if there is a bug already reported on [issue-tracker][issue-tracker].
5. File a bug on [issue-tracker][issue-tracker-file-a-bug].
6. Reach out to a Google Developer Relations partner who can, if necessary, bring in someone from the engineering team.
## FAQs
1. ### How can I improve the performance of my app written using tv-compose?
* [Performance improvements][improve-performance] suggested for a Compose app would typically apply to apps built with Compose for TV libraries as well.
* Use [baseline profiles][baseline-profiles] as recommended
in [Jetpack Compose Performance guide][jetpack-compose-performance].
Watch [Making apps blazing fast with Baseline Profiles][making-apps-blazing-fast-with-baseline-profiles].
* Check out [Interpreting Compose Compiler Metrics][interpreting-compose-compiler-metrics].
2. ### My app is crashing!
* Ensure that you are on the latest version.
of [Compose for TV libraries][compose-for-tv-libraries] and Jetpack Compose
* Check if there is a bug already reported on [issue-tracker][issue-tracker].
* [File a bug on issue-tracker][issue-tracker-file-a-bug].
3. ### The Navigation drawer is pushing my content aside. I don’t like it.
Consider using a [Modal Navigation Drawer][modal-navigation-drawer] provided
in [Compose for TV library][compose-for-tv-modal-navigation-drawer].
4. ### Sideloading baseline profiles to test performance, without releasing the app.
Refer to the steps for [applying baseline profiles][tv-samples-baseline-profiles] in the
Jetstream sample app.
[compose-landing-page]: https://developer.android.com/jetpack/compose
[compose-quick-tutorial]: https://developer.android.com/jetpack/compose/tutorial
[compose-course]: https://developer.android.com/courses/jetpack-compose/course
[good-design-patterns]: https://developer.android.com/design/ui/tv
[dac]: https://developer.android.com/training/tv/playback/compose
[github-sample-app]: https://github.com/android/tv-samples/tree/main/JetStreamCompose
[modal-navigation-drawer]: https://m3.material.io/components/navigation-drawer/overview#15a3aa10-1be4-4be4-8370-36a1779f65e5
[compose-for-tv-modal-navigation-drawer]: https://developer.android.com/reference/kotlin/androidx/tv/material3/package-summary#ModalNavigationDrawer(kotlin.Function1,androidx.compose.ui.Modifier,androidx.tv.material3.DrawerState,androidx.compose.ui.graphics.Color,kotlin.Function0)
[jetpack-compose-performance]: https://developer.android.com/jetpack/compose/performance
[improve-performance]: https://developer.android.com/topic/performance/improving-overview
[baseline-profiles]: https://developer.android.com/topic/performance/baselineprofiles/overview
[making-apps-blazing-fast-with-baseline-profiles]: https://youtu.be/yJm5On5Gp4c
[interpreting-compose-compiler-metrics]: https://github.com/androidx/androidx/blob/androidx-main/compose/compiler/design/compiler-metrics.md
[tv-components]: https://developer.android.com/design/ui/tv/guides/components
[codelabs]: https://developer.android.com/codelabs/compose-for-tv-introduction
[stackoverflow]: https://stackoverflow.com/tags/android-jetpack-compose-tv/info
[issue-tracker]: https://issuetracker.google.com/issues?q=componentid:1254578%20status:open
[issue-tracker-file-a-bug]: https://issuetracker.google.com/issues/new?component=1254578&template=1739419
[compose-for-tv-libraries]: https://developer.android.com/jetpack/androidx/releases/tv
[tv-foundation]: https://developer.android.com/reference/kotlin/androidx/tv/foundation/package-summary.html
[tv-foundation-lazy-list]: https://developer.android.com/reference/kotlin/androidx/tv/foundation/lazy/list/package-summary
[tv-foundation-lazy-grid]: https://developer.android.com/reference/kotlin/androidx/tv/foundation/lazy/grid/package-summary
[tv-material]: https://developer.android.com/reference/kotlin/androidx/tv/material3/package-summary
[tv-samples-baseline-profiles]: https://github.com/android/tv-samples/blob/main/JetStreamCompose/baseline-profiles.md