Android - Proguard剥离了Parcelable Creator

时间:2016-02-08 23:47:49

标签: android parcelable android-proguard

我有一个图书馆项目,上面有Proguard规则。这些如下所述

Parcelable

我的一个名为 Actor 的类实现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]; } }; ,其创建者就像

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

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

我查看了看起来像

的Actor代码
{
    "extends": "eslint:recommended",
    "plugins": [ "react" ],
    "ecmaFeatures": {
        "modules": true,
        "jsx": true
    },
    "rules": {
        "no-alert": 2,
        "no-array-constructor": 2,
        "no-caller": 2,
        "no-catch-shadow": 2,
        "no-empty-label": 2,
        "no-eval": 2,
        "no-extend-native": 2,
        "no-extra-bind": 2,
        "no-implied-eval": 2,
        "no-iterator": 2,
        "no-label-var": 2,
        "no-labels": 2,
        "no-lone-blocks": 2,
        "no-loop-func": 2,
        "no-multi-spaces": 2,
        "no-multi-str": 2,
        "no-native-reassign": 2,
        "no-new": 2,
        "no-new-func": 2,
        "no-new-object": 2,
        "no-new-wrappers": 2,
        "no-octal-escape": 2,
        "no-process-exit": 2,
        "no-proto": 2,
        "no-return-assign": 2,
        "no-script-url": 2,
        "no-sequences": 2,
        "no-shadow": 2,
        "no-shadow-restricted-names": 2,
        "no-spaced-func": 2,
        "no-trailing-spaces": 2,
        "no-undef-init": 2,
        "no-underscore-dangle": 2,
        "no-unused-expressions": 2,
        "no-use-before-define": 2,
        "no-with": 2,
        "camelcase": 2,
        "comma-spacing": 2,
        "consistent-return": 2,
        "curly": [2, "all"],
        "dot-notation": [2, { "allowKeywords": true }],
        "eol-last": 2,
        "no-extra-parens": [2, "functions"],
        "eqeqeq": 2,
        "key-spacing": [2, { "beforeColon": false, "afterColon": true }],
        "new-cap": 2,
        "new-parens": 2,
        "quotes": [2, "double"],
        "semi": 2,
        "semi-spacing": [2, {"before": false, "after": true}],
        "space-infix-ops": 2,
        "space-return-throw-case": 2,
        "space-unary-ops": [2, { "words": true, "nonwords": false }],
        "strict": [2, "global"],
        "yoda": [2, "never"]

    } }

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

的问候,
SREE

1 个答案:

答案 0 :(得分:0)

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

enter image description here

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

enter image description here

这解决了我的问题。

干杯