•  有个 SnapHelper 可能满足你的需求

  • #4楼 @xiaoba 尴尬,以微信公众号的口吻写的文章,发到论坛来时不想给论坛的文章造成干扰,特意删除文章最后的微信公众号说明。。个人微信公众号(guangyuan_coder),你直接在论坛回复我也是可以的。

  • 貌似除了月薪。。其他都算符合。(默哀一秒)

  • 好像之前在 v2ex 看到过 1.0 版本,先点赞为敬。

  • 一般网络框架都有做缓存的吧?Volley,retrofit 都有

  • #2楼 @heart162

    这是个好问题。

    首先,dontshrink是针对整个混淆的配置,个人觉得没法分开配置,因此可能没法实现。但是这个也是我第一次碰到这种需求,接下来我会给出一个可能可行的方案,你可以动手实践一下,无论成功与否麻烦也到时回复下如何?

    1,创建一个 module,将 umeng 的 gradle compile 放进 build.gradle 里。
    2,在 module 根目录下创建 proguard-project.txt,将以下内容复制进去:

    -keepparameternames
    -renamesourcefileattribute SourceFile
    -keepattributes Exceptions,InnerClasses,Signature,Deprecated,
                    SourceFile,LineNumberTable,EnclosingMethod
    
    -keepattributes *Annotation*
    
    -keep public class * {
        public protected *;
    }
    
    -keepclassmembernames class * {
        java.lang.Class class$(java.lang.String);
        java.lang.Class class$(java.lang.String, boolean);
    }
    
    -keepclasseswithmembernames class * {
        native <methods>;
    }
    
    -keepclassmembers class * extends java.lang.Enum {
        public static **[] values();
        public static ** valueOf(java.lang.String);
    }
    
    -keepclassmembers class * implements java.io.Serializable {
        static final long serialVersionUID;
        static final java.io.ObjectStreamField[] serialPersistentFields;
        private void writeObject(java.io.ObjectOutputStream);
        private void readObject(java.io.ObjectInputStream);
        java.lang.Object writeReplace();
        java.lang.Object readResolve();
    }

    3,将 umeng 的混淆规则复制到上面的文件里。
    4,在该 module 的 build.gradle 里添加以下内容:

    defaultConfig {
        consumerProguardFiles 'proguard-project.txt'
    }

    5,该 module 不需要额外添加混淆相关的配置了,比如 minifyEnabled true 等等。
    6,app 里的 build.gradle 依赖这个 module。

    这样你在 app 的混淆规则里就可以不用关闭代码压缩了。

    期待你的测试结果。

  • #5楼 @siegen 既然是 gayhub,那应该是遇到 gay 吧,哈哈