blob: 786cc23c0c2a3bf2ac6b64d6b3d17ef010d744e7 [file] [log] [blame] [view]
AndroidX Core Team2e416b22020-12-03 22:58:07 +00001# FAQ
2
3[TOC]
4
5## General FAQ
6
7### What is AndroidX?
8
9The Android Extension (AndroidX) Libraries provide functionality that extends
10the capabilities of the Android platform. These libraries, which ship separately
11from the Android OS, focus on improving the experience of developing apps
12through broad OS- and device-level compatibility, high-level abstractions to
13simplify and unify platform features, and other new features that target
14developer pain points. To find out more about AndroidX, see the public
15documentation on developer.android.com.
16
17### Why did we move to AndroidX?
18
19Please read our
20[blog post](https://android-developers.googleblog.com/2018/05/hello-world-androidx.html)
21about our migration to AndroidX.
22
23### What happened to the Support Library?
24
25As part of the Jetpack effort to improve developer experience on Android, the
26Support Library team undertook a massive refactoring project. Over the course of
272017 and 2018, we streamlined and enforced consistency in our packaging,
28developed new policies around vesioning and releasing, and developed tools to
29make it easy for developers to migrate.
30
31### Will there be any more updates to Support Library?
32
33No, Revision 28.0.0 of the Support Library, which launched as stable in
34September 2018, was the last feature release in the android.support package.
35There will be no further releases under Support Library packaging.
36
37### How is AndroidX related to Jetpack?
38
39They are the same thing! In a sentence, AndroidX is the packaging and
40internally-facing development project for all components in Jetpack. Jetpack is
41the external branding for libraries within AndroidX.
42
43In more detail, Jetpack is the external branding for the set of components,
44tools, and guidance that improve the developer experience on Android. AndroidX
45is the open-source development project that defines the workflow, versioning,
46and release policies for ALL libraries included in Jetpack. All libraries within
47the androidx Java package follow a consistent set of API design guidelines,
48conform to SemVer and alpha/beta revision cycles, and use the Android issue
49tracker for bugs and feature requests.
50
51### What AndroidX library versions have been officially released?
52
53You can see all publicly released versions on the interactive
54[Google Maven page](https://dl.google.com/dl/android/maven2/index.html).
55
56### How do I jetify something?
57
58The Standalone Jetifier documentation and download link can be found
59[here](https://developer.android.com/studio/command-line/jetifier), under the
60Android Studio DAC.
61
62### How do I update my library version?
63
64See the steps specified on the version page
65[here](versioning.md#how-to-update-your-version).
66
67### How do I test my change in a separate Android Studio project?
68
69If you're working on a new feature or bug fix in AndroidX, you may want to test
70your changes against another project to verify that the change makes sense in a
71real-world context or that a bug's specific repro case has been fixed.
72
73If you need to be absolutely sure that your test will exactly emulate the
74developer's experience, you can repeatedly build the AndroidX archive and
75rebuild your application. In this case, you will need to create a local build of
76AndroidX's local Maven repository artifact and install it in your Android SDK
77path.
78
79First, use the `createArchive` Gradle task to generate the local Maven
80repository artifact:
81
82```shell
83# Creates <path-to-checkout>/out/dist/sdk-repo-linux-m2repository-##.zip
84./gradlew createArchive
85```
86
87Next, take the ZIP output from this task and extract the contents to the Android
88SDK path that you are using for your alternate (non-AndroidX) version of Android
89Studio. For example, you may be using `~/Android/SDK/extras` if you are using
90the default Android Studio SDK for app development or
91`prebuilts/fullsdk-linux/extras` if you are using fullsdk for platform
92development.
93
94```shell
95# Creates or overwrites android/m2repository
96cd <path-to-sdk>/extras
97unzip <path-to-checkout>/out/dist/top-of-tree-m2repository-##.zip
98```
99
100Finally, in the dependencies section of your standalone project's `build.gradle`
101file, add or update the `compile` entries to reflect the AndroidX modules that
102you would like to test:
103
104```
105dependencies {
106 ...
107 compile "com.android.support:appcompat-v7:26.0.0-SNAPSHOT"
108}
109```
110
111## Version FAQ {#version}
112
113### How are changes in dependency versions propagated?
114
115If you declare `api(project(":depGroupId"))` in your `build.gradle`, then the
116version change will occur automatically. While convienent, be intentional when
117doing so because this causes your library to have a direct dependency on the
118version in development.
119
120If you declare `api("androidx.depGroupId:depArtifactId:1.0.0")`, then the
121version change will need to be done manually and intentionally. This is
122considered best practice.
123
124### How does a library begin work on a new Minor version?
125
126Set the version to the next minor version, as an alpha.
127
128### How does a library ship an API reference documentation bugfix?
129
130Developers obtain API reference documentation from two sources -- HTML docs on
131[d.android.com](https://d.android.com), which are generated from library release
132artifacts, and Javadoc from source JARs on Google Maven.
133
134As a result, documentation bug fixes should be held with other fixes until they
135can go through a normal release cycle. Critical (e.g. P0) documentation issues
136**may** result in a [bugfix](loaf.md#bugfix) release independent of other fixes.
137
138### When does an alpha ship?
139
140For public releases, an alpha ships when the library lead believes it is ready.
141Generally, these occur during the batched bi-weekly (every 2 weeks) release
142because all tip-of-tree dependencies will need to be released too.
143
144### Are there restrictions on when or how often an alpha can ship?
145
146Nope.
147
148### Can Alpha work (ex. for the next Minor release) occur in the primary development branch during Beta API lockdown?
149
150No. This is by design. Focus should be spent on improving the Beta version and
151adding documentation/samples/blog posts for usage!
152
153### Is there an API freeze window between Alpha and Beta while API surface is reviewed and tests are added, but before the Beta is released?
154
155Yes. If any new APIs are added in this window, the beta release will be blocked
156until API review is complete and addressed.
157
158### How often can a Beta release?
159
160As often as needed, however, releases outside of the bi-weekly (every 2 weeks)
161release will need to get approval from the TPM (nickanthony@).
162
163### What are the requirements for moving from Alpha to Beta?
164
165See the [Beta section of Versioning guidelines](versioning.md?#beta) for
166pre-release cycle transition requirements.
167
168### What are the requirements for a Beta launch?
169
170See the [Beta section of Versioning guidelines](versioning.md?#beta) for
171pre-release cycle transition requirements.