Android - Proguard 剥离 Parcelable Creator

Android - Proguard stripping away Parcelable Creator

我有一个包含 Proguard 规则的库项目。如下所述

  -keep class * implements android.os.Parcelable {
     public static final android.os.Parcelable$Creator *;
  }

  -keepclassmembers class * implements android.os.Parcelable {
    public static final android.os.Parcelable$Creator *;
  }

我的一个 class 名为 Actor 实现了 Parcelable,其创建者就像

public static final Creator<Actor> CREATOR = new Creator<Actor>()
{
    public Actor createFromParcel(Parcel pc)
    {
        return new Actor(pc);
    }

    public Actor[] newArray(int size)
    {
        return new Actor[size];
    }
};

然后,AAR 被创建,我在 gradle 中使用 compile 将库项目导入我的项目。然后我试图 运行 处于发布模式的项目,这给我带来了问题 警告:com.xtlib.models.Actor:找不到引用的 class a

我查看了 Actor 的代码,看起来像

public static final Creator<Actor> CREATOR = new a();

尽管 Proguard 没有更改 "CREATOR" 名称,但它正在更改实现。如何跳过 proguard 将我的声明更改为变量

此致,
斯里

我想通了。问题出在最新的 gradle 插件 1.5.0 上。最新的 gradle 将生成的匿名 类(例如:a.class)放在包结构之外。

当我将我的 Gradle 插件恢复到 1.2.3 以生成 AAR 时,生成的 类 被移动到它们各自的包中。

这解决了我的问题。

干杯