ProGuard意外行为

时间:2019-05-19 02:21:32

标签: java android obfuscation

我有一个Android项目,我在其中使用progaurd混淆和简化代码。

    ...

android {
    defaultConfig {
...
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    packagingOptions {
...

    }
    compileOptions {
...
    }
}

dependencies {
...
}
...

我在progaurd-pro文件中有一些自定义规则,可以忽略模型文件的内容。它会忽略软件包中的所有模型文件,但不会忽略一个特定文件。

-keepclasseswithmembernames class my.domain.models.** { *; }

我尝试过的

我将所有模型移到了不同​​的模块上仍然没有区别 该文件不会被忽略

1 个答案:

答案 0 :(得分:0)

从@TheAnkush的评论中得到提示后,我自己想到了

实际上是从类外部引用这些变量 ,即我将这些变量保持公开状态,所以当proguard解析那些直接从其引用这些变量的文件时,它就会更改这些变量,因此即使使用正确的代码,这些文件也会被更改