Browse Source

1:更改Router的集成方式。

guiying712 8 years ago
parent
commit
f63eb682e9

+ 3 - 2
build.gradle

@@ -10,7 +10,6 @@ buildscript {
         //classpath "com.android.tools.build:gradle:$localGradlePluginVersion"
         //$localGradlePluginVersion是gradle.properties中的数据
         classpath "com.android.tools.build:gradle:$localGradlePluginVersion"
-        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
     }
 }
 
@@ -52,8 +51,10 @@ ext {
     gsonVersion = "2.8.0"
 
     //不成熟开源库,需经常检查升级版本
-    aptCompilerVersion = "1.1.7"
+    compilerVersion = "1.1.7"
     routerVersion = "1.2.2"
     easyRecyclerVersion = "4.4.0"
     cookieVersion = "v1.0.1"
+
+    toastyVersion = "1.1.3"
 }

+ 17 - 1
lib_common/build.gradle

@@ -13,10 +13,26 @@ android {
 
     buildTypes {
         release {
+            // 不显示Log
+            buildConfigField "boolean", "LEO_DEBUG", "false"
+            //是否zip对齐
+            zipAlignEnabled true
+            // 缩减resource文件
+            shrinkResources true
+            //Proguard
             minifyEnabled false
             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
         }
+
+        debug {
+            buildConfigField "boolean", "LOG_DEBUG", "true"
+            zipAlignEnabled false
+            shrinkResources false
+            minifyEnabled false
+            debuggable true
+        }
     }
+
 }
 
 dependencies {
@@ -38,5 +54,5 @@ dependencies {
     compile "com.github.mzule.activityrouter:activityrouter:$rootProject.routerVersion"
     compile "com.jude:easyrecyclerview:$rootProject.easyRecyclerVersion"
 
-    compile 'com.github.GrenderG:Toasty:1.1.3'
+    compile "com.github.GrenderG:Toasty:$rootProject.toastyVersion"
 }

+ 310 - 16
lib_common/proguard-rules.pro

@@ -1,17 +1,311 @@
 # Add project specific ProGuard rules here.
-# By default, the flags in this file are appended to flags specified
-# in D:\SDK/tools/proguard/proguard-android.txt
-# You can edit the include path and order by changing the proguardFiles
-# directive in build.gradle.
-#
-# For more details, see
-#   http://developer.android.com/guide/developing/tools/proguard.html
-
-# Add any project specific keep options here:
-
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-#   public *;
-#}
+ # By default, the flags in this file are appended to flags specified
+ # in D:\SDK/tools/proguard/proguard-android.txt
+ # You can edit the include path and order by changing the proguardFiles
+ # directive in build.gradle.
+ #
+ # For more details, see
+ #   http://developer.android.com/guide/developing/tools/proguard.html
+
+ # Add any project specific keep options here:
+
+ # If your project uses WebView with JS, uncomment the following
+ # and specify the fully qualified class name to the JavaScript interface
+ # class:
+ #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+ #   public *;
+ #}
+ #---------------------------------基本指令区----------------------------------
+ -ignorewarnings
+ -dontusemixedcaseclassnames   # 是否使用大小写混合
+ -dontpreverify           # 混淆时是否做预校验
+ -verbose                # 混淆时是否记录日志
+ -printmapping proguardMapping.txt
+ -optimizationpasses 5   # 指定代码的压缩级别
+ -dontskipnonpubliclibraryclassmembers
+
+
+ -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
+ -keepattributes *Annotation*,InnerClasses
+ -keepattributes Signature # 避免混淆泛型
+ -keepattributes EnclosingMethod
+ -keepattributes SourceFile,LineNumberTable #运行抛出异常时保留代码行号
+ -keepattributes Exceptions # 解决AGPBI警告
+
+ #继承自activity,application,service,broadcastReceiver,contentprovider....不进行混淆
+ -keep public class * extends android.app.Activity
+ -keep public class * extends android.app.Application
+ -keep public class * extends android.support.multidex.MultiDexApplication
+ -keep public class * extends android.app.Service
+ -keep public class * extends android.content.BroadcastReceiver
+ -keep public class * extends android.content.ContentProvider
+ -keep public class * extends android.app.backup.BackupAgentHelper
+ -keep public class * extends android.preference.Preference
+ -keep public class * extends android.view.View
+ -keep public class com.android.vending.licensing.ILicensingService
+ -keep class android.support.** {*;}
+
+ # 所有View的子类及其子类的get、set方法都不进行混淆
+ -keep public class * extends android.view.View{
+     *** get*();
+     void set*(***);
+     public <init>(android.content.Context);
+     public <init>(android.content.Context, android.util.AttributeSet);
+     public <init>(android.content.Context, android.util.AttributeSet, int);
+ }
+
+ -keepclasseswithmembers class * {
+     public <init>(android.content.Context, android.util.AttributeSet);
+     public <init>(android.content.Context, android.util.AttributeSet, int);
+ }
+
+ # 这个主要是在layout 中写的onclick方法android:onclick="onClick",不进行混淆
+ -keepclassmembers class * extends android.app.Activity {
+    public void *(android.view.View);
+ }
+
+
+ # 对于带有回调函数onXXEvent的,不能被混淆
+ -keepclassmembers class * {
+     void *(*Event);
+ }
+
+ # 枚举类不能被混淆
+ -keepclassmembers enum * {
+     public static **[] values();
+     public static ** valueOf(java.lang.String);
+ }
+
+ # natvie 方法不混淆
+ -keepclasseswithmembernames class * {
+     native <methods>;
+ }
+ #litepal数据库不能被混淆
+ -keep class org.litepal.** {
+     *;
+ }
+ -keep class * extends org.litepal.crud.DataSupport {
+     *;
+ }
+
+ #Glide不能被混淆
+ -keep public class * implements com.bumptech.glide.module.GlideModule
+ -keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
+   **[] $VALUES;
+   public *;
+ }
+
+ # 保持 Parcelable 不被混淆
+ -keep class * implements android.os.Parcelable {
+   public static final android.os.Parcelable$Creator *;
+ }
+
+ #不混淆Serializable接口的子类中指定的某些成员变量和方法
+ -keepclassmembers class * implements java.io.Serializable {
+     static final long serialVersionUID;
+     private 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();
+ }
+
+ # 不混淆R类里及其所有内部static类中的所有static变量字段
+ -keep public class com.guiying.androidmodulepattern.R$*{
+     public static final int *;
+ }
+
+ # $是用来分割内嵌类与其母体的标志
+ -keep class **.R$* {
+  *;
+ }
+
+
+ -keepclassmembers class * {
+    public <init> (org.json.JSONObject);
+ }
+
+ #---------------------------------webview------------------------------------
+ -keepclassmembers class fqcn.of.javascript.interface.for.webview {
+    public *;
+ }
+ -keepclassmembers class * extends android.webkit.webViewClient {
+     public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
+     public boolean *(android.webkit.WebView, java.lang.String);
+ }
+
+#---------------------------------实体类---------------------------------
+
+
+
+ #---------------------------------第三方包-------------------------------
+#activityrouter
+-keep class com.github.mzule.activityrouter.router.** { *; }
+
+ #友盟统计
+ -keep class com.umeng.analytics.** {*;}
+ -dontwarn com.umeng.analytics.**
+
+
+ #换肤框架的混淆文件
+ -keep class solid.ren.skinlibrary.** {*;}
+ -dontwarn solid.ren.skinlibrary.**
+
+ #高德相关混淆文件
+ #3D 地图
+ -keep class com.amap.api.** {*;}
+ -keep class com.autonavi.** {*;}
+ -keep class com.a.a.** {*;}
+ -keep class com.loc.** {*;}
+ -dontwarn com.amap.api.**
+ -dontwarn com.autonavi.**
+ -dontwarn com.a.a.**
+ -dontwarn com.loc.**
+
+
+ # simple-xml-core的SDK
+ -keep class org.simpleframework.xml.** {*;}
+ -dontwarn org.simpleframework.xml.**
+
+ # acra的 SDK
+ -keep class org.acra.** {*;}
+ -dontwarn org.acra.**
+
+ # 网络请求库async-http
+ -keep class com.loopj.android.http.** {*;}
+ -dontwarn com.loopj.android.http.**
+
+
+ #pinyin4j
+ -dontwarn net.soureceforge.pinyin4j.**
+ -dontwarn demo.**
+ -keep class net.sourceforge.pinyin4j.** { *;}
+ -keep class demo.** { *;}
+ -keep class com.hp.** { *;}
+
+ #httpclient (org.apache.http.legacy.jar)
+ -dontwarn android.net.compatibility.**
+ -dontwarn android.net.http.**
+ -dontwarn com.android.internal.http.multipart.**
+ -dontwarn org.apache.commons.**
+ -dontwarn org.apache.http.**
+ -dontwarn org.apache.http.protocol.**
+ -keep class android.net.compatibility.**{*;}
+ -keep class android.net.http.**{*;}
+ -keep class com.android.internal.http.multipart.**{*;}
+ -keep class org.apache.commons.**{*;}
+ -keep class org.apache.org.**{*;}
+ -keep class org.apache.harmony.**{*;}
+
+ #图表库
+ -keep class com.github.mikephil.charting.** {*;}
+ -dontwarn com.github.mikephil.charting.**
+
+ # 讯飞语音
+ -keep class com.chinaMobile.** {*;}
+ -keep class com.iflytek.** {*;}
+ -keep class com.iflytek.sunflower.** {*;}
+ -dontwarn com.iflytek.sunflower.**
+ -dontwarn com.chinaMobile.**
+ -dontwarn com.iflytek.**
+
+ # greenDao混淆
+ -keep class de.greenrobot.dao.** {*;}
+ -keepclassmembers class * extends de.greenrobot.dao.AbstractDao {
+     public static Java.lang.String TABLENAME;
+ }
+ -keep class **$Properties
+
+ # gson
+ -keep class com.google.gson.** {*;}
+ -keep class com.google.**{*;}
+ -keep class sun.misc.Unsafe { *; }
+ -keep class com.google.gson.stream.** { *; }
+ -keep class com.google.gson.examples.android.model.** { *; }
+
+ # zxing
+ -keep class com.google.zxing.** {*;}
+ -dontwarn com.google.zxing.**
+
+ ##百度定位
+ -keep class com.baidu.** {*;}
+ -keep class vi.com.** {*;}
+ -dontwarn com.baidu.**
+
+ ## okhttp
+ -dontwarn com.squareup.okhttp.**
+ -keep class com.squareup.okhttp.{*;}
+
+ #okhttp3.x
+ -dontwarn com.squareup.okhttp3.**
+ -keep class com.squareup.okhttp3.** { *;}
+ -dontwarn okio.**
+
+ #retrofit
+ -dontwarn retrofit.**
+ -keep class retrofit.** { *; }
+ -keepattributes Signature
+ -keepattributes Exceptions
+ -dontwarn okio.**
+
+
+ #recyclerview-animators
+ -keep class jp.wasabeef.** {*;}
+ -dontwarn jp.wasabeef.*
+
+ #multistateview
+ -keep class com.kennyc.view.** { *; }
+ -dontwarn com.kennyc.view.*
+
+ # universal-image-loader 混淆
+ -dontwarn com.nostra13.universalimageloader.**
+ -keep class com.nostra13.universalimageloader.** { *; }
+
+
+ #-ButterKnife 7.0
+  -keep class butterknife.** { *; }
+  -dontwarn butterknife.internal.**
+  -keep class **$$ViewBinder { *; }
+  -keepclasseswithmembernames class * {
+   @butterknife.* <fields>;
+  }
+  -keepclasseswithmembernames class * {
+  @butterknife.* <methods>;
+  }
+
+ #eventbus 3.0
+ -keepattributes *Annotation*
+ -keepclassmembers class ** {
+     @org.greenrobot.eventbus.Subscribe <methods>;
+ }
+ -keep enum org.greenrobot.eventbus.ThreadMode { *; }
+ -keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
+     <init>(java.lang.Throwable);
+ }
+
+ #EventBus
+ -keepclassmembers class ** {
+     public void onEvent*(**);
+ }
+ -keepclassmembers class ** {
+ public void xxxxxx(**);
+ }
+
+ # support-v4
+ -dontwarn android.support.v4.**
+ -keep class android.support.v4.app.** { *; }
+ -keep interface android.support.v4.app.** { *; }
+ -keep class android.support.v4.** { *; }
+
+
+ # support-v7
+ -dontwarn android.support.v7.**
+ -keep class android.support.v7.internal.** { *; }
+ -keep interface android.support.v7.internal.** { *; }
+ -keep class android.support.v7.** { *; }
+
+ # support design
+ -dontwarn android.support.design.**
+ -keep class android.support.design.** { *; }
+ -keep interface android.support.design.** { *; }
+ -keep public class android.support.design.R$* { *; }

