From eae52f2d781973916e075daf2e72130d1295dc66 Mon Sep 17 00:00:00 2001 From: Xiao Yu Date: Wed, 24 Mar 2021 03:31:50 -0700 Subject: [PATCH 1/2] Make sure androidx.lifecycle classes aren't R8'ed away when using flutter_plugin_android_lifecycle --- packages/flutter_plugin_android_lifecycle/CHANGELOG.md | 3 +++ .../flutter_plugin_android_lifecycle/android/build.gradle | 1 + .../flutter_plugin_android_lifecycle/android/proguard.txt | 4 ++++ packages/flutter_plugin_android_lifecycle/pubspec.yaml | 2 +- 4 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 packages/flutter_plugin_android_lifecycle/android/proguard.txt diff --git a/packages/flutter_plugin_android_lifecycle/CHANGELOG.md b/packages/flutter_plugin_android_lifecycle/CHANGELOG.md index 08f137c09434..33787bba738a 100644 --- a/packages/flutter_plugin_android_lifecycle/CHANGELOG.md +++ b/packages/flutter_plugin_android_lifecycle/CHANGELOG.md @@ -1,3 +1,6 @@ +## 2.0.1 +* Make sure androidx.lifecycle.DefaultLifecycleObservable doesn't get shrunk + away. ## 2.0.0 * Bump Dart SDK for null-safety compatibility. diff --git a/packages/flutter_plugin_android_lifecycle/android/build.gradle b/packages/flutter_plugin_android_lifecycle/android/build.gradle index ac042bf144ab..9a26d574ac2e 100644 --- a/packages/flutter_plugin_android_lifecycle/android/build.gradle +++ b/packages/flutter_plugin_android_lifecycle/android/build.gradle @@ -27,6 +27,7 @@ android { defaultConfig { minSdkVersion 16 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles 'proguard.txt' } lintOptions { disable 'InvalidPackage' diff --git a/packages/flutter_plugin_android_lifecycle/android/proguard.txt b/packages/flutter_plugin_android_lifecycle/android/proguard.txt new file mode 100644 index 000000000000..fa9d7ec4d02b --- /dev/null +++ b/packages/flutter_plugin_android_lifecycle/android/proguard.txt @@ -0,0 +1,4 @@ +# The point of this package is to specify that a dependent plugin intends to +# use the AndroidX lifecycle classes. Make sure no R8 heuristics shrink classes +# brought in by the embedding's pom. +-keep class androidx.lifecycle.DefaultLifecycleObserver diff --git a/packages/flutter_plugin_android_lifecycle/pubspec.yaml b/packages/flutter_plugin_android_lifecycle/pubspec.yaml index fc2805ef814b..62169e4389fc 100644 --- a/packages/flutter_plugin_android_lifecycle/pubspec.yaml +++ b/packages/flutter_plugin_android_lifecycle/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_plugin_android_lifecycle description: Flutter plugin for accessing an Android Lifecycle within other plugins. -version: 2.0.0 +version: 2.0.1 homepage: https://github.com/flutter/plugins/tree/master/packages/flutter_plugin_android_lifecycle environment: From 067d0a14ddfea5a47561d330a9fb2380e3a710c3 Mon Sep 17 00:00:00 2001 From: Xiao Yu Date: Mon, 29 Mar 2021 21:20:47 -0700 Subject: [PATCH 2/2] add another comment so it doesn't get refactored away --- packages/flutter_plugin_android_lifecycle/CHANGELOG.md | 1 + .../flutter_plugin_android_lifecycle/android/proguard.txt | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/packages/flutter_plugin_android_lifecycle/CHANGELOG.md b/packages/flutter_plugin_android_lifecycle/CHANGELOG.md index 33787bba738a..1c7f23b96f69 100644 --- a/packages/flutter_plugin_android_lifecycle/CHANGELOG.md +++ b/packages/flutter_plugin_android_lifecycle/CHANGELOG.md @@ -1,6 +1,7 @@ ## 2.0.1 * Make sure androidx.lifecycle.DefaultLifecycleObservable doesn't get shrunk away. + ## 2.0.0 * Bump Dart SDK for null-safety compatibility. diff --git a/packages/flutter_plugin_android_lifecycle/android/proguard.txt b/packages/flutter_plugin_android_lifecycle/android/proguard.txt index fa9d7ec4d02b..d3a6df0eefd2 100644 --- a/packages/flutter_plugin_android_lifecycle/android/proguard.txt +++ b/packages/flutter_plugin_android_lifecycle/android/proguard.txt @@ -1,4 +1,9 @@ # The point of this package is to specify that a dependent plugin intends to # use the AndroidX lifecycle classes. Make sure no R8 heuristics shrink classes # brought in by the embedding's pom. +# +# This isn't strictly needed since by definition, plugins using Android +# lifecycles should implement DefaultLifecycleObserver and therefore keep it +# from being shrunk. But there seems to be an R8 bug so this needs to stay +# https://issuetracker.google.com/issues/142778206. -keep class androidx.lifecycle.DefaultLifecycleObserver