在proguard公共静态字段之后将删除

时间:2016-08-26 07:50:50

标签: android android-proguard

package com.hope.carwallpapers.extra;

import java.lang.reflect.Field;

/**
 * Created by croma on 21-08-2016.
 */
public class StringLensFlare {
    public final static String O_1 = "{\"I\":\"p(1)\",\"ow\":768,\"oh\":491,\"data\":[{\"image\":\"two\",\"fw\":389,\"fh\":235,\"fx\":162,\"fy\":187},{\"image\":\"one\",\"fw\":389,\"fh\":235,\"fx\":461,\"fy\":187}]}";
    public final static String O_2 = "{\"I\":\"p(2)\",\"ow\":768,\"oh\":512,\"data\":[{\"image\":\"two\",\"fw\":757,\"fh\":450,\"fx\":11,\"fy\":0},{\"image\":\"two\",\"fw\":381,\"fh\":227,\"fx\":0,\"fy\":99}]}";

public static String getDeclare(int i) {

    try {
        StringLensFlare stringLensFlare = new StringLensFlare();
        Field f = stringLensFlare.getClass().getDeclaredField("O_" + i);
        f.setAccessible(true);
        return f.get(stringLensFlare).toString();

    } catch (Exception e) {

    }
    return "";
}
};;

这是我已经添加到

中的proguard之后的公共静态文件删除
proguard.txt file as-keepclasseswithmembernames class * {
    native <methods>;
} 

1 个答案:

答案 0 :(得分:0)

您正在通过反射访问公共静态字段,因此您必须指示ProGuard保留它:

-keep class StringLensFlare {
    static java.lang.String O_*;
}

你提到的另一条规则对于这种情况几乎没用,而且完全没有关系。