Fixed
Status Update
Comments
il...@google.com <il...@google.com> #2
When you include androidx.lifecycle:lifecycle-runtime-ktx:2.2.0-alpha05, you are upgrading all of its transitive dependencies, which includes lifecycle-runtime. However, you are *not* upgrading lifecycle-process, which is still using the version of lifecycle from your lifecycle-extensions dependency (2.1.0).
You do any one of the following:
- Add an explicit dependency on lifecycle-process:2.2.0-alpha05 to pull in the new version that is compatible with lifecycle-runtime:2.2.0-alpha05
- Upgrade your lifecycle:extensions dependency to 2.2.0-alpha05 so that lifecycle-process is upgraded
- Remove the lifecycle:extensions dependency entirely and use only the lifecycle libraries you need (for example, use lifecycle-viewmodel-ktx if you want ViewModels) so that you don't pull in lifecycle-process at all
Mixing and matching Lifecycle versions is not a supported configuration, so I'd recommend keeping to using just a single version.
You do any one of the following:
- Add an explicit dependency on lifecycle-process:2.2.0-alpha05 to pull in the new version that is compatible with lifecycle-runtime:2.2.0-alpha05
- Upgrade your lifecycle:extensions dependency to 2.2.0-alpha05 so that lifecycle-process is upgraded
- Remove the lifecycle:extensions dependency entirely and use only the lifecycle libraries you need (for example, use lifecycle-viewmodel-ktx if you want ViewModels) so that you don't pull in lifecycle-process at all
Mixing and matching Lifecycle versions is not a supported configuration, so I'd recommend keeping to using just a single version.
mg...@gtempaccount.com <mg...@gtempaccount.com> #3
Sorry and thank you for your time
il...@google.com <il...@google.com> #4
After thinking about this some more, I think we can do something here to maintain compatibility since I suspect that there will be other cases where lifecycle-runtime is updated through some other dependency and that shouldn't force you to upgrade lifecycle-extensions / lifecycle-process.
ap...@google.com <ap...@google.com> #5
Project: platform/frameworks/support
Branch: androidx-master-dev
commit b73a278881735861cd4a7c4b2f663aecbfce10d8
Author: Ian Lake <ilake@google.com>
Date: Fri Sep 27 15:40:11 2019
Fix lifecycle-runtime:2.2.0 + lifecycle-process:2.1.0
The lifecycle-runtime 2.2.0 switched away from
using ReportFragment on API 29+ devices. However,
lifecycle-process:2.1.0 and earlier still depend on
ReportFragment being there.
Given that lifecycle-process and lifecycle-runtime
do not have any strict Gradle version dependencies
set, it should be possible to mix and match these
dependencies as this is a relatively common operation
(say, if you upgrade to the latest fragments but don't
upgrade your lifecycle-extensions version).
This fixes the issue by continuing to add the
ReportFragment even on API 29+ devices, but ignore
the dispatch() of Lifecycle events from it, using it
solely for backward compatibility with the
ProcessLifecycleOwner of lifecycle-process 2.1.0
and earlier.
Test: tested in sample app
BUG: 141536990
Change-Id: I7f50c33dabe25c24647eec6169b1818d0a23895b
M lifecycle/lifecycle-runtime/src/main/java/androidx/lifecycle/ReportFragment.java
https://android-review.googlesource.com/1130355
https://goto.google.com/android-sha1/b73a278881735861cd4a7c4b2f663aecbfce10d8
Branch: androidx-master-dev
commit b73a278881735861cd4a7c4b2f663aecbfce10d8
Author: Ian Lake <ilake@google.com>
Date: Fri Sep 27 15:40:11 2019
Fix lifecycle-runtime:2.2.0 + lifecycle-process:2.1.0
The lifecycle-runtime 2.2.0 switched away from
using ReportFragment on API 29+ devices. However,
lifecycle-process:2.1.0 and earlier still depend on
ReportFragment being there.
Given that lifecycle-process and lifecycle-runtime
do not have any strict Gradle version dependencies
set, it should be possible to mix and match these
dependencies as this is a relatively common operation
(say, if you upgrade to the latest fragments but don't
upgrade your lifecycle-extensions version).
This fixes the issue by continuing to add the
ReportFragment even on API 29+ devices, but ignore
the dispatch() of Lifecycle events from it, using it
solely for backward compatibility with the
ProcessLifecycleOwner of lifecycle-process 2.1.0
and earlier.
Test: tested in sample app
BUG: 141536990
Change-Id: I7f50c33dabe25c24647eec6169b1818d0a23895b
M lifecycle/lifecycle-runtime/src/main/java/androidx/lifecycle/ReportFragment.java
Description
Version used: 2.2.0-alpha05
Devices/Android versions reproduced on:
Device: Google Pixel 2 XL
Android version: 10
Android Security Patch level: September 5, 2019
Google Play System Update: 2019/09
Kernel version: 4.4.177-g83bee1dc48e8
Build Number: QP1A.190711.019
If this is a bug in the library, we would appreciate if you could attach:
Sample app:
Here is a link to a sample app that reproduces the issue, to trigger the issue just run the app it will happen immediately
NOTE: Some how the issue doesn't appear to be happening in some emulated device (Pixel 2 XL API 28)
This is the error that prints out:
java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.lifecycle.ReportFragment.setProcessListener(androidx.lifecycle.ReportFragment$ActivityInitializationListener)' on a null object reference
when super.onCreate get's called
at com.example.sampleproject.MainActivity.onCreate(MainActivity.kt:9)