Fixed
Status Update
Comments
il...@google.com <il...@google.com> #2
Duplicate of internal issue
Project: platform/frameworks/support
Branch: androidx-master-dev
commit 45a1bc4a15b5b10d0635d79fb55df2aced5a2a4a
Author: Alan Viverette <alanv@google.com>
Date: Thu May 14 18:06:25 2020
Only apply DayNight changes to Activity-hosted delegates
Dialogs can't receive configuration change callbacks, so there's no point
in updating their configurations. They'll have to be destroyed and re-
created by their host activities. Also, dialogs were eating the changes.
Fixes: 155379937
Test: NightModeForegroundDialogTestCase and appcompat test suite
Change-Id: Ifa18d9d42268ec8821223942dc6c817ecabbed7f
A appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/NightModeDialogFragment.java
A appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/NightModeForegroundDialogTestCase.kt
M appcompat/appcompat/src/main/java/androidx/appcompat/app/AppCompatDelegate.java
M appcompat/appcompat/src/main/java/androidx/appcompat/app/AppCompatDelegateImpl.java
va...@gmail.com <va...@gmail.com> #3
I think, sActiveDelegates
meant "live" delegates. Anyway, now there's a mess :(
private static final ArraySet<WeakReference<AppCompatDelegate>> sActivityDelegates;
private static final Object sActivityDelegatesLock;
static void addActiveDelegate(@NonNull AppCompatDelegate delegate);
static void removeActivityDelegate(@NonNull AppCompatDelegate delegate);
private static void removeDelegateFromActives(@NonNull AppCompatDelegate toRemove);
private static void applyDayNightToActiveDelegates();
Source:
il...@google.com <il...@google.com>
il...@google.com <il...@google.com>
il...@google.com <il...@google.com> #5
Rc02 is work for me, thanks for your work!
va...@gmail.com <va...@gmail.com> #6
Sure, thanks for the quick fix.
va...@gmail.com <va...@gmail.com> #7
I had to use the androidx version for proguard rules
-keepclassmembers class androidx.appcompat.graphics.drawable.DrawerArrowDrawable {
void setProgress(float);
}
-keepclassmembers class androidx.appcompat.graphics.drawable.DrawerArrowDrawable {
void setProgress(float);
}
il...@google.com <il...@google.com> #8
Yep, Jetifier will automatically convert ProGuard rules packaged with libraries, but if you're adding the ProGuard files to your own project, you'll need to make sure to use the AndroidX equivalents if your project is using AndroidX.
br...@gmail.com <br...@gmail.com> #9
This issue seems to be back again? ... I'm using v2.2.0-rc02 and have run into the issue. Using the proguard rule below (mentioned in #7 above) to work around the issue seems to fix it.
-keepclassmembers class androidx.appcompat.graphics.drawable.DrawerArrowDrawable {
void setProgress(float);
}
Looking at the commit linked above that fixed the issue originally, it adds a proguard rule to fix the issue for the old support library, but not a rule for the AndroidX equivalent. #8 suggests that Jetifier will handle the AndroidX conversion, but that doesn't seem to be the case? I'm using AndroidX and Jetifier and without the specfic -keep rule above for androidx, my back arrow icon gets removed in release (minified) builds.
-keepclassmembers class androidx.appcompat.graphics.drawable.DrawerArrowDrawable {
void setProgress(float);
}
Looking at the commit linked above that fixed the issue originally, it adds a proguard rule to fix the issue for the old support library, but not a rule for the AndroidX equivalent. #8 suggests that Jetifier will handle the AndroidX conversion, but that doesn't seem to be the case? I'm using AndroidX and Jetifier and without the specfic -keep rule above for androidx, my back arrow icon gets removed in release (minified) builds.
il...@google.com <il...@google.com> #10
Re #9 - I filed
jb...@google.com <jb...@google.com> #11
Do you have jetifier enabled by adding android.enableJetifier=true
in your gradle.properties file? If so it should work fine. We opened a bug to change the rule over so that enabling jetifier is not required in a future release (
br...@gmail.com <br...@gmail.com> #12
Re #11, I do have jetifier enabled, and still see the regression mentioned in #9
Description
Version used: 1.0.0-alpha11
Devices/Android versions reproduced on: Android Pie, Pixel 2 XL
Back arrow is not shown in tool bar (set as support action bar) in release build with minifyEnabled. Hamburger icon is still shown and is functional (navigates back to previous fragment). The fragment having the issue is not set as a topLevelDestinationIds in AppBarConfiguration (used in setupActionBarWithNavController)
Works fine in
debug build
release build ( with minifyEnabled false, shrinkResources false and useProguard true )
Fails in
release build ( with minifyEnabled true, shrinkResources false and useProguard true )
Does navigation need something for release builds with minifyEnabled?