+ 3 - 7
module_app/build.gradle

@@ -1,5 +1,4 @@
 apply plugin: 'com.android.application'
-apply plugin: 'com.neenbedankt.android-apt'
 
 static def buildTime() {
     return new Date().format("yyyyMMdd");
@@ -57,11 +56,7 @@ android {
         }
     }
 
-    //执行lint检查,有任何的错误或者警告提示,都会终止构建,可以将其关掉
-    lintOptions {
-        checkReleaseBuilds false
-        abortOnError false
-    }
+
 }
 
 dependencies {
@@ -74,5 +69,6 @@ dependencies {
         compile project(':module_news')
     }
     //router
-    apt "com.github.mzule.activityrouter:compiler:$rootProject.aptCompilerVersion"
+    compile "com.github.mzule.activityrouter:activityrouter:$rootProject.routerVersion"
+    annotationProcessor "com.github.mzule.activityrouter:compiler:$rootProject.compilerVersion"
 }

+ 293 - 0
module_app/proguard-rules.pro

@@ -15,3 +15,296 @@
 #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
 #   public *;
 #}
+#---------------------------------基本指令区----------------------------------
+-ignorewarnings
+-dontusemixedcaseclassnames   # 是否使用大小写混合
+-dontpreverify           # 混淆时是否做预校验
+-verbose                # 混淆时是否记录日志
+-printmapping proguardMapping.txt
+-optimizationpasses 5   # 指定代码的压缩级别
+-dontskipnonpubliclibraryclassmembers
+
+
+-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
+-keepattributes *Annotation*,InnerClasses
+-keepattributes Signature # 避免混淆泛型
+-keepattributes EnclosingMethod
+-keepattributes SourceFile,LineNumberTable #运行抛出异常时保留代码行号
+-keepattributes Exceptions # 解决AGPBI警告
+
+#继承自activity,application,service,broadcastReceiver,contentprovider....不进行混淆
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-keep public class * extends android.support.multidex.MultiDexApplication
+-keep public class * extends android.app.Service
+-keep public class * extends android.content.BroadcastReceiver
+-keep public class * extends android.content.ContentProvider
+-keep public class * extends android.app.backup.BackupAgentHelper
+-keep public class * extends android.preference.Preference
+-keep public class * extends android.view.View
+-keep public class com.android.vending.licensing.ILicensingService
+-keep class android.support.** {*;}
+
+# 所有View的子类及其子类的get、set方法都不进行混淆
+-keep public class * extends android.view.View{
+    *** get*();
+    void set*(***);
+    public <init>(android.content.Context);
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+}
+
+-keepclasseswithmembers class * {
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+}
+
+# 这个主要是在layout 中写的onclick方法android:onclick="onClick",不进行混淆
+-keepclassmembers class * extends android.app.Activity {
+   public void *(android.view.View);
+}
+
+
+# 对于带有回调函数onXXEvent的,不能被混淆
+-keepclassmembers class * {
+    void *(*Event);
+}
+
+# 枚举类不能被混淆
+-keepclassmembers enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+
+# natvie 方法不混淆
+-keepclasseswithmembernames class * {
+    native <methods>;
+}
+#litepal数据库不能被混淆
+-keep class org.litepal.** {
+    *;
+}
+-keep class * extends org.litepal.crud.DataSupport {
+    *;
+}
+
+#Glide不能被混淆
+-keep public class * implements com.bumptech.glide.module.GlideModule
+-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
+  **[] $VALUES;
+  public *;
+}
+
+# 保持 Parcelable 不被混淆
+-keep class * implements android.os.Parcelable {
+  public static final android.os.Parcelable$Creator *;
+}
+
+#不混淆Serializable接口的子类中指定的某些成员变量和方法
+-keepclassmembers class * implements java.io.Serializable {
+    static final long serialVersionUID;
+    private 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();
+}
+
+# 不混淆R类里及其所有内部static类中的所有static变量字段
+-keep public class com.guiying.androidmodulepattern.R$*{
+    public static final int *;
+}
+
+# $是用来分割内嵌类与其母体的标志
+-keep class **.R$* {
+ *;
+}
+
+
+-keepclassmembers class * {
+   public <init> (org.json.JSONObject);
+}
+
+#---------------------------------webview------------------------------------
+-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+   public *;
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
+    public boolean *(android.webkit.WebView, java.lang.String);
+}
+
+#---------------------------------实体类---------------------------------
+
+
+#---------------------------------第三方包-------------------------------
+#activityrouter
+-keep class com.github.mzule.activityrouter.router.** { *; }
+
+#友盟统计
+-keep class com.umeng.analytics.** {*;}
+-dontwarn com.umeng.analytics.**
+
+
+#换肤框架的混淆文件
+-keep class solid.ren.skinlibrary.** {*;}
+-dontwarn solid.ren.skinlibrary.**
+
+#高德相关混淆文件
+#3D 地图
+-keep class com.amap.api.** {*;}
+-keep class com.autonavi.** {*;}
+-keep class com.a.a.** {*;}
+-keep class com.loc.** {*;}
+-dontwarn com.amap.api.**
+-dontwarn com.autonavi.**
+-dontwarn com.a.a.**
+-dontwarn com.loc.**
+
+
+# simple-xml-core的SDK
+-keep class org.simpleframework.xml.** {*;}
+-dontwarn org.simpleframework.xml.**
+
+# acra的 SDK
+-keep class org.acra.** {*;}
+-dontwarn org.acra.**
+
+# 网络请求库async-http
+-keep class com.loopj.android.http.** {*;}
+-dontwarn com.loopj.android.http.**
+
+
+#pinyin4j
+-dontwarn net.soureceforge.pinyin4j.**
+-dontwarn demo.**
+-keep class net.sourceforge.pinyin4j.** { *;}
+-keep class demo.** { *;}
+-keep class com.hp.** { *;}
+
+#httpclient (org.apache.http.legacy.jar)
+-dontwarn android.net.compatibility.**
+-dontwarn android.net.http.**
+-dontwarn com.android.internal.http.multipart.**
+-dontwarn org.apache.commons.**
+-dontwarn org.apache.http.**
+-dontwarn org.apache.http.protocol.**
+-keep class android.net.compatibility.**{*;}
+-keep class android.net.http.**{*;}
+-keep class com.android.internal.http.multipart.**{*;}
+-keep class org.apache.commons.**{*;}
+-keep class org.apache.org.**{*;}
+-keep class org.apache.harmony.**{*;}
+
+#图表库
+-keep class com.github.mikephil.charting.** {*;}
+-dontwarn com.github.mikephil.charting.**
+
+# 讯飞语音
+-keep class com.chinaMobile.** {*;}
+-keep class com.iflytek.** {*;}
+-keep class com.iflytek.sunflower.** {*;}
+-dontwarn com.iflytek.sunflower.**
+-dontwarn com.chinaMobile.**
+-dontwarn com.iflytek.**
+
+# greenDao混淆
+-keep class de.greenrobot.dao.** {*;}
+-keepclassmembers class * extends de.greenrobot.dao.AbstractDao {
+    public static Java.lang.String TABLENAME;
+}
+-keep class **$Properties
+
+# gson
+-keep class com.google.gson.** {*;}
+-keep class com.google.**{*;}
+-keep class sun.misc.Unsafe { *; }
+-keep class com.google.gson.stream.** { *; }
+-keep class com.google.gson.examples.android.model.** { *; }
+
+# zxing
+-keep class com.google.zxing.** {*;}
+-dontwarn com.google.zxing.**
+
+##百度定位
+-keep class com.baidu.** {*;}
+-keep class vi.com.** {*;}
+-dontwarn com.baidu.**
+
+## okhttp
+-dontwarn com.squareup.okhttp.**
+-keep class com.squareup.okhttp.{*;}
+
+#okhttp3.x
+-dontwarn com.squareup.okhttp3.**
+-keep class com.squareup.okhttp3.** { *;}
+-dontwarn okio.**
+
+#retrofit
+-dontwarn retrofit.**
+-keep class retrofit.** { *; }
+-keepattributes Signature
+-keepattributes Exceptions
+-dontwarn okio.**
+
+
+#recyclerview-animators
+-keep class jp.wasabeef.** {*;}
+-dontwarn jp.wasabeef.*
+
+#multistateview
+-keep class com.kennyc.view.** { *; }
+-dontwarn com.kennyc.view.*
+
+# universal-image-loader 混淆
+-dontwarn com.nostra13.universalimageloader.**
+-keep class com.nostra13.universalimageloader.** { *; }
+
+
+#-ButterKnife 7.0
+ -keep class butterknife.** { *; }
+ -dontwarn butterknife.internal.**
+ -keep class **$$ViewBinder { *; }
+ -keepclasseswithmembernames class * {
+  @butterknife.* <fields>;
+ }
+ -keepclasseswithmembernames class * {
+ @butterknife.* <methods>;
+ }
+
+#eventbus 3.0
+-keepattributes *Annotation*
+-keepclassmembers class ** {
+    @org.greenrobot.eventbus.Subscribe <methods>;
+}
+-keep enum org.greenrobot.eventbus.ThreadMode { *; }
+-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
+    <init>(java.lang.Throwable);
+}
+
+#EventBus
+-keepclassmembers class ** {
+    public void onEvent*(**);
+}
+-keepclassmembers class ** {
+public void xxxxxx(**);
+}
+
+# support-v4
+-dontwarn android.support.v4.**
+-keep class android.support.v4.app.** { *; }
+-keep interface android.support.v4.app.** { *; }
+-keep class android.support.v4.** { *; }
+
+
+# support-v7
+-dontwarn android.support.v7.**
+-keep class android.support.v7.internal.** { *; }
+-keep interface android.support.v7.internal.** { *; }
+-keep class android.support.v7.** { *; }
+
+# support design
+-dontwarn android.support.design.**
+-keep class android.support.design.** { *; }
+-keep interface android.support.design.** { *; }
+-keep public class android.support.design.R$* { *; }

