android - 发布版本时 ActionBar 缺少后退箭头,但不是调试版本
问题描述
当我从我的 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 保留什么?我尝试了所有这些,但都没有帮助:
-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
(尽管它与您的问题无关)
推荐阅读
- java - 无法在图像上显示图像
- docker - 在另一个容器的本地主机上发布端口
- xcode10.1 - Xcode 10.1 在故事板文件的版本编辑器中突出显示一行(或多行)
- unix - 通过 SOCKS 路由所有控制台流量
- c# - 使用 EF6 更新实体的某些属性而不加载整个实体
- encoding - CloudCDN 是否支持 Brotli 编码的服务?
- swift - 如何在 Swift 存储属性中创建协议及其扩展?
- mysql - Mariadb 加载,但几分钟后崩溃。从“快照”恢复服务器后发生
- jenkins - jenkinsfile 没有将 env 传递给 sh
- gitlab - 如何仅获取 Gitlab API 响应中的特定字段?