发布版本中的 ActionBar 缺少后退箭头,但调试版本中没有
Back arrow missing from ActionBar on release build but not debug build
当我从我的 Android 应用程序的调试版本移动到发布版本时,ActionBar 中的后退导航箭头被汉堡包取代(因为想要一个更好的名字),这不是什么我要。
这是调试版本,应该有向后箭头。
这是带有汉堡包的发布版本。
这是当用户使用 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 保留什么?我尝试了所有这些,但 none 有帮助:
-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{}
提前致谢!
我遇到了同样的问题并在 Google Issue Tracker 中找到了它。有人在那里有解决方案:
-keep class androidx.appcompat.graphics.drawable.DrawerArrowDrawable { *; }
显然,后退箭头可绘制对象 (DrawerArrowDrawable) 默认情况下会被 Proguard 混淆。这解决了我的问题,我没有任何其他 Proguard 规则。
而且你还应该将 android.support.v4.app.Fragment
替换为 androidx.fragment.app.Fragment
(尽管它与你的问题无关)
当您使用时:
- androidx 导航库 2.2.0
- 禁用 androidx jetifier
你会遇到这个问题,因为 proguard 规则仍然引用了支持库版本。
已在 Navigation 2.2.1 及更高版本中修复(参见 https://issuetracker.google.com/issues/147610424)
当我从我的 Android 应用程序的调试版本移动到发布版本时,ActionBar 中的后退导航箭头被汉堡包取代(因为想要一个更好的名字),这不是什么我要。
这是调试版本,应该有向后箭头。
这是带有汉堡包的发布版本。
这是当用户使用 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 保留什么?我尝试了所有这些,但 none 有帮助:
-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{}
提前致谢!
我遇到了同样的问题并在 Google Issue Tracker 中找到了它。有人在那里有解决方案:
-keep class androidx.appcompat.graphics.drawable.DrawerArrowDrawable { *; }
显然,后退箭头可绘制对象 (DrawerArrowDrawable) 默认情况下会被 Proguard 混淆。这解决了我的问题,我没有任何其他 Proguard 规则。
而且你还应该将 android.support.v4.app.Fragment
替换为 androidx.fragment.app.Fragment
(尽管它与你的问题无关)
当您使用时:
- androidx 导航库 2.2.0
- 禁用 androidx jetifier
你会遇到这个问题,因为 proguard 规则仍然引用了支持库版本。
已在 Navigation 2.2.1 及更高版本中修复(参见 https://issuetracker.google.com/issues/147610424)