+ 1 - 1
module_app/src/main/AndroidManifest.xml

@@ -4,7 +4,7 @@
 
     <application
         android:name=".MyApplication"
-        android:allowBackup="true"
+        android:allowBackup="false"
         android:icon="@mipmap/ic_launcher"
         android:label="@string/app_name"
         android:supportsRtl="true"

+ 3 - 8
module_girls/build.gradle

@@ -4,8 +4,6 @@ if (isModule.toBoolean()) {
     apply plugin: 'com.android.library'
 }
 
-apply plugin: 'com.neenbedankt.android-apt'
-
 android {
     compileSdkVersion rootProject.ext.compileSdkVersion
     buildToolsVersion rootProject.ext.buildToolsVersion
@@ -56,16 +54,13 @@ android {
     //但是resourcePrefix这个值只能限定xml里面的资源,并不能限定图片资源,所有图片资源仍然需要手动去修改资源名。
     //resourcePrefix "girls_"
 
-    //执行lint检查,有任何的错误或者警告提示,都会终止构建,可以将其关掉
-    lintOptions {
-        checkReleaseBuilds false
-        abortOnError false
-    }
+
 }
 
 dependencies {
     compile fileTree(dir: 'libs', include: ['*.jar'])
     compile project(':lib_common')
     //router
-    apt "com.github.mzule.activityrouter:compiler:$rootProject.aptCompilerVersion"
+    compile "com.github.mzule.activityrouter:activityrouter:$rootProject.routerVersion"
+    annotationProcessor "com.github.mzule.activityrouter:compiler:$rootProject.compilerVersion"
 }

+ 293 - 0
module_girls/proguard-rules.pro

@@ -15,3 +15,296 @@
 #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
 #   public *;
 #}
+#---------------------------------基本指令区----------------------------------
+-ignorewarnings
+-dontusemixedcaseclassnames   # 是否使用大小写混合
+-dontpreverify           # 混淆时是否做预校验
+-verbose                # 混淆时是否记录日志
+-printmapping proguardMapping.txt
+-optimizationpasses 5   # 指定代码的压缩级别
+-dontskipnonpubliclibraryclassmembers
+
+
+-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
+-keepattributes *Annotation*,InnerClasses
+-keepattributes Signature # 避免混淆泛型
+-keepattributes EnclosingMethod
+-keepattributes SourceFile,LineNumberTable #运行抛出异常时保留代码行号
+-keepattributes Exceptions # 解决AGPBI警告
+
+#继承自activity,application,service,broadcastReceiver,contentprovider....不进行混淆
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-keep public class * extends android.support.multidex.MultiDexApplication
+-keep public class * extends android.app.Service
+-keep public class * extends android.content.BroadcastReceiver
+-keep public class * extends android.content.ContentProvider
+-keep public class * extends android.app.backup.BackupAgentHelper
+-keep public class * extends android.preference.Preference
+-keep public class * extends android.view.View
+-keep public class com.android.vending.licensing.ILicensingService
+-keep class android.support.** {*;}
+
+# 所有View的子类及其子类的get、set方法都不进行混淆
+-keep public class * extends android.view.View{
+    *** get*();
+    void set*(***);
+    public <init>(android.content.Context);
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+}
+
+-keepclasseswithmembers class * {
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+}
+
+# 这个主要是在layout 中写的onclick方法android:onclick="onClick",不进行混淆
+-keepclassmembers class * extends android.app.Activity {
+   public void *(android.view.View);
+}
+
+
+# 对于带有回调函数onXXEvent的,不能被混淆
+-keepclassmembers class * {
+    void *(*Event);
+}
+
+# 枚举类不能被混淆
+-keepclassmembers enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+
+# natvie 方法不混淆
+-keepclasseswithmembernames class * {
+    native <methods>;
+}
+#litepal数据库不能被混淆
+-keep class org.litepal.** {
+    *;
+}
+-keep class * extends org.litepal.crud.DataSupport {
+    *;
+}
+
+#Glide不能被混淆
+-keep public class * implements com.bumptech.glide.module.GlideModule
+-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
+  **[] $VALUES;
+  public *;
+}
+
+# 保持 Parcelable 不被混淆
+-keep class * implements android.os.Parcelable {
+  public static final android.os.Parcelable$Creator *;
+}
+
+#不混淆Serializable接口的子类中指定的某些成员变量和方法
+-keepclassmembers class * implements java.io.Serializable {
+    static final long serialVersionUID;
+    private 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();
+}
+
+# 不混淆R类里及其所有内部static类中的所有static变量字段
+-keep public class com.guiying.androidmodulepattern.R$*{
+    public static final int *;
+}
+
+# $是用来分割内嵌类与其母体的标志
+-keep class **.R$* {
+ *;
+}
+
+
+-keepclassmembers class * {
+   public <init> (org.json.JSONObject);
+}
+
+#---------------------------------webview------------------------------------
+-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+   public *;
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
+    public boolean *(android.webkit.WebView, java.lang.String);
+}
+
+#---------------------------------实体类---------------------------------
+
+
+#---------------------------------第三方包-------------------------------
+#activityrouter
+-keep class com.github.mzule.activityrouter.router.** { *; }
+
+#友盟统计
+-keep class com.umeng.analytics.** {*;}
+-dontwarn com.umeng.analytics.**
+
+
+#换肤框架的混淆文件
+-keep class solid.ren.skinlibrary.** {*;}
+-dontwarn solid.ren.skinlibrary.**
+
+#高德相关混淆文件
+#3D 地图
+-keep class com.amap.api.** {*;}
+-keep class com.autonavi.** {*;}
+-keep class com.a.a.** {*;}
+-keep class com.loc.** {*;}
+-dontwarn com.amap.api.**
+-dontwarn com.autonavi.**
+-dontwarn com.a.a.**
+-dontwarn com.loc.**
+
+
+# simple-xml-core的SDK
+-keep class org.simpleframework.xml.** {*;}
+-dontwarn org.simpleframework.xml.**
+
+# acra的 SDK
+-keep class org.acra.** {*;}
+-dontwarn org.acra.**
+
+# 网络请求库async-http
+-keep class com.loopj.android.http.** {*;}
+-dontwarn com.loopj.android.http.**
+
+
+#pinyin4j
+-dontwarn net.soureceforge.pinyin4j.**
+-dontwarn demo.**
+-keep class net.sourceforge.pinyin4j.** { *;}
+-keep class demo.** { *;}
+-keep class com.hp.** { *;}
+
+#httpclient (org.apache.http.legacy.jar)
+-dontwarn android.net.compatibility.**
+-dontwarn android.net.http.**
+-dontwarn com.android.internal.http.multipart.**
+-dontwarn org.apache.commons.**
+-dontwarn org.apache.http.**
+-dontwarn org.apache.http.protocol.**
+-keep class android.net.compatibility.**{*;}
+-keep class android.net.http.**{*;}
+-keep class com.android.internal.http.multipart.**{*;}
+-keep class org.apache.commons.**{*;}
+-keep class org.apache.org.**{*;}
+-keep class org.apache.harmony.**{*;}
+
+#图表库
+-keep class com.github.mikephil.charting.** {*;}
+-dontwarn com.github.mikephil.charting.**
+
+# 讯飞语音
+-keep class com.chinaMobile.** {*;}
+-keep class com.iflytek.** {*;}
+-keep class com.iflytek.sunflower.** {*;}
+-dontwarn com.iflytek.sunflower.**
+-dontwarn com.chinaMobile.**
+-dontwarn com.iflytek.**
+
+# greenDao混淆
+-keep class de.greenrobot.dao.** {*;}
+-keepclassmembers class * extends de.greenrobot.dao.AbstractDao {
+    public static Java.lang.String TABLENAME;
+}
+-keep class **$Properties
+
+# gson
+-keep class com.google.gson.** {*;}
+-keep class com.google.**{*;}
+-keep class sun.misc.Unsafe { *; }
+-keep class com.google.gson.stream.** { *; }
+-keep class com.google.gson.examples.android.model.** { *; }
+
+# zxing
+-keep class com.google.zxing.** {*;}
+-dontwarn com.google.zxing.**
+
+##百度定位
+-keep class com.baidu.** {*;}
+-keep class vi.com.** {*;}
+-dontwarn com.baidu.**
+
+## okhttp
+-dontwarn com.squareup.okhttp.**
+-keep class com.squareup.okhttp.{*;}
+
+#okhttp3.x
+-dontwarn com.squareup.okhttp3.**
+-keep class com.squareup.okhttp3.** { *;}
+-dontwarn okio.**
+
+#retrofit
+-dontwarn retrofit.**
+-keep class retrofit.** { *; }
+-keepattributes Signature
+-keepattributes Exceptions
+-dontwarn okio.**
+
+
+#recyclerview-animators
+-keep class jp.wasabeef.** {*;}
+-dontwarn jp.wasabeef.*
+
+#multistateview
+-keep class com.kennyc.view.** { *; }
+-dontwarn com.kennyc.view.*
+
+# universal-image-loader 混淆
+-dontwarn com.nostra13.universalimageloader.**
+-keep class com.nostra13.universalimageloader.** { *; }
+
+
+#-ButterKnife 7.0
+ -keep class butterknife.** { *; }
+ -dontwarn butterknife.internal.**
+ -keep class **$$ViewBinder { *; }
+ -keepclasseswithmembernames class * {
+  @butterknife.* <fields>;
+ }
+ -keepclasseswithmembernames class * {
+ @butterknife.* <methods>;
+ }
+
+#eventbus 3.0
+-keepattributes *Annotation*
+-keepclassmembers class ** {
+    @org.greenrobot.eventbus.Subscribe <methods>;
+}
+-keep enum org.greenrobot.eventbus.ThreadMode { *; }
+-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
+    <init>(java.lang.Throwable);
+}
+
+#EventBus
+-keepclassmembers class ** {
+    public void onEvent*(**);
+}
+-keepclassmembers class ** {
+public void xxxxxx(**);
+}
+
+# support-v4
+-dontwarn android.support.v4.**
+-keep class android.support.v4.app.** { *; }
+-keep interface android.support.v4.app.** { *; }
+-keep class android.support.v4.** { *; }
+
+
+# support-v7
+-dontwarn android.support.v7.**
+-keep class android.support.v7.internal.** { *; }
+-keep interface android.support.v7.internal.** { *; }
+-keep class android.support.v7.** { *; }
+
+# support design
+-dontwarn android.support.design.**
+-keep class android.support.design.** { *; }
+-keep interface android.support.design.** { *; }
+-keep public class android.support.design.R$* { *; }

