启用proguard时,android通知图标不同

问题描述 投票:0回答:1

我目前有一个Android应用程序(本机反应)使用Mixpanel的推送服务(在Firebase消息服务之上)

我已经指定了一个在我的清单文件中设置的图标,并引用了一个用android studio生成的图像文件(存储在drawable中)

当我使用调试版本运行应用程序(未启用proguard),并远程发送推送以触发通知时,状态栏中会显示正确的图标,然后在拉下通知托盘时,标题旁边会显示正确的图标

当我使用发布版本(启用proguard)构建应用程序时,在发送推送时,会显示通知,但顶部托盘中的图标会回退到我的启动器图标。当我向下拉托盘时,只能看到一个没有图标资产的红色圆圈。

两项测试均在API级别为28(O)的Android设备上执行

Android清单:

    <application
      ...
      android:label="@string/app_name"
      android:icon="@mipmap/ic_launcher"
      android:roundIcon="@mipmap/ic_launcher_round"
    />

        <meta-data
            android:name="com.google.firebase.messaging.default_notification_icon"
            android:resource="@drawable/my_notification" />

        <meta-data android:name="com.google.firebase.messaging.default_notification_color"
            android:resource="@color/my_red" />

我的build.gradle文件已启用proguard for release:

        release {
            minifyEnabled enableProguardInProductionBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
        }

我已将以下内容添加到我的proguard文件中,以确保通知构建器和mixpanel类可以正确触发通知。如上所述,通知出现:

-keep class com.mixpanel.android.mpmetrics.** { *; }
-keep class com.google.android.gms.** { *; }
-keep class android.support.v4.app.** { *; }

我已经分析了使用Android studio生成的版本APK,并且可以确认drawable资产是否存在于drawable中(当查看resources.arsc时)

非常难过这一点,任何帮助将不胜感激

android push-notification proguard android-proguard
1个回答
1
投票

终于设法找到了问题!

Proguard正在删除mixpanel SDK用于加载通知资产的资源类

添加

-keep class **.R$* { *; }

我的程序修复了问题根据mixpanel SDK中的代码注释中的说明:

https://github.com/mixpanel/mixpanel-android/blob/master/src/main/java/com/mixpanel/android/mpmetrics/ResourceReader.java#L123

© www.soinside.com 2019 - 2024. All rights reserved.