启用了Proguard后,Android通知图标会有所不同

时间:2019-03-15 16:49:20

标签: android push-notification proguard android-proguard

我目前有一个使用Mixpanel推送服务(位于Firebase消息传递服务之上)的android应用(本机)

我指定了一个在清单文件中设置的图标,并引用了由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文件已启用发布保护程序:

        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,并可以确认可绘制资源存在于可绘制对象中(当查看resources.arsc时)

在这上面很烂,任何帮助将不胜感激

1 个答案:

答案 0 :(得分: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