+ 2 - 8
module_main/build.gradle

@@ -4,8 +4,6 @@ if (isModule.toBoolean()) {
     apply plugin: 'com.android.library'
 }
 
-apply plugin: 'com.neenbedankt.android-apt'
-
 android {
     compileSdkVersion rootProject.ext.compileSdkVersion
     buildToolsVersion rootProject.ext.buildToolsVersion
@@ -56,16 +54,12 @@ android {
     //但是resourcePrefix这个值只能限定xml里面的资源,并不能限定图片资源,所有图片资源仍然需要手动去修改资源名。
     //resourcePrefix "girls_"
 
-    //执行lint检查,有任何的错误或者警告提示,都会终止构建,可以将其关掉
-    lintOptions {
-        checkReleaseBuilds false
-        abortOnError false
-    }
 }
 
 dependencies {
     compile fileTree(dir: 'libs', include: ['*.jar'])
     compile project(':lib_common')
     //router
-    apt "com.github.mzule.activityrouter:compiler:$rootProject.aptCompilerVersion"
+    compile "com.github.mzule.activityrouter:activityrouter:$rootProject.routerVersion"
+    annotationProcessor "com.github.mzule.activityrouter:compiler:$rootProject.compilerVersion"
 }

+ 294 - 6
module_main/proguard-rules.pro

@@ -15,11 +15,299 @@
 #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
 #   public *;
 #}
+#---------------------------------基本指令区----------------------------------
+-ignorewarnings
+-dontusemixedcaseclassnames   # 是否使用大小写混合
+-dontpreverify           # 混淆时是否做预校验
+-verbose                # 混淆时是否记录日志
+-printmapping proguardMapping.txt
+-optimizationpasses 5   # 指定代码的压缩级别
+-dontskipnonpubliclibraryclassmembers
 
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
 
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile
+-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
+-keepattributes *Annotation*,InnerClasses
+-keepattributes Signature # 避免混淆泛型
+-keepattributes EnclosingMethod
+-keepattributes SourceFile,LineNumberTable #运行抛出异常时保留代码行号
+-keepattributes Exceptions # 解决AGPBI警告
+
+#继承自activity,application,service,broadcastReceiver,contentprovider....不进行混淆
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-keep public class * extends android.support.multidex.MultiDexApplication
+-keep public class * extends android.app.Service
+-keep public class * extends android.content.BroadcastReceiver
+-keep public class * extends android.content.ContentProvider
+-keep public class * extends android.app.backup.BackupAgentHelper
+-keep public class * extends android.preference.Preference
+-keep public class * extends android.view.View
+-keep public class com.android.vending.licensing.ILicensingService
+-keep class android.support.** {*;}
+
+# 所有View的子类及其子类的get、set方法都不进行混淆
+-keep public class * extends android.view.View{
+    *** get*();
+    void set*(***);
+    public <init>(android.content.Context);
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+}
+
+-keepclasseswithmembers class * {
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+}
+
+# 这个主要是在layout 中写的onclick方法android:onclick="onClick",不进行混淆
+-keepclassmembers class * extends android.app.Activity {
+   public void *(android.view.View);
+}
+
+
+# 对于带有回调函数onXXEvent的,不能被混淆
+-keepclassmembers class * {
+    void *(*Event);
+}
+
+# 枚举类不能被混淆
+-keepclassmembers enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+
+# natvie 方法不混淆
+-keepclasseswithmembernames class * {
+    native <methods>;
+}
+#litepal数据库不能被混淆
+-keep class org.litepal.** {
+    *;
+}
+-keep class * extends org.litepal.crud.DataSupport {
+    *;
+}
+
+#Glide不能被混淆
+-keep public class * implements com.bumptech.glide.module.GlideModule
+-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
+  **[] $VALUES;
+  public *;
+}
+
+# 保持 Parcelable 不被混淆
+-keep class * implements android.os.Parcelable {
+  public static final android.os.Parcelable$Creator *;
+}
+
+#不混淆Serializable接口的子类中指定的某些成员变量和方法
+-keepclassmembers class * implements java.io.Serializable {
+    static final long serialVersionUID;
+    private 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();
+}
+
+# 不混淆R类里及其所有内部static类中的所有static变量字段
+-keep public class com.guiying.androidmodulepattern.R$*{
+    public static final int *;
+}
+
+# $是用来分割内嵌类与其母体的标志
+-keep class **.R$* {
+ *;
+}
+
+
+-keepclassmembers class * {
+   public <init> (org.json.JSONObject);
+}
+
+#---------------------------------webview------------------------------------
+-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+   public *;
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
+    public boolean *(android.webkit.WebView, java.lang.String);
+}
+
+
+
+#---------------------------------实体类---------------------------------
+
+
+
+#---------------------------------第三方包-------------------------------
+#activityrouter
+-keep class com.github.mzule.activityrouter.router.** { *; }
+
+#友盟统计
+-keep class com.umeng.analytics.** {*;}
+-dontwarn com.umeng.analytics.**
+
+
+#换肤框架的混淆文件
+-keep class solid.ren.skinlibrary.** {*;}
+-dontwarn solid.ren.skinlibrary.**
+
+#高德相关混淆文件
+#3D 地图
+-keep class com.amap.api.** {*;}
+-keep class com.autonavi.** {*;}
+-keep class com.a.a.** {*;}
+-keep class com.loc.** {*;}
+-dontwarn com.amap.api.**
+-dontwarn com.autonavi.**
+-dontwarn com.a.a.**
+-dontwarn com.loc.**
+
+
+# simple-xml-core的SDK
+-keep class org.simpleframework.xml.** {*;}
+-dontwarn org.simpleframework.xml.**
+
+# acra的 SDK
+-keep class org.acra.** {*;}
+-dontwarn org.acra.**
+
+# 网络请求库async-http
+-keep class com.loopj.android.http.** {*;}
+-dontwarn com.loopj.android.http.**
+
+
+#pinyin4j
+-dontwarn net.soureceforge.pinyin4j.**
+-dontwarn demo.**
+-keep class net.sourceforge.pinyin4j.** { *;}
+-keep class demo.** { *;}
+-keep class com.hp.** { *;}
+
+#httpclient (org.apache.http.legacy.jar)
+-dontwarn android.net.compatibility.**
+-dontwarn android.net.http.**
+-dontwarn com.android.internal.http.multipart.**
+-dontwarn org.apache.commons.**
+-dontwarn org.apache.http.**
+-dontwarn org.apache.http.protocol.**
+-keep class android.net.compatibility.**{*;}
+-keep class android.net.http.**{*;}
+-keep class com.android.internal.http.multipart.**{*;}
+-keep class org.apache.commons.**{*;}
+-keep class org.apache.org.**{*;}
+-keep class org.apache.harmony.**{*;}
+
+#图表库
+-keep class com.github.mikephil.charting.** {*;}
+-dontwarn com.github.mikephil.charting.**
+
+# 讯飞语音
+-keep class com.chinaMobile.** {*;}
+-keep class com.iflytek.** {*;}
+-keep class com.iflytek.sunflower.** {*;}
+-dontwarn com.iflytek.sunflower.**
+-dontwarn com.chinaMobile.**
+-dontwarn com.iflytek.**
+
+# greenDao混淆
+-keep class de.greenrobot.dao.** {*;}
+-keepclassmembers class * extends de.greenrobot.dao.AbstractDao {
+    public static Java.lang.String TABLENAME;
+}
+-keep class **$Properties
+
+# gson
+-keep class com.google.gson.** {*;}
+-keep class com.google.**{*;}
+-keep class sun.misc.Unsafe { *; }
+-keep class com.google.gson.stream.** { *; }
+-keep class com.google.gson.examples.android.model.** { *; }
+
+# zxing
+-keep class com.google.zxing.** {*;}
+-dontwarn com.google.zxing.**
+
+##百度定位
+-keep class com.baidu.** {*;}
+-keep class vi.com.** {*;}
+-dontwarn com.baidu.**
+
+## okhttp
+-dontwarn com.squareup.okhttp.**
+-keep class com.squareup.okhttp.{*;}
+
+#okhttp3.x
+-dontwarn com.squareup.okhttp3.**
+-keep class com.squareup.okhttp3.** { *;}
+-dontwarn okio.**
+
+#retrofit
+-dontwarn retrofit.**
+-keep class retrofit.** { *; }
+-keepattributes Signature
+-keepattributes Exceptions
+-dontwarn okio.**
+
+
+#recyclerview-animators
+-keep class jp.wasabeef.** {*;}
+-dontwarn jp.wasabeef.*
+
+#multistateview
+-keep class com.kennyc.view.** { *; }
+-dontwarn com.kennyc.view.*
+
+# universal-image-loader 混淆
+-dontwarn com.nostra13.universalimageloader.**
+-keep class com.nostra13.universalimageloader.** { *; }
+
+
+#-ButterKnife 7.0
+ -keep class butterknife.** { *; }
+ -dontwarn butterknife.internal.**
+ -keep class **$$ViewBinder { *; }
+ -keepclasseswithmembernames class * {
+  @butterknife.* <fields>;
+ }
+ -keepclasseswithmembernames class * {
+ @butterknife.* <methods>;
+ }
+
+#eventbus 3.0
+-keepattributes *Annotation*
+-keepclassmembers class ** {
+    @org.greenrobot.eventbus.Subscribe <methods>;
+}
+-keep enum org.greenrobot.eventbus.ThreadMode { *; }
+-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
+    <init>(java.lang.Throwable);
+}
+
+#EventBus
+-keepclassmembers class ** {
+    public void onEvent*(**);
+}
+-keepclassmembers class ** {
+public void xxxxxx(**);
+}
+
+# support-v4
+-dontwarn android.support.v4.**
+-keep class android.support.v4.app.** { *; }
+-keep interface android.support.v4.app.** { *; }
+-keep class android.support.v4.** { *; }
+
+
+# support-v7
+-dontwarn android.support.v7.**
+-keep class android.support.v7.internal.** { *; }
+-keep interface android.support.v7.internal.** { *; }
+-keep class android.support.v7.** { *; }
+
+# support design
+-dontwarn android.support.design.**
+-keep class android.support.design.** { *; }
+-keep interface android.support.design.** { *; }
+-keep public class android.support.design.R$* { *; }

