Стрелка назад отсутствует в ActionBar при сборке релиза, но не отладочная сборка - PullRequest
0 голосов
/ 20 декабря 2018

При переходе от отладочной сборки моего приложения для Android к выпускной сборке стрелка обратной навигации в ActionBar заменяется гамбургером (из-за отсутствия лучшего названия), а это не то, что мне нужно.

Вот отладочная сборка со стрелкой назад, как и должно быть.

enter image description here

А вот и выпускная сборка с гамбургером.

enter image description here

Это стрелка назад по умолчанию, которая появляется, когда пользователь переходит к фрагменту с помощью навигационного компонента Jetpack в AppBarLayout, который выглядит следующим образом:

        <com.google.android.material.appbar.AppBarLayout
            android:id="@+id/appbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/AppTheme.AppBarOverlay">

            <androidx.appcompat.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:popupTheme="@style/AppTheme.PopupOverlay">

            </androidx.appcompat.widget.Toolbar>

        </com.google.android.material.appbar.AppBarLayout> 

Когда я отключаю минификацию в версии выпуска, снова появляется стрелка назад.Так что это как-то связано с минификацией.

Но что я скажу ProGuard оставить?Я попробовал все это, но ничего не помогло:

-keep class androidx.appcompat.widget.Toolbar{}
-keep class androidx.navigation.NavController{}
-keep class androidx.navigation.Navigation{}
-keep class androidx.navigation.ui.AppBarConfiguration{}
-keep class androidx.navigation.ui.navigateUp.** {*;}
-keep class * extends android.support.v4.app.Fragment{}
-keep class com.google.android.material.appbar.AppBarLayout{}

Заранее спасибо!

1 Ответ

0 голосов
/ 03 января 2019

У меня была такая же проблема, и я нашел ее в Google Issue Tracker .У кого-то там было решение:

-keep class androidx.appcompat.graphics.drawable.DrawerArrowDrawable { *; }

По-видимому, нарисованная стрелка назад (DrawerArrowDrawable) по умолчанию скрывается Proguard.Это решило проблему для меня, и у меня нет других ваших правил Proguard.

И вам также следует заменить android.support.v4.app.Fragment на androidx.fragment.app.Fragment (хотя это не связано с вашим вопросом)

...