+ 4 - 8
module_news/build.gradle

@@ -4,8 +4,6 @@ if (isModule.toBoolean()) {
     apply plugin: 'com.android.library'
 }
 
-apply plugin: 'com.neenbedankt.android-apt'
-
 android {
     compileSdkVersion rootProject.ext.compileSdkVersion
     buildToolsVersion rootProject.ext.buildToolsVersion
@@ -52,20 +50,18 @@ android {
             }
         }
     }
+
     //设置了resourcePrefix值后,所有的资源名必须以指定的字符串做前缀,否则会报错。
     //但是resourcePrefix这个值只能限定xml里面的资源,并不能限定图片资源,所有图片资源仍然需要手动去修改资源名。
     //resourcePrefix "girls_"
 
-    //执行lint检查,有任何的错误或者警告提示,都会终止构建,可以将其关掉
-    lintOptions {
-        checkReleaseBuilds false
-        abortOnError false
-    }
+
 }
 
 dependencies {
     compile fileTree(dir: 'libs', include: ['*.jar'])
     compile project(':lib_common')
     //router
-    apt "com.github.mzule.activityrouter:compiler:$rootProject.aptCompilerVersion"
+    compile "com.github.mzule.activityrouter:activityrouter:$rootProject.routerVersion"
+    annotationProcessor "com.github.mzule.activityrouter:compiler:$rootProject.compilerVersion"
 }

+ 293 - 0
module_news/proguard-rules.pro

@@ -15,3 +15,296 @@
 #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
 #   public *;
 #}
+#---------------------------------基本指令区----------------------------------
+-ignorewarnings
+-dontusemixedcaseclassnames   # 是否使用大小写混合
+-dontpreverify           # 混淆时是否做预校验
+-verbose                # 混淆时是否记录日志
+-printmapping proguardMapping.txt
+-optimizationpasses 5   # 指定代码的压缩级别
+-dontskipnonpubliclibraryclassmembers
+
+
+-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
+-keepattributes *Annotation*,InnerClasses
+-keepattributes Signature # 避免混淆泛型
+-keepattributes EnclosingMethod
+-keepattributes SourceFile,LineNumberTable #运行抛出异常时保留代码行号
+-keepattributes Exceptions # 解决AGPBI警告
+
+#继承自activity,application,service,broadcastReceiver,contentprovider....不进行混淆
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-keep public class * extends android.support.multidex.MultiDexApplication
+-keep public class * extends android.app.Service
+-keep public class * extends android.content.BroadcastReceiver
+-keep public class * extends android.content.ContentProvider
+-keep public class * extends android.app.backup.BackupAgentHelper
+-keep public class * extends android.preference.Preference
+-keep public class * extends android.view.View
+-keep public class com.android.vending.licensing.ILicensingService
+-keep class android.support.** {*;}
+
+# 所有View的子类及其子类的get、set方法都不进行混淆
+-keep public class * extends android.view.View{
+    *** get*();
+    void set*(***);
+    public <init>(android.content.Context);
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+}
+
+-keepclasseswithmembers class * {
+    public <init>(android.content.Context, android.util.AttributeSet);
+    public <init>(android.content.Context, android.util.AttributeSet, int);
+}
+
+# 这个主要是在layout 中写的onclick方法android:onclick="onClick",不进行混淆
+-keepclassmembers class * extends android.app.Activity {
+   public void *(android.view.View);
+}
+
+
+# 对于带有回调函数onXXEvent的,不能被混淆
+-keepclassmembers class * {
+    void *(*Event);
+}
+
+# 枚举类不能被混淆
+-keepclassmembers enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+
+# natvie 方法不混淆
+-keepclasseswithmembernames class * {
+    native <methods>;
+}
+#litepal数据库不能被混淆
+-keep class org.litepal.** {
+    *;
+}
+-keep class * extends org.litepal.crud.DataSupport {
+    *;
+}
+
+#Glide不能被混淆
+-keep public class * implements com.bumptech.glide.module.GlideModule
+-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
+  **[] $VALUES;
+  public *;
+}
+
+# 保持 Parcelable 不被混淆
+-keep class * implements android.os.Parcelable {
+  public static final android.os.Parcelable$Creator *;
+}
+
+#不混淆Serializable接口的子类中指定的某些成员变量和方法
+-keepclassmembers class * implements java.io.Serializable {
+    static final long serialVersionUID;
+    private 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();
+}
+
+# 不混淆R类里及其所有内部static类中的所有static变量字段
+-keep public class com.guiying.androidmodulepattern.R$*{
+    public static final int *;
+}
+
+# $是用来分割内嵌类与其母体的标志
+-keep class **.R$* {
+ *;
+}
+
+
+-keepclassmembers class * {
+   public <init> (org.json.JSONObject);
+}
+
+#---------------------------------webview------------------------------------
+-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+   public *;
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
+    public boolean *(android.webkit.WebView, java.lang.String);
+}
+
+#---------------------------------实体类---------------------------------
+
+
+#---------------------------------第三方包-------------------------------
+#activityrouter
+-keep class com.github.mzule.activityrouter.router.** { *; }
+
+#友盟统计
+-keep class com.umeng.analytics.** {*;}
+-dontwarn com.umeng.analytics.**
+
+
+#换肤框架的混淆文件
+-keep class solid.ren.skinlibrary.** {*;}
+-dontwarn solid.ren.skinlibrary.**
+
+#高德相关混淆文件
+#3D 地图
+-keep class com.amap.api.** {*;}
+-keep class com.autonavi.** {*;}
+-keep class com.a.a.** {*;}
+-keep class com.loc.** {*;}
+-dontwarn com.amap.api.**
+-dontwarn com.autonavi.**
+-dontwarn com.a.a.**
+-dontwarn com.loc.**
+
+
+# simple-xml-core的SDK
+-keep class org.simpleframework.xml.** {*;}
+-dontwarn org.simpleframework.xml.**
+
+# acra的 SDK
+-keep class org.acra.** {*;}
+-dontwarn org.acra.**
+
+# 网络请求库async-http
+-keep class com.loopj.android.http.** {*;}
+-dontwarn com.loopj.android.http.**
+
+
+#pinyin4j
+-dontwarn net.soureceforge.pinyin4j.**
+-dontwarn demo.**
+-keep class net.sourceforge.pinyin4j.** { *;}
+-keep class demo.** { *;}
+-keep class com.hp.** { *;}
+
+#httpclient (org.apache.http.legacy.jar)
+-dontwarn android.net.compatibility.**
+-dontwarn android.net.http.**
+-dontwarn com.android.internal.http.multipart.**
+-dontwarn org.apache.commons.**
+-dontwarn org.apache.http.**
+-dontwarn org.apache.http.protocol.**
+-keep class android.net.compatibility.**{*;}
+-keep class android.net.http.**{*;}
+-keep class com.android.internal.http.multipart.**{*;}
+-keep class org.apache.commons.**{*;}
+-keep class org.apache.org.**{*;}
+-keep class org.apache.harmony.**{*;}
+
+#图表库
+-keep class com.github.mikephil.charting.** {*;}
+-dontwarn com.github.mikephil.charting.**
+
+# 讯飞语音
+-keep class com.chinaMobile.** {*;}
+-keep class com.iflytek.** {*;}
+-keep class com.iflytek.sunflower.** {*;}
+-dontwarn com.iflytek.sunflower.**
+-dontwarn com.chinaMobile.**
+-dontwarn com.iflytek.**
+
+# greenDao混淆
+-keep class de.greenrobot.dao.** {*;}
+-keepclassmembers class * extends de.greenrobot.dao.AbstractDao {
+    public static Java.lang.String TABLENAME;
+}
+-keep class **$Properties
+
+# gson
+-keep class com.google.gson.** {*;}
+-keep class com.google.**{*;}
+-keep class sun.misc.Unsafe { *; }
+-keep class com.google.gson.stream.** { *; }
+-keep class com.google.gson.examples.android.model.** { *; }
+
+# zxing
+-keep class com.google.zxing.** {*;}
+-dontwarn com.google.zxing.**
+
+##百度定位
+-keep class com.baidu.** {*;}
+-keep class vi.com.** {*;}
+-dontwarn com.baidu.**
+
+## okhttp
+-dontwarn com.squareup.okhttp.**
+-keep class com.squareup.okhttp.{*;}
+
+#okhttp3.x
+-dontwarn com.squareup.okhttp3.**
+-keep class com.squareup.okhttp3.** { *;}
+-dontwarn okio.**
+
+#retrofit
+-dontwarn retrofit.**
+-keep class retrofit.** { *; }
+-keepattributes Signature
+-keepattributes Exceptions
+-dontwarn okio.**
+
+
+#recyclerview-animators
+-keep class jp.wasabeef.** {*;}
+-dontwarn jp.wasabeef.*
+
+#multistateview
+-keep class com.kennyc.view.** { *; }
+-dontwarn com.kennyc.view.*
+
+# universal-image-loader 混淆
+-dontwarn com.nostra13.universalimageloader.**
+-keep class com.nostra13.universalimageloader.** { *; }
+
+
+#-ButterKnife 7.0
+ -keep class butterknife.** { *; }
+ -dontwarn butterknife.internal.**
+ -keep class **$$ViewBinder { *; }
+ -keepclasseswithmembernames class * {
+  @butterknife.* <fields>;
+ }
+ -keepclasseswithmembernames class * {
+ @butterknife.* <methods>;
+ }
+
+#eventbus 3.0
+-keepattributes *Annotation*
+-keepclassmembers class ** {
+    @org.greenrobot.eventbus.Subscribe <methods>;
+}
+-keep enum org.greenrobot.eventbus.ThreadMode { *; }
+-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
+    <init>(java.lang.Throwable);
+}
+
+#EventBus
+-keepclassmembers class ** {
+    public void onEvent*(**);
+}
+-keepclassmembers class ** {
+public void xxxxxx(**);
+}
+
+# support-v4
+-dontwarn android.support.v4.**
+-keep class android.support.v4.app.** { *; }
+-keep interface android.support.v4.app.** { *; }
+-keep class android.support.v4.** { *; }
+
+
+# support-v7
+-dontwarn android.support.v7.**
+-keep class android.support.v7.internal.** { *; }
+-keep interface android.support.v7.internal.** { *; }
+-keep class android.support.v7.** { *; }
+
+# support design
+-dontwarn android.support.design.**
+-keep class android.support.design.** { *; }
+-keep interface android.support.design.** { *; }
+-keep public class android.support.design.R$* { *; }