Просмотр исходного кода

Merge branch 'developer' of https://gitlab.com/Arisono/SkWeiChat-Baidu into feature_bitliker

Bitliker 7 лет назад
Родитель
Сommit
6bdd16bf3a
27 измененных файлов с 2385 добавлено и 344 удалено
  1. 1 74
      WeiChat/build.gradle
  2. 226 9
      WeiChat/proguard-rules.pro
  3. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/platform/task/TaskActivity.java
  4. 1 3
      WeiChat/src/main/res/layout/activity_subscription2.xml
  5. 11 9
      WeiChat/src/main/res/layout/item_subscription_first.xml
  6. 10 8
      WeiChat/src/main/res/layout/item_subscription_more.xml
  7. 0 32
      WeiChat/src/main/res/layout/recycler_empty_view.xml
  8. 4 8
      app_core/common/src/main/res/layout/activity_subscription2.xml
  9. 11 9
      app_core/common/src/main/res/layout/item_subscription_first.xml
  10. 10 8
      app_core/common/src/main/res/layout/item_subscription_more.xml
  11. 0 5
      app_core/common/src/main/res/layout/layout_menu_person_info.xml
  12. 24 26
      app_core/common/src/main/res/layout/recycler_empty_view.xml
  13. 1 1
      app_core/common/src/main/res/values/colors.xml
  14. 224 15
      app_modular/appbooking/proguard-rules.pro
  15. 225 16
      app_modular/appcontact/proguard-rules.pro
  16. 224 15
      app_modular/applogin/proguard-rules.pro
  17. 7 0
      app_modular/applogin/src/main/res/drawable/shape_edittext_white_cursor.xml
  18. 4 2
      app_modular/applogin/src/main/res/layout/activity_login.xml
  19. 225 16
      app_modular/appme/proguard-rules.pro
  20. 225 16
      app_modular/appmessages/proguard-rules.pro
  21. 11 0
      app_modular/appmessages/src/main/java/com/modular/appmessages/activity/RealTimeFormActivity.java
  22. 37 12
      app_modular/appmessages/src/main/res/layout/activity_real_time_form.xml
  23. 227 10
      app_modular/appmoments/proguard-rules.pro
  24. 225 16
      app_modular/apptasks/proguard-rules.pro
  25. 225 16
      app_modular/apputils/proguard-rules.pro
  26. 225 16
      app_modular/appworks/proguard-rules.pro
  27. 1 1
      build.gradle

+ 1 - 74
WeiChat/build.gradle

@@ -1,7 +1,6 @@
 apply plugin: 'com.android.application'
 apply plugin: 'com.getkeepsafe.dexcount'
 apply plugin: 'me.tatarka.retrolambda'
-apply plugin: 'AndResGuard'
 
 //定义时间
 def releaseTime() {
@@ -101,7 +100,7 @@ android {
     buildTypes {
         release {
             minifyEnabled false
-            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
             signingConfig signingConfigs.config
         }
         debug {
@@ -147,78 +146,6 @@ android {
     }*/
 }
 
-andResGuard {
-    // mappingFile = file("./resource_mapping.txt")
-    mappingFile = null
-    use7zip = true
-    useSign = true
-    // 打开这个开关,会keep住所有资源的原始路径,只混淆资源的名字
-    keepRoot = false
-    whiteList = [
-            // for your icon
-            "R.drawable.uuu",
-            // for fabric
-            "R.string.com.crashlytics.*",
-            // for google-services
-            "R.string.google_app_id",
-            "R.string.gcm_defaultSenderId",
-            "R.string.default_web_client_id",
-            "R.string.ga_trackingId",
-            "R.string.firebase_database_url",
-            "R.string.google_api_key",
-            "R.string.google_crash_reporting_api_key",
-            "R.dimen.rc_*",
-            //for umeng
-            "R.anim.umeng*",
-            "R.string.umeng*",
-            "R.string.UM*",
-            "R.string.tb_*",
-            "R.layout.umeng*",
-            "R.layout.socialize_*",
-            "R.layout.*messager*",
-            "R.layout.tb_*",
-            "R.color.umeng*",
-            "R.color.tb_*",
-            "R.style.*UM*",
-            "R.style.rc_*",
-            "R.style.umeng*",
-            "R.drawable.umeng*",
-            "R.drawable.tb_*",
-            "R.drawable.sina*",
-            "R.drawable.qq_*",
-            "R.drawable.tb_*",
-            "R.id.umeng*",
-            "R.id.*messager*",
-            "R.id.rc_*",
-            "R.id.progress_bar_parent",
-            "R.id.socialize_*",
-            "R.id.webView",
-            //for jpush
-            "R.drawable.jpush_notification_icon"
-    ]
-    compressFilePattern = [
-            "*.png",
-            "*.jpg",
-            "*.jpeg",
-            "*.gif",
-    ]
-    sevenzip {
-        artifact = 'com.tencent.mm:SevenZip:1.2.13'
-        //path = "/usr/local/bin/7za"
-    }
-
-    /**
-     * 可选: 如果不设置则会默认覆盖assemble输出的apk
-     **/
-    // finalApkBackupPath = "${project.rootDir}/final.apk"
-
-    /**
-     * 可选: 指定v1签名时生成jar文件的摘要算法
-     * 默认值为“SHA-1”
-     **/
-    // digestalg = "SHA-256"
-}
-
 dependencies {
     compile fileTree(include: ['*.jar'], dir: 'libs')
     testCompile deps.junit

+ 226 - 9
WeiChat/proguard-rules.pro

@@ -3,15 +3,232 @@
 # in C:\Android\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
+###############################
+#1.基本指令区
+# 代码混淆压缩比,在0~7之间,默认为5,一般不做修改
+-optimizationpasses 5
+# 混合时不使用大小写混合,混合后的类名为小写
+-dontusemixedcaseclassnames
+# 指定不去忽略非公共库的类
+-dontskipnonpubliclibraryclasses
+# 这句话能够使我们的项目混淆后产生映射文件
+# 包含有类名->混淆后类名的映射关系
+-verbose
+# 指定不去忽略非公共库的类成员
+-dontskipnonpubliclibraryclassmembers
+# 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
+-dontpreverify
+# 保留Annotation不混淆
+-keepattributes *Annotation*,InnerClasses
+# 避免混淆泛型
+-keepattributes Signature
+# 抛出异常时保留代码行号
+-keepattributes SourceFile,LineNumberTable
+# 指定混淆是采用的算法,后面的参数是一个过滤器
+# 这个过滤器是谷歌推荐的算法,一般不做更改
+-optimizations !code/simplification/cast,!field/*,!class/merging/*
+
+#2.默认保留区
+# 保留我们使用的四大组件,自定义的Application等等这些类不被混淆
+# 因为这些子类都有可能被外部调用
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-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
+# 保留support下的所有类及其内部类
+-keep class android.support.** {*;}
+# 保留继承的
+-keep public class * extends android.support.v4.**
+-keep public class * extends android.support.v7.**
+-keep public class * extends android.support.annotation.**
+# 保留R下面的资源
+-keep class **.R$* {*;}
+
+# 保留本地native方法不被混淆
+-keepclasseswithmembernames class * {
+    native <methods>;
+}
+# 保留在Activity中的方法参数是view的方法,
+# 这样以来我们在layout中写的onClick就不会被影响
+-keepclassmembers class * extends android.app.Activity{
+    public void *(android.view.View);
+}
+# 保留枚举类不被混淆
+-keepclassmembers enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+# 保留我们自定义控件(继承自View)不被混淆
+-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);
+}
+
+# 保留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;
+    !static !transient <fields>;
+    !private <fields>;
+    !private <methods>;
+    private void writeObject(java.io.ObjectOutputStream);
+    private void readObject(java.io.ObjectInputStream);
+    java.lang.Object writeReplace();
+    java.lang.Object readResolve();
+}
+# 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
+-keepclassmembers class * {
+    void *(**On*Event);
+}
 
-# Add any project specific keep options here:
+#3.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);
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.webView, jav.lang.String);
+}
+#移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用
+#这里可以作为禁止log打印的功能使用,另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制
+-assumenosideeffects class android.util.Log {
+    public static *** v(...);
+    public static *** i(...);
+    public static *** d(...);
+    public static *** w(...);
+    public static *** e(...);
+}
+
+
+###############################
+#
+# 第三方jar包
+#
+###############################
+-keep class com.baidu.** {*;}
+-keep class vi.com.** {*;}
+-dontwarn com.baidu.**
+
+-keep class com.uuzuche.lib_zxing.** {*;}
+-keep class com.andreabaccega.** {*;}
+-keep class com.github.clans.fab.** {*;}
+-keep class com.yalantis.phoenix.** {*;}
+-keep class com.baoyz.swipemenulistview.** {*;}
+-keep class com.viewpagerindicator.** {*;}
+-keep class com.afollestad.materialdialogs.** {*;}
+-keep class com.github.mikephil.charting.** {*;}
+-keep class com.module.recyclerlibrary.** {*;}
+-keep class com.handmark.pulltorefresh.library.** {*;}
+-keep class cc.cloudist.acplibrary.** {*;}
+
+-keep class android.arch.core.internal.** {*;}
+-keep class android.arch.lifecycle.** {*;}
+-keep class com.alibaba.fastjson.** {*;}
+-dontwarn com.alibaba.fastjson.**
+-keep class android.support.graphics.drawable.** {*;}
+-keep class com.facebook.stetho.** {*;}
+-keep class javax.annotation.** {*;}
+-keep class com.lidroid.xutils.** {*;}
+-keep class okhttp3.** {*;}
+-keep class okio.** {*;}
+-dontwarn okio.**
+-keep class org.apache.** {*;}
+-keep class org.junit.** {*;}
+-keep class junit.** {*;}
+-keep class org.hamcrest.** {*;}
+
+-keep class sun.misc.Unsafe {*;}
+-keep class com.google.gson.** {*;}
+-keep class com.google.gson.stream.** {*;}
+-keep class com.android.volley.** {*;}
+
+-keep class butterknife.** {*;}
+-dontwarn butterknife.internal.**
+-keep class **$$ViewBinder { *; }
+
+-keep class cat.ereza.customactivityoncrash.** {*;}
+-keep class uk.co.senab.photoview.** {*;}
+-keep class com.flipboard.bottomsheet.** {*;}
+-keep class flipboard.bottomsheet.** {*;}
+-keep class com.bumptech.glide.** {*;}
+-keep class com.chad.library.** {*;}
+-keep class com.tonicartos.widget.stickygridheaders.** {*;}
+-keep class com.orhanobut.logger.** {*;}
+-keep class com.readystatesoftware.systembartint.** {*;}
+-keep class com.scwang.smartrefresh.** {*;}
+-keep class com.squareup.** {*;}
+-keep class com.tencent.** {*;}
+-keep class com.umeng.analytics.** {*;}
+-keep class com.youth.banner.** {*;}
+-keep class de.hdodenhof.circleimageview.** {*;}
+-keep class rx.** {*;}
+-keep class org.joda.time.** {*;}
+-keep class me.gujun.android.taggroup.** {*;}
+-keep class me.zhanghai.android.materialprogressbar.** {*;}
+-keep class android.net.** {*;}
+-keep class com.android.internal.http.multipart.** {*;}
+-keep class pl.droidsonroids.gif.** {*;}
+-keep class se.emilsjolander.stickylistheaders.** {*;}
+-keep class com.alipay.** {*;}
+-dontwarn com.alipay.**
+-keep class com.tencent.mm.sdk.** {
+   *;
+}
+
+###############################
+#
+# 自己的代码
+# 引用的其他Module可以直接在app的这个混淆文件里配置
+#
+###############################
+#实体类
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appcontact.model.** {*;}
+-keep class com.modular.login.model.** {*;}
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appme.settings.model.** {*;}
+-keep class com.modular.appmessages.model.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+-keep class com.uas.appworks.model.** {*;}
+-keep class com.xzjmyk.pm.activity.bean.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+#自定义控件
+-keep class com.core.widget.** {*;}
+-keep class com.modular.booking.widget.** {*;}
+-keep class com.uas.appcontact.ui.widget.stickylistheaders.** {*;}
+-keep class com.uas.appme.widget.** {*;}
+-keep class com.modular.appmessages.widget.** {*;}
+-keep class com.modular.apputils.widget.** {*;}
+-keep class com.uas.appworks.widget.** {*;}
+-keep class com.ipaulpro.afilechooser.** {*;}
+-keep class com.roamer.slidelistview.** {*;}
+-keep class com.xzjmyk.pm.activity.view.** {*;}
+-keep class com.xzjmyk.pm.activity.video.** {*;}
+-keep class com.modular.apputils.utils.** {*;}
+#与js互相调用的类
+-keep class com.com.xzjmyk.pm.activity.ui.erp.activity.WebViewCommActivity.JSWebView
 
-# 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 *;
-#}

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/platform/task/TaskActivity.java

@@ -264,7 +264,7 @@ public class TaskActivity extends SupportToolBarActivity implements OnClickListe
         mEmptyLayout.setShowEmptyButton(false);
         mEmptyLayout.setShowErrorButton(false);
         mEmptyLayout.setShowLoadingButton(false);
-//        mEmptyLayout.showEmpty();
+        mEmptyLayout.showEmpty();
         //加载网络数据
         new Thread(new getallprocess_run()).start();
 //        sendResquestForServer("START", 2);

+ 1 - 3
WeiChat/src/main/res/layout/activity_subscription2.xml

@@ -19,9 +19,7 @@
             android:layout_alignParentLeft="true"
             android:layout_alignParentStart="true"
             android:layout_marginBottom="@dimen/padding"
-            android:layout_alignParentTop="true"
-            android:paddingLeft="@dimen/sub_padding"
-            android:paddingRight="@dimen/sub_padding" />
+            android:layout_alignParentTop="true" />
     </com.module.recyclerlibrary.ui.refresh.simlpe.SimpleRefreshLayout>
 
 

+ 11 - 9
WeiChat/src/main/res/layout/item_subscription_first.xml

@@ -1,16 +1,18 @@
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:padding="10dp"
-    android:background="@color/white"
-    android:orientation="vertical">
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="15dp"
+                android:layout_marginRight="15dp"
+                android:background="@color/white"
+                android:orientation="vertical"
+                android:padding="10dp">
 
     <ImageView
         android:id="@+id/item_image"
-        android:scaleType="fitXY"
         android:layout_width="match_parent"
-        android:layout_height="130dp" />
+        android:layout_height="130dp"
+        android:scaleType="fitXY" />
 
     <RelativeLayout
         android:layout_width="match_parent"
@@ -31,10 +33,10 @@
             android:id="@+id/item_title_tv"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:lines="1"
-            android:ellipsize="end"
             android:layout_alignParentLeft="true"
             android:layout_toLeftOf="@id/item_isr_tv"
+            android:ellipsize="end"
+            android:lines="1"
             android:text="hhhh"
             android:textColor="@color/white"
             android:textSize="@dimen/text_main" />

+ 10 - 8
WeiChat/src/main/res/layout/item_subscription_more.xml

@@ -1,10 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="70dp"
-    android:background="@color/white"
-    android:orientation="vertical"
-    android:padding="10dp">
+                android:layout_width="match_parent"
+                android:layout_height="70dp"
+                android:layout_marginLeft="15dp"
+                android:layout_marginRight="15dp"
+                android:background="@color/white"
+                android:orientation="vertical"
+                android:padding="10dp">
 
     <ImageView
         android:id="@+id/item_image"
@@ -17,10 +19,10 @@
         android:id="@+id/item_isr_tv"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        android:layout_marginRight="10dp"
         android:layout_marginTop="10dp"
         android:layout_toLeftOf="@id/item_image"
         android:text="aaaa"
-        android:layout_marginRight="10dp"
         android:textSize="@dimen/text_hine" />
 
     <TextView
@@ -29,9 +31,9 @@
         android:layout_height="wrap_content"
         android:layout_alignParentLeft="true"
         android:layout_toLeftOf="@id/item_isr_tv"
-        android:text="hhhh"
-        android:lines="1"
         android:ellipsize="end"
+        android:lines="1"
+        android:text="hhhh"
         android:textColor="@color/text_main"
         android:textSize="@dimen/text_main" />
 

+ 0 - 32
WeiChat/src/main/res/layout/recycler_empty_view.xml

@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:orientation="vertical"
-    android:layout_height="wrap_content">
-
-    <View
-        android:id="@+id/top"
-        android:layout_width="match_parent"
-        android:layout_height="200dp" />
-
-    <TextView
-        android:id="@+id/tv"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_below="@id/top"
-        android:layout_gravity="center"
-        android:layout_marginTop="16dp"
-        android:drawableTop="@drawable/ic_empty"
-        android:gravity="center"
-        android:text="@string/common_list_empty"
-        android:textColor="@color/gray_light" />
-
-
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="1"
-        android:minHeight="200dp"
-      />
-
-</LinearLayout>

+ 4 - 8
app_core/common/src/main/res/layout/activity_subscription2.xml

@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:background="@color/item_line">
-
-
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:background="@color/item_line">
 
 
     <com.module.recyclerlibrary.ui.refresh.simlpe.SimpleRefreshLayout
@@ -18,9 +16,7 @@
             android:layout_height="match_parent"
             android:layout_alignParentLeft="true"
             android:layout_alignParentStart="true"
-            android:layout_alignParentTop="true"
-            android:paddingLeft="@dimen/sub_padding"
-            android:paddingRight="@dimen/sub_padding" />
+            android:layout_alignParentTop="true" />
     </com.module.recyclerlibrary.ui.refresh.simlpe.SimpleRefreshLayout>
 
 

+ 11 - 9
app_core/common/src/main/res/layout/item_subscription_first.xml

@@ -1,16 +1,18 @@
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:padding="10dp"
-    android:background="@color/white"
-    android:orientation="vertical">
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="15dp"
+                android:layout_marginRight="15dp"
+                android:background="@color/white"
+                android:orientation="vertical"
+                android:padding="10dp">
 
     <ImageView
         android:id="@+id/item_image"
-        android:scaleType="fitXY"
         android:layout_width="match_parent"
-        android:layout_height="130dp" />
+        android:layout_height="130dp"
+        android:scaleType="fitXY" />
 
     <RelativeLayout
         android:layout_width="match_parent"
@@ -31,10 +33,10 @@
             android:id="@+id/item_title_tv"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:lines="1"
-            android:ellipsize="end"
             android:layout_alignParentLeft="true"
             android:layout_toLeftOf="@id/item_isr_tv"
+            android:ellipsize="end"
+            android:lines="1"
             android:text="hhhh"
             android:textColor="@color/white"
             android:textSize="@dimen/text_main" />

+ 10 - 8
app_core/common/src/main/res/layout/item_subscription_more.xml

@@ -1,10 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="70dp"
-    android:background="@color/white"
-    android:orientation="vertical"
-    android:padding="10dp">
+                android:layout_width="match_parent"
+                android:layout_height="70dp"
+                android:layout_marginLeft="15dp"
+                android:layout_marginRight="15dp"
+                android:background="@color/white"
+                android:orientation="vertical"
+                android:padding="10dp">
 
     <ImageView
         android:id="@+id/item_image"
@@ -17,10 +19,10 @@
         android:id="@+id/item_isr_tv"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        android:layout_marginRight="10dp"
         android:layout_marginTop="10dp"
         android:layout_toLeftOf="@id/item_image"
         android:text="aaaa"
-        android:layout_marginRight="10dp"
         android:textSize="@dimen/text_hine" />
 
     <TextView
@@ -29,9 +31,9 @@
         android:layout_height="wrap_content"
         android:layout_alignParentLeft="true"
         android:layout_toLeftOf="@id/item_isr_tv"
-        android:text="hhhh"
-        android:lines="1"
         android:ellipsize="end"
+        android:lines="1"
+        android:text="hhhh"
         android:textColor="@color/text_main"
         android:textSize="@dimen/text_main" />
 

+ 0 - 5
app_core/common/src/main/res/layout/layout_menu_person_info.xml

@@ -43,11 +43,6 @@
         android:text="@string/cancel_attention"
         />
 
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="0.3dp"
-        android:background="@color/button_invalid" />
-
     <TextView
         android:id="@+id/basic_info_delete_all"
         style="@style/commonPopCancelItem"

+ 24 - 26
app_core/common/src/main/res/layout/recycler_empty_view.xml

@@ -1,32 +1,30 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:orientation="vertical"
-    android:layout_height="wrap_content">
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:background="#FFFFFF">
 
-    <View
-        android:id="@+id/top"
-        android:layout_width="match_parent"
-        android:layout_height="200dp" />
-
-    <TextView
-        android:id="@+id/tv"
-        android:layout_width="match_parent"
+    <LinearLayout
+        android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_below="@id/top"
-        android:layout_gravity="center"
-        android:layout_marginTop="16dp"
-        android:drawableTop="@drawable/ic_empty"
-        android:gravity="center"
-        android:text="@string/common_list_empty"
-        android:textColor="@color/gray_light" />
+        android:layout_centerInParent="true"
+        android:gravity="center_horizontal"
+        android:orientation="vertical">
+
+        <pl.droidsonroids.gif.GifImageView
+            android:id="@+id/emptyImg"
+            android:layout_width="110dp"
+            android:layout_height="110dp"
+            android:scaleType="fitEnd"
+            android:src="@drawable/gif_empty_view" />
 
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="90dp"
+            android:text="数据为空"
+            android:textSize="14sp" />
 
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="1"
-        android:minHeight="200dp"
-      />
+    </LinearLayout>
 
-</LinearLayout>
+</RelativeLayout>

+ 1 - 1
app_core/common/src/main/res/values/colors.xml

@@ -346,7 +346,7 @@
     <!--B2B商务-->
     <color name="b2b_tab_bg">#f2f8fc</color>
     <color name="b2b_tab_selected">#2F95DD</color>
-    <color name="b2b_btn_todo">#00ff00</color>
+    <color name="b2b_btn_todo">#19CD25</color>
     <color name="b2b_btn_done">#62B1CB</color>
     <color name="b2b_btn_end">#AAAAAA</color>
 

+ 224 - 15
app_modular/appbooking/proguard-rules.pro

@@ -3,23 +3,232 @@
 # in C:\Android\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
+###############################
+#1.基本指令区
+# 代码混淆压缩比,在0~7之间,默认为5,一般不做修改
+-optimizationpasses 5
+# 混合时不使用大小写混合,混合后的类名为小写
+-dontusemixedcaseclassnames
+# 指定不去忽略非公共库的类
+-dontskipnonpubliclibraryclasses
+# 这句话能够使我们的项目混淆后产生映射文件
+# 包含有类名->混淆后类名的映射关系
+-verbose
+# 指定不去忽略非公共库的类成员
+-dontskipnonpubliclibraryclassmembers
+# 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
+-dontpreverify
+# 保留Annotation不混淆
+-keepattributes *Annotation*,InnerClasses
+# 避免混淆泛型
+-keepattributes Signature
+# 抛出异常时保留代码行号
+-keepattributes SourceFile,LineNumberTable
+# 指定混淆是采用的算法,后面的参数是一个过滤器
+# 这个过滤器是谷歌推荐的算法,一般不做更改
+-optimizations !code/simplification/cast,!field/*,!class/merging/*
+
+#2.默认保留区
+# 保留我们使用的四大组件,自定义的Application等等这些类不被混淆
+# 因为这些子类都有可能被外部调用
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-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
+# 保留support下的所有类及其内部类
+-keep class android.support.** {*;}
+# 保留继承的
+-keep public class * extends android.support.v4.**
+-keep public class * extends android.support.v7.**
+-keep public class * extends android.support.annotation.**
+# 保留R下面的资源
+-keep class **.R$* {*;}
+
+# 保留本地native方法不被混淆
+-keepclasseswithmembernames class * {
+    native <methods>;
+}
+# 保留在Activity中的方法参数是view的方法,
+# 这样以来我们在layout中写的onClick就不会被影响
+-keepclassmembers class * extends android.app.Activity{
+    public void *(android.view.View);
+}
+# 保留枚举类不被混淆
+-keepclassmembers enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+# 保留我们自定义控件(继承自View)不被混淆
+-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);
+}
 
-# Add any project specific keep options here:
+# 保留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;
+    !static !transient <fields>;
+    !private <fields>;
+    !private <methods>;
+    private void writeObject(java.io.ObjectOutputStream);
+    private void readObject(java.io.ObjectInputStream);
+    java.lang.Object writeReplace();
+    java.lang.Object readResolve();
+}
+# 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
+-keepclassmembers class * {
+    void *(**On*Event);
+}
 
-# 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 *;
-#}
+#3.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);
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.webView, jav.lang.String);
+}
+#移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用
+#这里可以作为禁止log打印的功能使用,另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制
+-assumenosideeffects class android.util.Log {
+    public static *** v(...);
+    public static *** i(...);
+    public static *** d(...);
+    public static *** w(...);
+    public static *** e(...);
+}
+
+
+###############################
+#
+# 第三方jar包
+#
+###############################
+-keep class com.baidu.** {*;}
+-keep class vi.com.** {*;}
+-dontwarn com.baidu.**
 
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
+-keep class com.uuzuche.lib_zxing.** {*;}
+-keep class com.andreabaccega.** {*;}
+-keep class com.github.clans.fab.** {*;}
+-keep class com.yalantis.phoenix.** {*;}
+-keep class com.baoyz.swipemenulistview.** {*;}
+-keep class com.viewpagerindicator.** {*;}
+-keep class com.afollestad.materialdialogs.** {*;}
+-keep class com.github.mikephil.charting.** {*;}
+-keep class com.module.recyclerlibrary.** {*;}
+-keep class com.handmark.pulltorefresh.library.** {*;}
+-keep class cc.cloudist.acplibrary.** {*;}
+
+-keep class android.arch.core.internal.** {*;}
+-keep class android.arch.lifecycle.** {*;}
+-keep class com.alibaba.fastjson.** {*;}
+-dontwarn com.alibaba.fastjson.**
+-keep class android.support.graphics.drawable.** {*;}
+-keep class com.facebook.stetho.** {*;}
+-keep class javax.annotation.** {*;}
+-keep class com.lidroid.xutils.** {*;}
+-keep class okhttp3.** {*;}
+-keep class okio.** {*;}
+-dontwarn okio.**
+-keep class org.apache.** {*;}
+-keep class org.junit.** {*;}
+-keep class junit.** {*;}
+-keep class org.hamcrest.** {*;}
+
+-keep class sun.misc.Unsafe {*;}
+-keep class com.google.gson.** {*;}
+-keep class com.google.gson.stream.** {*;}
+-keep class com.android.volley.** {*;}
+
+-keep class butterknife.** {*;}
+-dontwarn butterknife.internal.**
+-keep class **$$ViewBinder { *; }
+
+-keep class cat.ereza.customactivityoncrash.** {*;}
+-keep class uk.co.senab.photoview.** {*;}
+-keep class com.flipboard.bottomsheet.** {*;}
+-keep class flipboard.bottomsheet.** {*;}
+-keep class com.bumptech.glide.** {*;}
+-keep class com.chad.library.** {*;}
+-keep class com.tonicartos.widget.stickygridheaders.** {*;}
+-keep class com.orhanobut.logger.** {*;}
+-keep class com.readystatesoftware.systembartint.** {*;}
+-keep class com.scwang.smartrefresh.** {*;}
+-keep class com.squareup.** {*;}
+-keep class com.tencent.** {*;}
+-keep class com.umeng.analytics.** {*;}
+-keep class com.youth.banner.** {*;}
+-keep class de.hdodenhof.circleimageview.** {*;}
+-keep class rx.** {*;}
+-keep class org.joda.time.** {*;}
+-keep class me.gujun.android.taggroup.** {*;}
+-keep class me.zhanghai.android.materialprogressbar.** {*;}
+-keep class android.net.** {*;}
+-keep class com.android.internal.http.multipart.** {*;}
+-keep class pl.droidsonroids.gif.** {*;}
+-keep class se.emilsjolander.stickylistheaders.** {*;}
+-keep class com.alipay.** {*;}
+-dontwarn com.alipay.**
+-keep class com.tencent.mm.sdk.** {
+   *;
+}
+
+###############################
+#
+# 自己的代码
+# 引用的其他Module可以直接在app的这个混淆文件里配置
+#
+###############################
+#实体类
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appcontact.model.** {*;}
+-keep class com.modular.login.model.** {*;}
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appme.settings.model.** {*;}
+-keep class com.modular.appmessages.model.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+-keep class com.uas.appworks.model.** {*;}
+-keep class com.xzjmyk.pm.activity.bean.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+#自定义控件
+-keep class com.core.widget.** {*;}
+-keep class com.modular.booking.widget.** {*;}
+-keep class com.uas.appcontact.ui.widget.stickylistheaders.** {*;}
+-keep class com.uas.appme.widget.** {*;}
+-keep class com.modular.appmessages.widget.** {*;}
+-keep class com.modular.apputils.widget.** {*;}
+-keep class com.uas.appworks.widget.** {*;}
+-keep class com.ipaulpro.afilechooser.** {*;}
+-keep class com.roamer.slidelistview.** {*;}
+-keep class com.xzjmyk.pm.activity.view.** {*;}
+-keep class com.xzjmyk.pm.activity.video.** {*;}
+-keep class com.modular.apputils.utils.** {*;}
+#与js互相调用的类
+-keep class com.com.xzjmyk.pm.activity.ui.erp.activity.WebViewCommActivity.JSWebView
 
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile

+ 225 - 16
app_modular/appcontact/proguard-rules.pro

@@ -1,25 +1,234 @@
 # Add project specific ProGuard rules here.
 # By default, the flags in this file are appended to flags specified
-# in C:\Users\Bitliker\AppData\Local\Android\Sdk/tools/proguard/proguard-android.txt
+# in C:\Android\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
+###############################
+#1.基本指令区
+# 代码混淆压缩比,在0~7之间,默认为5,一般不做修改
+-optimizationpasses 5
+# 混合时不使用大小写混合,混合后的类名为小写
+-dontusemixedcaseclassnames
+# 指定不去忽略非公共库的类
+-dontskipnonpubliclibraryclasses
+# 这句话能够使我们的项目混淆后产生映射文件
+# 包含有类名->混淆后类名的映射关系
+-verbose
+# 指定不去忽略非公共库的类成员
+-dontskipnonpubliclibraryclassmembers
+# 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
+-dontpreverify
+# 保留Annotation不混淆
+-keepattributes *Annotation*,InnerClasses
+# 避免混淆泛型
+-keepattributes Signature
+# 抛出异常时保留代码行号
+-keepattributes SourceFile,LineNumberTable
+# 指定混淆是采用的算法,后面的参数是一个过滤器
+# 这个过滤器是谷歌推荐的算法,一般不做更改
+-optimizations !code/simplification/cast,!field/*,!class/merging/*
+
+#2.默认保留区
+# 保留我们使用的四大组件,自定义的Application等等这些类不被混淆
+# 因为这些子类都有可能被外部调用
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-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
+# 保留support下的所有类及其内部类
+-keep class android.support.** {*;}
+# 保留继承的
+-keep public class * extends android.support.v4.**
+-keep public class * extends android.support.v7.**
+-keep public class * extends android.support.annotation.**
+# 保留R下面的资源
+-keep class **.R$* {*;}
+
+# 保留本地native方法不被混淆
+-keepclasseswithmembernames class * {
+    native <methods>;
+}
+# 保留在Activity中的方法参数是view的方法,
+# 这样以来我们在layout中写的onClick就不会被影响
+-keepclassmembers class * extends android.app.Activity{
+    public void *(android.view.View);
+}
+# 保留枚举类不被混淆
+-keepclassmembers enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+# 保留我们自定义控件(继承自View)不被混淆
+-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);
+}
 
-# Add any project specific keep options here:
+# 保留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;
+    !static !transient <fields>;
+    !private <fields>;
+    !private <methods>;
+    private void writeObject(java.io.ObjectOutputStream);
+    private void readObject(java.io.ObjectInputStream);
+    java.lang.Object writeReplace();
+    java.lang.Object readResolve();
+}
+# 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
+-keepclassmembers class * {
+    void *(**On*Event);
+}
 
-# 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 *;
-#}
+#3.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);
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.webView, jav.lang.String);
+}
+#移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用
+#这里可以作为禁止log打印的功能使用,另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制
+-assumenosideeffects class android.util.Log {
+    public static *** v(...);
+    public static *** i(...);
+    public static *** d(...);
+    public static *** w(...);
+    public static *** e(...);
+}
+
+
+###############################
+#
+# 第三方jar包
+#
+###############################
+-keep class com.baidu.** {*;}
+-keep class vi.com.** {*;}
+-dontwarn com.baidu.**
 
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
+-keep class com.uuzuche.lib_zxing.** {*;}
+-keep class com.andreabaccega.** {*;}
+-keep class com.github.clans.fab.** {*;}
+-keep class com.yalantis.phoenix.** {*;}
+-keep class com.baoyz.swipemenulistview.** {*;}
+-keep class com.viewpagerindicator.** {*;}
+-keep class com.afollestad.materialdialogs.** {*;}
+-keep class com.github.mikephil.charting.** {*;}
+-keep class com.module.recyclerlibrary.** {*;}
+-keep class com.handmark.pulltorefresh.library.** {*;}
+-keep class cc.cloudist.acplibrary.** {*;}
+
+-keep class android.arch.core.internal.** {*;}
+-keep class android.arch.lifecycle.** {*;}
+-keep class com.alibaba.fastjson.** {*;}
+-dontwarn com.alibaba.fastjson.**
+-keep class android.support.graphics.drawable.** {*;}
+-keep class com.facebook.stetho.** {*;}
+-keep class javax.annotation.** {*;}
+-keep class com.lidroid.xutils.** {*;}
+-keep class okhttp3.** {*;}
+-keep class okio.** {*;}
+-dontwarn okio.**
+-keep class org.apache.** {*;}
+-keep class org.junit.** {*;}
+-keep class junit.** {*;}
+-keep class org.hamcrest.** {*;}
+
+-keep class sun.misc.Unsafe {*;}
+-keep class com.google.gson.** {*;}
+-keep class com.google.gson.stream.** {*;}
+-keep class com.android.volley.** {*;}
+
+-keep class butterknife.** {*;}
+-dontwarn butterknife.internal.**
+-keep class **$$ViewBinder { *; }
+
+-keep class cat.ereza.customactivityoncrash.** {*;}
+-keep class uk.co.senab.photoview.** {*;}
+-keep class com.flipboard.bottomsheet.** {*;}
+-keep class flipboard.bottomsheet.** {*;}
+-keep class com.bumptech.glide.** {*;}
+-keep class com.chad.library.** {*;}
+-keep class com.tonicartos.widget.stickygridheaders.** {*;}
+-keep class com.orhanobut.logger.** {*;}
+-keep class com.readystatesoftware.systembartint.** {*;}
+-keep class com.scwang.smartrefresh.** {*;}
+-keep class com.squareup.** {*;}
+-keep class com.tencent.** {*;}
+-keep class com.umeng.analytics.** {*;}
+-keep class com.youth.banner.** {*;}
+-keep class de.hdodenhof.circleimageview.** {*;}
+-keep class rx.** {*;}
+-keep class org.joda.time.** {*;}
+-keep class me.gujun.android.taggroup.** {*;}
+-keep class me.zhanghai.android.materialprogressbar.** {*;}
+-keep class android.net.** {*;}
+-keep class com.android.internal.http.multipart.** {*;}
+-keep class pl.droidsonroids.gif.** {*;}
+-keep class se.emilsjolander.stickylistheaders.** {*;}
+-keep class com.alipay.** {*;}
+-dontwarn com.alipay.**
+-keep class com.tencent.mm.sdk.** {
+   *;
+}
+
+###############################
+#
+# 自己的代码
+# 引用的其他Module可以直接在app的这个混淆文件里配置
+#
+###############################
+#实体类
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appcontact.model.** {*;}
+-keep class com.modular.login.model.** {*;}
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appme.settings.model.** {*;}
+-keep class com.modular.appmessages.model.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+-keep class com.uas.appworks.model.** {*;}
+-keep class com.xzjmyk.pm.activity.bean.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+#自定义控件
+-keep class com.core.widget.** {*;}
+-keep class com.modular.booking.widget.** {*;}
+-keep class com.uas.appcontact.ui.widget.stickylistheaders.** {*;}
+-keep class com.uas.appme.widget.** {*;}
+-keep class com.modular.appmessages.widget.** {*;}
+-keep class com.modular.apputils.widget.** {*;}
+-keep class com.uas.appworks.widget.** {*;}
+-keep class com.ipaulpro.afilechooser.** {*;}
+-keep class com.roamer.slidelistview.** {*;}
+-keep class com.xzjmyk.pm.activity.view.** {*;}
+-keep class com.xzjmyk.pm.activity.video.** {*;}
+-keep class com.modular.apputils.utils.** {*;}
+#与js互相调用的类
+-keep class com.com.xzjmyk.pm.activity.ui.erp.activity.WebViewCommActivity.JSWebView
 
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile

+ 224 - 15
app_modular/applogin/proguard-rules.pro

@@ -3,23 +3,232 @@
 # in C:\Android\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
+###############################
+#1.基本指令区
+# 代码混淆压缩比,在0~7之间,默认为5,一般不做修改
+-optimizationpasses 5
+# 混合时不使用大小写混合,混合后的类名为小写
+-dontusemixedcaseclassnames
+# 指定不去忽略非公共库的类
+-dontskipnonpubliclibraryclasses
+# 这句话能够使我们的项目混淆后产生映射文件
+# 包含有类名->混淆后类名的映射关系
+-verbose
+# 指定不去忽略非公共库的类成员
+-dontskipnonpubliclibraryclassmembers
+# 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
+-dontpreverify
+# 保留Annotation不混淆
+-keepattributes *Annotation*,InnerClasses
+# 避免混淆泛型
+-keepattributes Signature
+# 抛出异常时保留代码行号
+-keepattributes SourceFile,LineNumberTable
+# 指定混淆是采用的算法,后面的参数是一个过滤器
+# 这个过滤器是谷歌推荐的算法,一般不做更改
+-optimizations !code/simplification/cast,!field/*,!class/merging/*
+
+#2.默认保留区
+# 保留我们使用的四大组件,自定义的Application等等这些类不被混淆
+# 因为这些子类都有可能被外部调用
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-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
+# 保留support下的所有类及其内部类
+-keep class android.support.** {*;}
+# 保留继承的
+-keep public class * extends android.support.v4.**
+-keep public class * extends android.support.v7.**
+-keep public class * extends android.support.annotation.**
+# 保留R下面的资源
+-keep class **.R$* {*;}
+
+# 保留本地native方法不被混淆
+-keepclasseswithmembernames class * {
+    native <methods>;
+}
+# 保留在Activity中的方法参数是view的方法,
+# 这样以来我们在layout中写的onClick就不会被影响
+-keepclassmembers class * extends android.app.Activity{
+    public void *(android.view.View);
+}
+# 保留枚举类不被混淆
+-keepclassmembers enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+# 保留我们自定义控件(继承自View)不被混淆
+-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);
+}
 
-# Add any project specific keep options here:
+# 保留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;
+    !static !transient <fields>;
+    !private <fields>;
+    !private <methods>;
+    private void writeObject(java.io.ObjectOutputStream);
+    private void readObject(java.io.ObjectInputStream);
+    java.lang.Object writeReplace();
+    java.lang.Object readResolve();
+}
+# 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
+-keepclassmembers class * {
+    void *(**On*Event);
+}
 
-# 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 *;
-#}
+#3.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);
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.webView, jav.lang.String);
+}
+#移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用
+#这里可以作为禁止log打印的功能使用,另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制
+-assumenosideeffects class android.util.Log {
+    public static *** v(...);
+    public static *** i(...);
+    public static *** d(...);
+    public static *** w(...);
+    public static *** e(...);
+}
+
+
+###############################
+#
+# 第三方jar包
+#
+###############################
+-keep class com.baidu.** {*;}
+-keep class vi.com.** {*;}
+-dontwarn com.baidu.**
 
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
+-keep class com.uuzuche.lib_zxing.** {*;}
+-keep class com.andreabaccega.** {*;}
+-keep class com.github.clans.fab.** {*;}
+-keep class com.yalantis.phoenix.** {*;}
+-keep class com.baoyz.swipemenulistview.** {*;}
+-keep class com.viewpagerindicator.** {*;}
+-keep class com.afollestad.materialdialogs.** {*;}
+-keep class com.github.mikephil.charting.** {*;}
+-keep class com.module.recyclerlibrary.** {*;}
+-keep class com.handmark.pulltorefresh.library.** {*;}
+-keep class cc.cloudist.acplibrary.** {*;}
+
+-keep class android.arch.core.internal.** {*;}
+-keep class android.arch.lifecycle.** {*;}
+-keep class com.alibaba.fastjson.** {*;}
+-dontwarn com.alibaba.fastjson.**
+-keep class android.support.graphics.drawable.** {*;}
+-keep class com.facebook.stetho.** {*;}
+-keep class javax.annotation.** {*;}
+-keep class com.lidroid.xutils.** {*;}
+-keep class okhttp3.** {*;}
+-keep class okio.** {*;}
+-dontwarn okio.**
+-keep class org.apache.** {*;}
+-keep class org.junit.** {*;}
+-keep class junit.** {*;}
+-keep class org.hamcrest.** {*;}
+
+-keep class sun.misc.Unsafe {*;}
+-keep class com.google.gson.** {*;}
+-keep class com.google.gson.stream.** {*;}
+-keep class com.android.volley.** {*;}
+
+-keep class butterknife.** {*;}
+-dontwarn butterknife.internal.**
+-keep class **$$ViewBinder { *; }
+
+-keep class cat.ereza.customactivityoncrash.** {*;}
+-keep class uk.co.senab.photoview.** {*;}
+-keep class com.flipboard.bottomsheet.** {*;}
+-keep class flipboard.bottomsheet.** {*;}
+-keep class com.bumptech.glide.** {*;}
+-keep class com.chad.library.** {*;}
+-keep class com.tonicartos.widget.stickygridheaders.** {*;}
+-keep class com.orhanobut.logger.** {*;}
+-keep class com.readystatesoftware.systembartint.** {*;}
+-keep class com.scwang.smartrefresh.** {*;}
+-keep class com.squareup.** {*;}
+-keep class com.tencent.** {*;}
+-keep class com.umeng.analytics.** {*;}
+-keep class com.youth.banner.** {*;}
+-keep class de.hdodenhof.circleimageview.** {*;}
+-keep class rx.** {*;}
+-keep class org.joda.time.** {*;}
+-keep class me.gujun.android.taggroup.** {*;}
+-keep class me.zhanghai.android.materialprogressbar.** {*;}
+-keep class android.net.** {*;}
+-keep class com.android.internal.http.multipart.** {*;}
+-keep class pl.droidsonroids.gif.** {*;}
+-keep class se.emilsjolander.stickylistheaders.** {*;}
+-keep class com.alipay.** {*;}
+-dontwarn com.alipay.**
+-keep class com.tencent.mm.sdk.** {
+   *;
+}
+
+###############################
+#
+# 自己的代码
+# 引用的其他Module可以直接在app的这个混淆文件里配置
+#
+###############################
+#实体类
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appcontact.model.** {*;}
+-keep class com.modular.login.model.** {*;}
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appme.settings.model.** {*;}
+-keep class com.modular.appmessages.model.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+-keep class com.uas.appworks.model.** {*;}
+-keep class com.xzjmyk.pm.activity.bean.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+#自定义控件
+-keep class com.core.widget.** {*;}
+-keep class com.modular.booking.widget.** {*;}
+-keep class com.uas.appcontact.ui.widget.stickylistheaders.** {*;}
+-keep class com.uas.appme.widget.** {*;}
+-keep class com.modular.appmessages.widget.** {*;}
+-keep class com.modular.apputils.widget.** {*;}
+-keep class com.uas.appworks.widget.** {*;}
+-keep class com.ipaulpro.afilechooser.** {*;}
+-keep class com.roamer.slidelistview.** {*;}
+-keep class com.xzjmyk.pm.activity.view.** {*;}
+-keep class com.xzjmyk.pm.activity.video.** {*;}
+-keep class com.modular.apputils.utils.** {*;}
+#与js互相调用的类
+-keep class com.com.xzjmyk.pm.activity.ui.erp.activity.WebViewCommActivity.JSWebView
 
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile

+ 7 - 0
app_modular/applogin/src/main/res/drawable/shape_edittext_white_cursor.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+       android:shape="rectangle">
+
+    <solid android:color="@color/white" />
+    <size android:width="2dp" />
+</shape>

+ 4 - 2
app_modular/applogin/src/main/res/layout/activity_login.xml

@@ -57,7 +57,8 @@
                         android:inputType="phone"
                         android:paddingLeft="10dp"
                         android:textColor="@color/white"
-                        android:textColorHint="@color/white" />
+                        android:textColorHint="@color/white"
+                        android:textCursorDrawable="@drawable/shape_edittext_white_cursor" />
                 </LinearLayout>
 
                 <LinearLayout
@@ -79,7 +80,8 @@
                         android:hint="@string/rpassword"
                         android:paddingLeft="10dp"
                         android:textColor="@color/white"
-                        android:textColorHint="@color/white" />
+                        android:textColorHint="@color/white"
+                        android:textCursorDrawable="@drawable/shape_edittext_white_cursor" />
                 </LinearLayout>
 
                 <TextView

+ 225 - 16
app_modular/appme/proguard-rules.pro

@@ -1,25 +1,234 @@
 # Add project specific ProGuard rules here.
 # By default, the flags in this file are appended to flags specified
-# in E:\Android-Studio\sdk/tools/proguard/proguard-android.txt
+# in C:\Android\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
+###############################
+#1.基本指令区
+# 代码混淆压缩比,在0~7之间,默认为5,一般不做修改
+-optimizationpasses 5
+# 混合时不使用大小写混合,混合后的类名为小写
+-dontusemixedcaseclassnames
+# 指定不去忽略非公共库的类
+-dontskipnonpubliclibraryclasses
+# 这句话能够使我们的项目混淆后产生映射文件
+# 包含有类名->混淆后类名的映射关系
+-verbose
+# 指定不去忽略非公共库的类成员
+-dontskipnonpubliclibraryclassmembers
+# 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
+-dontpreverify
+# 保留Annotation不混淆
+-keepattributes *Annotation*,InnerClasses
+# 避免混淆泛型
+-keepattributes Signature
+# 抛出异常时保留代码行号
+-keepattributes SourceFile,LineNumberTable
+# 指定混淆是采用的算法,后面的参数是一个过滤器
+# 这个过滤器是谷歌推荐的算法,一般不做更改
+-optimizations !code/simplification/cast,!field/*,!class/merging/*
+
+#2.默认保留区
+# 保留我们使用的四大组件,自定义的Application等等这些类不被混淆
+# 因为这些子类都有可能被外部调用
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-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
+# 保留support下的所有类及其内部类
+-keep class android.support.** {*;}
+# 保留继承的
+-keep public class * extends android.support.v4.**
+-keep public class * extends android.support.v7.**
+-keep public class * extends android.support.annotation.**
+# 保留R下面的资源
+-keep class **.R$* {*;}
+
+# 保留本地native方法不被混淆
+-keepclasseswithmembernames class * {
+    native <methods>;
+}
+# 保留在Activity中的方法参数是view的方法,
+# 这样以来我们在layout中写的onClick就不会被影响
+-keepclassmembers class * extends android.app.Activity{
+    public void *(android.view.View);
+}
+# 保留枚举类不被混淆
+-keepclassmembers enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+# 保留我们自定义控件(继承自View)不被混淆
+-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);
+}
 
-# Add any project specific keep options here:
+# 保留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;
+    !static !transient <fields>;
+    !private <fields>;
+    !private <methods>;
+    private void writeObject(java.io.ObjectOutputStream);
+    private void readObject(java.io.ObjectInputStream);
+    java.lang.Object writeReplace();
+    java.lang.Object readResolve();
+}
+# 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
+-keepclassmembers class * {
+    void *(**On*Event);
+}
 
-# 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 *;
-#}
+#3.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);
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.webView, jav.lang.String);
+}
+#移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用
+#这里可以作为禁止log打印的功能使用,另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制
+-assumenosideeffects class android.util.Log {
+    public static *** v(...);
+    public static *** i(...);
+    public static *** d(...);
+    public static *** w(...);
+    public static *** e(...);
+}
+
+
+###############################
+#
+# 第三方jar包
+#
+###############################
+-keep class com.baidu.** {*;}
+-keep class vi.com.** {*;}
+-dontwarn com.baidu.**
 
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
+-keep class com.uuzuche.lib_zxing.** {*;}
+-keep class com.andreabaccega.** {*;}
+-keep class com.github.clans.fab.** {*;}
+-keep class com.yalantis.phoenix.** {*;}
+-keep class com.baoyz.swipemenulistview.** {*;}
+-keep class com.viewpagerindicator.** {*;}
+-keep class com.afollestad.materialdialogs.** {*;}
+-keep class com.github.mikephil.charting.** {*;}
+-keep class com.module.recyclerlibrary.** {*;}
+-keep class com.handmark.pulltorefresh.library.** {*;}
+-keep class cc.cloudist.acplibrary.** {*;}
+
+-keep class android.arch.core.internal.** {*;}
+-keep class android.arch.lifecycle.** {*;}
+-keep class com.alibaba.fastjson.** {*;}
+-dontwarn com.alibaba.fastjson.**
+-keep class android.support.graphics.drawable.** {*;}
+-keep class com.facebook.stetho.** {*;}
+-keep class javax.annotation.** {*;}
+-keep class com.lidroid.xutils.** {*;}
+-keep class okhttp3.** {*;}
+-keep class okio.** {*;}
+-dontwarn okio.**
+-keep class org.apache.** {*;}
+-keep class org.junit.** {*;}
+-keep class junit.** {*;}
+-keep class org.hamcrest.** {*;}
+
+-keep class sun.misc.Unsafe {*;}
+-keep class com.google.gson.** {*;}
+-keep class com.google.gson.stream.** {*;}
+-keep class com.android.volley.** {*;}
+
+-keep class butterknife.** {*;}
+-dontwarn butterknife.internal.**
+-keep class **$$ViewBinder { *; }
+
+-keep class cat.ereza.customactivityoncrash.** {*;}
+-keep class uk.co.senab.photoview.** {*;}
+-keep class com.flipboard.bottomsheet.** {*;}
+-keep class flipboard.bottomsheet.** {*;}
+-keep class com.bumptech.glide.** {*;}
+-keep class com.chad.library.** {*;}
+-keep class com.tonicartos.widget.stickygridheaders.** {*;}
+-keep class com.orhanobut.logger.** {*;}
+-keep class com.readystatesoftware.systembartint.** {*;}
+-keep class com.scwang.smartrefresh.** {*;}
+-keep class com.squareup.** {*;}
+-keep class com.tencent.** {*;}
+-keep class com.umeng.analytics.** {*;}
+-keep class com.youth.banner.** {*;}
+-keep class de.hdodenhof.circleimageview.** {*;}
+-keep class rx.** {*;}
+-keep class org.joda.time.** {*;}
+-keep class me.gujun.android.taggroup.** {*;}
+-keep class me.zhanghai.android.materialprogressbar.** {*;}
+-keep class android.net.** {*;}
+-keep class com.android.internal.http.multipart.** {*;}
+-keep class pl.droidsonroids.gif.** {*;}
+-keep class se.emilsjolander.stickylistheaders.** {*;}
+-keep class com.alipay.** {*;}
+-dontwarn com.alipay.**
+-keep class com.tencent.mm.sdk.** {
+   *;
+}
+
+###############################
+#
+# 自己的代码
+# 引用的其他Module可以直接在app的这个混淆文件里配置
+#
+###############################
+#实体类
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appcontact.model.** {*;}
+-keep class com.modular.login.model.** {*;}
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appme.settings.model.** {*;}
+-keep class com.modular.appmessages.model.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+-keep class com.uas.appworks.model.** {*;}
+-keep class com.xzjmyk.pm.activity.bean.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+#自定义控件
+-keep class com.core.widget.** {*;}
+-keep class com.modular.booking.widget.** {*;}
+-keep class com.uas.appcontact.ui.widget.stickylistheaders.** {*;}
+-keep class com.uas.appme.widget.** {*;}
+-keep class com.modular.appmessages.widget.** {*;}
+-keep class com.modular.apputils.widget.** {*;}
+-keep class com.uas.appworks.widget.** {*;}
+-keep class com.ipaulpro.afilechooser.** {*;}
+-keep class com.roamer.slidelistview.** {*;}
+-keep class com.xzjmyk.pm.activity.view.** {*;}
+-keep class com.xzjmyk.pm.activity.video.** {*;}
+-keep class com.modular.apputils.utils.** {*;}
+#与js互相调用的类
+-keep class com.com.xzjmyk.pm.activity.ui.erp.activity.WebViewCommActivity.JSWebView
 
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile

+ 225 - 16
app_modular/appmessages/proguard-rules.pro

@@ -1,25 +1,234 @@
 # Add project specific ProGuard rules here.
 # By default, the flags in this file are appended to flags specified
-# in C:\Users\Bitliker\AppData\Local\Android\Sdk/tools/proguard/proguard-android.txt
+# in C:\Android\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
+###############################
+#1.基本指令区
+# 代码混淆压缩比,在0~7之间,默认为5,一般不做修改
+-optimizationpasses 5
+# 混合时不使用大小写混合,混合后的类名为小写
+-dontusemixedcaseclassnames
+# 指定不去忽略非公共库的类
+-dontskipnonpubliclibraryclasses
+# 这句话能够使我们的项目混淆后产生映射文件
+# 包含有类名->混淆后类名的映射关系
+-verbose
+# 指定不去忽略非公共库的类成员
+-dontskipnonpubliclibraryclassmembers
+# 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
+-dontpreverify
+# 保留Annotation不混淆
+-keepattributes *Annotation*,InnerClasses
+# 避免混淆泛型
+-keepattributes Signature
+# 抛出异常时保留代码行号
+-keepattributes SourceFile,LineNumberTable
+# 指定混淆是采用的算法,后面的参数是一个过滤器
+# 这个过滤器是谷歌推荐的算法,一般不做更改
+-optimizations !code/simplification/cast,!field/*,!class/merging/*
+
+#2.默认保留区
+# 保留我们使用的四大组件,自定义的Application等等这些类不被混淆
+# 因为这些子类都有可能被外部调用
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-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
+# 保留support下的所有类及其内部类
+-keep class android.support.** {*;}
+# 保留继承的
+-keep public class * extends android.support.v4.**
+-keep public class * extends android.support.v7.**
+-keep public class * extends android.support.annotation.**
+# 保留R下面的资源
+-keep class **.R$* {*;}
+
+# 保留本地native方法不被混淆
+-keepclasseswithmembernames class * {
+    native <methods>;
+}
+# 保留在Activity中的方法参数是view的方法,
+# 这样以来我们在layout中写的onClick就不会被影响
+-keepclassmembers class * extends android.app.Activity{
+    public void *(android.view.View);
+}
+# 保留枚举类不被混淆
+-keepclassmembers enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+# 保留我们自定义控件(继承自View)不被混淆
+-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);
+}
 
-# Add any project specific keep options here:
+# 保留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;
+    !static !transient <fields>;
+    !private <fields>;
+    !private <methods>;
+    private void writeObject(java.io.ObjectOutputStream);
+    private void readObject(java.io.ObjectInputStream);
+    java.lang.Object writeReplace();
+    java.lang.Object readResolve();
+}
+# 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
+-keepclassmembers class * {
+    void *(**On*Event);
+}
 
-# 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 *;
-#}
+#3.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);
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.webView, jav.lang.String);
+}
+#移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用
+#这里可以作为禁止log打印的功能使用,另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制
+-assumenosideeffects class android.util.Log {
+    public static *** v(...);
+    public static *** i(...);
+    public static *** d(...);
+    public static *** w(...);
+    public static *** e(...);
+}
+
+
+###############################
+#
+# 第三方jar包
+#
+###############################
+-keep class com.baidu.** {*;}
+-keep class vi.com.** {*;}
+-dontwarn com.baidu.**
 
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
+-keep class com.uuzuche.lib_zxing.** {*;}
+-keep class com.andreabaccega.** {*;}
+-keep class com.github.clans.fab.** {*;}
+-keep class com.yalantis.phoenix.** {*;}
+-keep class com.baoyz.swipemenulistview.** {*;}
+-keep class com.viewpagerindicator.** {*;}
+-keep class com.afollestad.materialdialogs.** {*;}
+-keep class com.github.mikephil.charting.** {*;}
+-keep class com.module.recyclerlibrary.** {*;}
+-keep class com.handmark.pulltorefresh.library.** {*;}
+-keep class cc.cloudist.acplibrary.** {*;}
+
+-keep class android.arch.core.internal.** {*;}
+-keep class android.arch.lifecycle.** {*;}
+-keep class com.alibaba.fastjson.** {*;}
+-dontwarn com.alibaba.fastjson.**
+-keep class android.support.graphics.drawable.** {*;}
+-keep class com.facebook.stetho.** {*;}
+-keep class javax.annotation.** {*;}
+-keep class com.lidroid.xutils.** {*;}
+-keep class okhttp3.** {*;}
+-keep class okio.** {*;}
+-dontwarn okio.**
+-keep class org.apache.** {*;}
+-keep class org.junit.** {*;}
+-keep class junit.** {*;}
+-keep class org.hamcrest.** {*;}
+
+-keep class sun.misc.Unsafe {*;}
+-keep class com.google.gson.** {*;}
+-keep class com.google.gson.stream.** {*;}
+-keep class com.android.volley.** {*;}
+
+-keep class butterknife.** {*;}
+-dontwarn butterknife.internal.**
+-keep class **$$ViewBinder { *; }
+
+-keep class cat.ereza.customactivityoncrash.** {*;}
+-keep class uk.co.senab.photoview.** {*;}
+-keep class com.flipboard.bottomsheet.** {*;}
+-keep class flipboard.bottomsheet.** {*;}
+-keep class com.bumptech.glide.** {*;}
+-keep class com.chad.library.** {*;}
+-keep class com.tonicartos.widget.stickygridheaders.** {*;}
+-keep class com.orhanobut.logger.** {*;}
+-keep class com.readystatesoftware.systembartint.** {*;}
+-keep class com.scwang.smartrefresh.** {*;}
+-keep class com.squareup.** {*;}
+-keep class com.tencent.** {*;}
+-keep class com.umeng.analytics.** {*;}
+-keep class com.youth.banner.** {*;}
+-keep class de.hdodenhof.circleimageview.** {*;}
+-keep class rx.** {*;}
+-keep class org.joda.time.** {*;}
+-keep class me.gujun.android.taggroup.** {*;}
+-keep class me.zhanghai.android.materialprogressbar.** {*;}
+-keep class android.net.** {*;}
+-keep class com.android.internal.http.multipart.** {*;}
+-keep class pl.droidsonroids.gif.** {*;}
+-keep class se.emilsjolander.stickylistheaders.** {*;}
+-keep class com.alipay.** {*;}
+-dontwarn com.alipay.**
+-keep class com.tencent.mm.sdk.** {
+   *;
+}
+
+###############################
+#
+# 自己的代码
+# 引用的其他Module可以直接在app的这个混淆文件里配置
+#
+###############################
+#实体类
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appcontact.model.** {*;}
+-keep class com.modular.login.model.** {*;}
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appme.settings.model.** {*;}
+-keep class com.modular.appmessages.model.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+-keep class com.uas.appworks.model.** {*;}
+-keep class com.xzjmyk.pm.activity.bean.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+#自定义控件
+-keep class com.core.widget.** {*;}
+-keep class com.modular.booking.widget.** {*;}
+-keep class com.uas.appcontact.ui.widget.stickylistheaders.** {*;}
+-keep class com.uas.appme.widget.** {*;}
+-keep class com.modular.appmessages.widget.** {*;}
+-keep class com.modular.apputils.widget.** {*;}
+-keep class com.uas.appworks.widget.** {*;}
+-keep class com.ipaulpro.afilechooser.** {*;}
+-keep class com.roamer.slidelistview.** {*;}
+-keep class com.xzjmyk.pm.activity.view.** {*;}
+-keep class com.xzjmyk.pm.activity.video.** {*;}
+-keep class com.modular.apputils.utils.** {*;}
+#与js互相调用的类
+-keep class com.com.xzjmyk.pm.activity.ui.erp.activity.WebViewCommActivity.JSWebView
 
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile

+ 11 - 0
app_modular/appmessages/src/main/java/com/modular/appmessages/activity/RealTimeFormActivity.java

@@ -7,6 +7,8 @@ import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.text.TextUtils;
 import android.view.View;
+import android.widget.LinearLayout;
+import android.widget.TextView;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -43,6 +45,8 @@ public class RealTimeFormActivity extends BaseActivity {
     private int[] mGridColors = new int[]{R.color.data_inquiry_gird_menu_color1, R.color.data_inquiry_gird_menu_color2
             , R.color.data_inquiry_gird_menu_color3, R.color.data_inquiry_gird_menu_color4, R.color.data_inquiry_gird_menu_color5,
             R.color.data_inquiry_gird_menu_color6};
+    private LinearLayout mEmptyLayout;
+    private TextView mEmptyTextView;
     private boolean isB2b;
 
     @Override
@@ -113,6 +117,8 @@ public class RealTimeFormActivity extends BaseActivity {
                         mRealTimeFormMenuAdapter.notifyDataSetChanged();
                     } else {
                         ToastUtil.showToast(RealTimeFormActivity.this, "看板数据为空");
+                        mEmptyLayout.setVisibility(View.VISIBLE);
+                        mEmptyTextView.setText("看板数据为空");
                     }
                 }
 
@@ -120,6 +126,8 @@ public class RealTimeFormActivity extends BaseActivity {
                 public void onFailure(Object t) {
                     progressDialog.dismiss();
                     ToastUtil.showToast(RealTimeFormActivity.this, "看板数据获取失败");
+                    mEmptyLayout.setVisibility(View.VISIBLE);
+                    mEmptyTextView.setText("看板数据获取失败");
                 }
             }));
         }
@@ -129,6 +137,9 @@ public class RealTimeFormActivity extends BaseActivity {
         getSupportActionBar().setTitle(R.string.real_time_form);
         isB2b = ApiUtils.getApiModel() instanceof ApiPlatform;
         mRecyclerView = (RecyclerView) findViewById(R.id.real_time_form_rv);
+        mEmptyLayout = (LinearLayout) findViewById(R.id.real_time_form_empty_ll);
+        mEmptyTextView = (TextView) findViewById(R.id.real_time_form_msg_tv);
+
         mGridLayoutManager = new GridLayoutManager(this, 3, LinearLayoutManager.VERTICAL, false);
         mRecyclerView.setLayoutManager(mGridLayoutManager);
         mRealTimeFormMenuBeen = new ArrayList<>();

+ 37 - 12
app_modular/appmessages/src/main/res/layout/activity_real_time_form.xml

@@ -1,15 +1,40 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout
-xmlns:android="http://schemas.android.com/apk/res/android"
-android:layout_width="match_parent"
-android:layout_height="match_parent"
-android:orientation="vertical"
-android:background="@color/me_menu_item_normal">
-
-<android.support.v7.widget.RecyclerView
-    android:id="@+id/real_time_form_rv"
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:overScrollMode="never"
-    android:padding="20dp"/>
-</LinearLayout>
+    android:background="@color/me_menu_item_normal">
+
+    <android.support.v7.widget.RecyclerView
+        android:id="@+id/real_time_form_rv"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:overScrollMode="never"
+        android:padding="20dp" />
+
+    <LinearLayout
+        android:id="@+id/real_time_form_empty_ll"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_centerInParent="true"
+        android:background="@color/white"
+        android:gravity="center"
+        android:orientation="vertical"
+        android:visibility="gone">
+
+        <pl.droidsonroids.gif.GifImageView
+            android:layout_width="110dp"
+            android:layout_height="110dp"
+            android:scaleType="fitEnd"
+            android:src="@drawable/gif_empty_view" />
+
+        <TextView
+            android:id="@+id/real_time_form_msg_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="90dp"
+            android:text="看板数据为空"
+            android:textColor="?attr/editTextColor"
+            android:textSize="14sp" />
+    </LinearLayout>
+</FrameLayout>

+ 227 - 10
app_modular/appmoments/proguard-rules.pro

@@ -1,17 +1,234 @@
 # Add project specific ProGuard rules here.
 # By default, the flags in this file are appended to flags specified
-# in D:\Android\sdk/tools/proguard/proguard-android.txt
+# in C:\Android\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
+###############################
+#1.基本指令区
+# 代码混淆压缩比,在0~7之间,默认为5,一般不做修改
+-optimizationpasses 5
+# 混合时不使用大小写混合,混合后的类名为小写
+-dontusemixedcaseclassnames
+# 指定不去忽略非公共库的类
+-dontskipnonpubliclibraryclasses
+# 这句话能够使我们的项目混淆后产生映射文件
+# 包含有类名->混淆后类名的映射关系
+-verbose
+# 指定不去忽略非公共库的类成员
+-dontskipnonpubliclibraryclassmembers
+# 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
+-dontpreverify
+# 保留Annotation不混淆
+-keepattributes *Annotation*,InnerClasses
+# 避免混淆泛型
+-keepattributes Signature
+# 抛出异常时保留代码行号
+-keepattributes SourceFile,LineNumberTable
+# 指定混淆是采用的算法,后面的参数是一个过滤器
+# 这个过滤器是谷歌推荐的算法,一般不做更改
+-optimizations !code/simplification/cast,!field/*,!class/merging/*
+
+#2.默认保留区
+# 保留我们使用的四大组件,自定义的Application等等这些类不被混淆
+# 因为这些子类都有可能被外部调用
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-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
+# 保留support下的所有类及其内部类
+-keep class android.support.** {*;}
+# 保留继承的
+-keep public class * extends android.support.v4.**
+-keep public class * extends android.support.v7.**
+-keep public class * extends android.support.annotation.**
+# 保留R下面的资源
+-keep class **.R$* {*;}
+
+# 保留本地native方法不被混淆
+-keepclasseswithmembernames class * {
+    native <methods>;
+}
+# 保留在Activity中的方法参数是view的方法,
+# 这样以来我们在layout中写的onClick就不会被影响
+-keepclassmembers class * extends android.app.Activity{
+    public void *(android.view.View);
+}
+# 保留枚举类不被混淆
+-keepclassmembers enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+# 保留我们自定义控件(继承自View)不被混淆
+-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);
+}
+
+# 保留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;
+    !static !transient <fields>;
+    !private <fields>;
+    !private <methods>;
+    private void writeObject(java.io.ObjectOutputStream);
+    private void readObject(java.io.ObjectInputStream);
+    java.lang.Object writeReplace();
+    java.lang.Object readResolve();
+}
+# 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
+-keepclassmembers class * {
+    void *(**On*Event);
+}
 
-# Add any project specific keep options here:
+#3.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);
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.webView, jav.lang.String);
+}
+#移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用
+#这里可以作为禁止log打印的功能使用,另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制
+-assumenosideeffects class android.util.Log {
+    public static *** v(...);
+    public static *** i(...);
+    public static *** d(...);
+    public static *** w(...);
+    public static *** e(...);
+}
+
+
+###############################
+#
+# 第三方jar包
+#
+###############################
+-keep class com.baidu.** {*;}
+-keep class vi.com.** {*;}
+-dontwarn com.baidu.**
+
+-keep class com.uuzuche.lib_zxing.** {*;}
+-keep class com.andreabaccega.** {*;}
+-keep class com.github.clans.fab.** {*;}
+-keep class com.yalantis.phoenix.** {*;}
+-keep class com.baoyz.swipemenulistview.** {*;}
+-keep class com.viewpagerindicator.** {*;}
+-keep class com.afollestad.materialdialogs.** {*;}
+-keep class com.github.mikephil.charting.** {*;}
+-keep class com.module.recyclerlibrary.** {*;}
+-keep class com.handmark.pulltorefresh.library.** {*;}
+-keep class cc.cloudist.acplibrary.** {*;}
+
+-keep class android.arch.core.internal.** {*;}
+-keep class android.arch.lifecycle.** {*;}
+-keep class com.alibaba.fastjson.** {*;}
+-dontwarn com.alibaba.fastjson.**
+-keep class android.support.graphics.drawable.** {*;}
+-keep class com.facebook.stetho.** {*;}
+-keep class javax.annotation.** {*;}
+-keep class com.lidroid.xutils.** {*;}
+-keep class okhttp3.** {*;}
+-keep class okio.** {*;}
+-dontwarn okio.**
+-keep class org.apache.** {*;}
+-keep class org.junit.** {*;}
+-keep class junit.** {*;}
+-keep class org.hamcrest.** {*;}
+
+-keep class sun.misc.Unsafe {*;}
+-keep class com.google.gson.** {*;}
+-keep class com.google.gson.stream.** {*;}
+-keep class com.android.volley.** {*;}
+
+-keep class butterknife.** {*;}
+-dontwarn butterknife.internal.**
+-keep class **$$ViewBinder { *; }
+
+-keep class cat.ereza.customactivityoncrash.** {*;}
+-keep class uk.co.senab.photoview.** {*;}
+-keep class com.flipboard.bottomsheet.** {*;}
+-keep class flipboard.bottomsheet.** {*;}
+-keep class com.bumptech.glide.** {*;}
+-keep class com.chad.library.** {*;}
+-keep class com.tonicartos.widget.stickygridheaders.** {*;}
+-keep class com.orhanobut.logger.** {*;}
+-keep class com.readystatesoftware.systembartint.** {*;}
+-keep class com.scwang.smartrefresh.** {*;}
+-keep class com.squareup.** {*;}
+-keep class com.tencent.** {*;}
+-keep class com.umeng.analytics.** {*;}
+-keep class com.youth.banner.** {*;}
+-keep class de.hdodenhof.circleimageview.** {*;}
+-keep class rx.** {*;}
+-keep class org.joda.time.** {*;}
+-keep class me.gujun.android.taggroup.** {*;}
+-keep class me.zhanghai.android.materialprogressbar.** {*;}
+-keep class android.net.** {*;}
+-keep class com.android.internal.http.multipart.** {*;}
+-keep class pl.droidsonroids.gif.** {*;}
+-keep class se.emilsjolander.stickylistheaders.** {*;}
+-keep class com.alipay.** {*;}
+-dontwarn com.alipay.**
+-keep class com.tencent.mm.sdk.** {
+   *;
+}
+
+###############################
+#
+# 自己的代码
+# 引用的其他Module可以直接在app的这个混淆文件里配置
+#
+###############################
+#实体类
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appcontact.model.** {*;}
+-keep class com.modular.login.model.** {*;}
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appme.settings.model.** {*;}
+-keep class com.modular.appmessages.model.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+-keep class com.uas.appworks.model.** {*;}
+-keep class com.xzjmyk.pm.activity.bean.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+#自定义控件
+-keep class com.core.widget.** {*;}
+-keep class com.modular.booking.widget.** {*;}
+-keep class com.uas.appcontact.ui.widget.stickylistheaders.** {*;}
+-keep class com.uas.appme.widget.** {*;}
+-keep class com.modular.appmessages.widget.** {*;}
+-keep class com.modular.apputils.widget.** {*;}
+-keep class com.uas.appworks.widget.** {*;}
+-keep class com.ipaulpro.afilechooser.** {*;}
+-keep class com.roamer.slidelistview.** {*;}
+-keep class com.xzjmyk.pm.activity.view.** {*;}
+-keep class com.xzjmyk.pm.activity.video.** {*;}
+-keep class com.modular.apputils.utils.** {*;}
+#与js互相调用的类
+-keep class com.com.xzjmyk.pm.activity.ui.erp.activity.WebViewCommActivity.JSWebView
 
-# 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 *;
-#}

+ 225 - 16
app_modular/apptasks/proguard-rules.pro

@@ -1,25 +1,234 @@
 # Add project specific ProGuard rules here.
 # By default, the flags in this file are appended to flags specified
-# in C:\Users\Bitliker\AppData\Local\Android\Sdk/tools/proguard/proguard-android.txt
+# in C:\Android\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
+###############################
+#1.基本指令区
+# 代码混淆压缩比,在0~7之间,默认为5,一般不做修改
+-optimizationpasses 5
+# 混合时不使用大小写混合,混合后的类名为小写
+-dontusemixedcaseclassnames
+# 指定不去忽略非公共库的类
+-dontskipnonpubliclibraryclasses
+# 这句话能够使我们的项目混淆后产生映射文件
+# 包含有类名->混淆后类名的映射关系
+-verbose
+# 指定不去忽略非公共库的类成员
+-dontskipnonpubliclibraryclassmembers
+# 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
+-dontpreverify
+# 保留Annotation不混淆
+-keepattributes *Annotation*,InnerClasses
+# 避免混淆泛型
+-keepattributes Signature
+# 抛出异常时保留代码行号
+-keepattributes SourceFile,LineNumberTable
+# 指定混淆是采用的算法,后面的参数是一个过滤器
+# 这个过滤器是谷歌推荐的算法,一般不做更改
+-optimizations !code/simplification/cast,!field/*,!class/merging/*
+
+#2.默认保留区
+# 保留我们使用的四大组件,自定义的Application等等这些类不被混淆
+# 因为这些子类都有可能被外部调用
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-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
+# 保留support下的所有类及其内部类
+-keep class android.support.** {*;}
+# 保留继承的
+-keep public class * extends android.support.v4.**
+-keep public class * extends android.support.v7.**
+-keep public class * extends android.support.annotation.**
+# 保留R下面的资源
+-keep class **.R$* {*;}
+
+# 保留本地native方法不被混淆
+-keepclasseswithmembernames class * {
+    native <methods>;
+}
+# 保留在Activity中的方法参数是view的方法,
+# 这样以来我们在layout中写的onClick就不会被影响
+-keepclassmembers class * extends android.app.Activity{
+    public void *(android.view.View);
+}
+# 保留枚举类不被混淆
+-keepclassmembers enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+# 保留我们自定义控件(继承自View)不被混淆
+-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);
+}
 
-# Add any project specific keep options here:
+# 保留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;
+    !static !transient <fields>;
+    !private <fields>;
+    !private <methods>;
+    private void writeObject(java.io.ObjectOutputStream);
+    private void readObject(java.io.ObjectInputStream);
+    java.lang.Object writeReplace();
+    java.lang.Object readResolve();
+}
+# 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
+-keepclassmembers class * {
+    void *(**On*Event);
+}
 
-# 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 *;
-#}
+#3.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);
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.webView, jav.lang.String);
+}
+#移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用
+#这里可以作为禁止log打印的功能使用,另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制
+-assumenosideeffects class android.util.Log {
+    public static *** v(...);
+    public static *** i(...);
+    public static *** d(...);
+    public static *** w(...);
+    public static *** e(...);
+}
+
+
+###############################
+#
+# 第三方jar包
+#
+###############################
+-keep class com.baidu.** {*;}
+-keep class vi.com.** {*;}
+-dontwarn com.baidu.**
 
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
+-keep class com.uuzuche.lib_zxing.** {*;}
+-keep class com.andreabaccega.** {*;}
+-keep class com.github.clans.fab.** {*;}
+-keep class com.yalantis.phoenix.** {*;}
+-keep class com.baoyz.swipemenulistview.** {*;}
+-keep class com.viewpagerindicator.** {*;}
+-keep class com.afollestad.materialdialogs.** {*;}
+-keep class com.github.mikephil.charting.** {*;}
+-keep class com.module.recyclerlibrary.** {*;}
+-keep class com.handmark.pulltorefresh.library.** {*;}
+-keep class cc.cloudist.acplibrary.** {*;}
+
+-keep class android.arch.core.internal.** {*;}
+-keep class android.arch.lifecycle.** {*;}
+-keep class com.alibaba.fastjson.** {*;}
+-dontwarn com.alibaba.fastjson.**
+-keep class android.support.graphics.drawable.** {*;}
+-keep class com.facebook.stetho.** {*;}
+-keep class javax.annotation.** {*;}
+-keep class com.lidroid.xutils.** {*;}
+-keep class okhttp3.** {*;}
+-keep class okio.** {*;}
+-dontwarn okio.**
+-keep class org.apache.** {*;}
+-keep class org.junit.** {*;}
+-keep class junit.** {*;}
+-keep class org.hamcrest.** {*;}
+
+-keep class sun.misc.Unsafe {*;}
+-keep class com.google.gson.** {*;}
+-keep class com.google.gson.stream.** {*;}
+-keep class com.android.volley.** {*;}
+
+-keep class butterknife.** {*;}
+-dontwarn butterknife.internal.**
+-keep class **$$ViewBinder { *; }
+
+-keep class cat.ereza.customactivityoncrash.** {*;}
+-keep class uk.co.senab.photoview.** {*;}
+-keep class com.flipboard.bottomsheet.** {*;}
+-keep class flipboard.bottomsheet.** {*;}
+-keep class com.bumptech.glide.** {*;}
+-keep class com.chad.library.** {*;}
+-keep class com.tonicartos.widget.stickygridheaders.** {*;}
+-keep class com.orhanobut.logger.** {*;}
+-keep class com.readystatesoftware.systembartint.** {*;}
+-keep class com.scwang.smartrefresh.** {*;}
+-keep class com.squareup.** {*;}
+-keep class com.tencent.** {*;}
+-keep class com.umeng.analytics.** {*;}
+-keep class com.youth.banner.** {*;}
+-keep class de.hdodenhof.circleimageview.** {*;}
+-keep class rx.** {*;}
+-keep class org.joda.time.** {*;}
+-keep class me.gujun.android.taggroup.** {*;}
+-keep class me.zhanghai.android.materialprogressbar.** {*;}
+-keep class android.net.** {*;}
+-keep class com.android.internal.http.multipart.** {*;}
+-keep class pl.droidsonroids.gif.** {*;}
+-keep class se.emilsjolander.stickylistheaders.** {*;}
+-keep class com.alipay.** {*;}
+-dontwarn com.alipay.**
+-keep class com.tencent.mm.sdk.** {
+   *;
+}
+
+###############################
+#
+# 自己的代码
+# 引用的其他Module可以直接在app的这个混淆文件里配置
+#
+###############################
+#实体类
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appcontact.model.** {*;}
+-keep class com.modular.login.model.** {*;}
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appme.settings.model.** {*;}
+-keep class com.modular.appmessages.model.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+-keep class com.uas.appworks.model.** {*;}
+-keep class com.xzjmyk.pm.activity.bean.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+#自定义控件
+-keep class com.core.widget.** {*;}
+-keep class com.modular.booking.widget.** {*;}
+-keep class com.uas.appcontact.ui.widget.stickylistheaders.** {*;}
+-keep class com.uas.appme.widget.** {*;}
+-keep class com.modular.appmessages.widget.** {*;}
+-keep class com.modular.apputils.widget.** {*;}
+-keep class com.uas.appworks.widget.** {*;}
+-keep class com.ipaulpro.afilechooser.** {*;}
+-keep class com.roamer.slidelistview.** {*;}
+-keep class com.xzjmyk.pm.activity.view.** {*;}
+-keep class com.xzjmyk.pm.activity.video.** {*;}
+-keep class com.modular.apputils.utils.** {*;}
+#与js互相调用的类
+-keep class com.com.xzjmyk.pm.activity.ui.erp.activity.WebViewCommActivity.JSWebView
 
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile

+ 225 - 16
app_modular/apputils/proguard-rules.pro

@@ -1,25 +1,234 @@
 # Add project specific ProGuard rules here.
 # By default, the flags in this file are appended to flags specified
-# in C:\Users\Bitliker\AppData\Local\Android\Sdk/tools/proguard/proguard-android.txt
+# in C:\Android\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
+###############################
+#1.基本指令区
+# 代码混淆压缩比,在0~7之间,默认为5,一般不做修改
+-optimizationpasses 5
+# 混合时不使用大小写混合,混合后的类名为小写
+-dontusemixedcaseclassnames
+# 指定不去忽略非公共库的类
+-dontskipnonpubliclibraryclasses
+# 这句话能够使我们的项目混淆后产生映射文件
+# 包含有类名->混淆后类名的映射关系
+-verbose
+# 指定不去忽略非公共库的类成员
+-dontskipnonpubliclibraryclassmembers
+# 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
+-dontpreverify
+# 保留Annotation不混淆
+-keepattributes *Annotation*,InnerClasses
+# 避免混淆泛型
+-keepattributes Signature
+# 抛出异常时保留代码行号
+-keepattributes SourceFile,LineNumberTable
+# 指定混淆是采用的算法,后面的参数是一个过滤器
+# 这个过滤器是谷歌推荐的算法,一般不做更改
+-optimizations !code/simplification/cast,!field/*,!class/merging/*
+
+#2.默认保留区
+# 保留我们使用的四大组件,自定义的Application等等这些类不被混淆
+# 因为这些子类都有可能被外部调用
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-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
+# 保留support下的所有类及其内部类
+-keep class android.support.** {*;}
+# 保留继承的
+-keep public class * extends android.support.v4.**
+-keep public class * extends android.support.v7.**
+-keep public class * extends android.support.annotation.**
+# 保留R下面的资源
+-keep class **.R$* {*;}
+
+# 保留本地native方法不被混淆
+-keepclasseswithmembernames class * {
+    native <methods>;
+}
+# 保留在Activity中的方法参数是view的方法,
+# 这样以来我们在layout中写的onClick就不会被影响
+-keepclassmembers class * extends android.app.Activity{
+    public void *(android.view.View);
+}
+# 保留枚举类不被混淆
+-keepclassmembers enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+# 保留我们自定义控件(继承自View)不被混淆
+-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);
+}
 
-# Add any project specific keep options here:
+# 保留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;
+    !static !transient <fields>;
+    !private <fields>;
+    !private <methods>;
+    private void writeObject(java.io.ObjectOutputStream);
+    private void readObject(java.io.ObjectInputStream);
+    java.lang.Object writeReplace();
+    java.lang.Object readResolve();
+}
+# 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
+-keepclassmembers class * {
+    void *(**On*Event);
+}
 
-# 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 *;
-#}
+#3.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);
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.webView, jav.lang.String);
+}
+#移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用
+#这里可以作为禁止log打印的功能使用,另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制
+-assumenosideeffects class android.util.Log {
+    public static *** v(...);
+    public static *** i(...);
+    public static *** d(...);
+    public static *** w(...);
+    public static *** e(...);
+}
+
+
+###############################
+#
+# 第三方jar包
+#
+###############################
+-keep class com.baidu.** {*;}
+-keep class vi.com.** {*;}
+-dontwarn com.baidu.**
 
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
+-keep class com.uuzuche.lib_zxing.** {*;}
+-keep class com.andreabaccega.** {*;}
+-keep class com.github.clans.fab.** {*;}
+-keep class com.yalantis.phoenix.** {*;}
+-keep class com.baoyz.swipemenulistview.** {*;}
+-keep class com.viewpagerindicator.** {*;}
+-keep class com.afollestad.materialdialogs.** {*;}
+-keep class com.github.mikephil.charting.** {*;}
+-keep class com.module.recyclerlibrary.** {*;}
+-keep class com.handmark.pulltorefresh.library.** {*;}
+-keep class cc.cloudist.acplibrary.** {*;}
+
+-keep class android.arch.core.internal.** {*;}
+-keep class android.arch.lifecycle.** {*;}
+-keep class com.alibaba.fastjson.** {*;}
+-dontwarn com.alibaba.fastjson.**
+-keep class android.support.graphics.drawable.** {*;}
+-keep class com.facebook.stetho.** {*;}
+-keep class javax.annotation.** {*;}
+-keep class com.lidroid.xutils.** {*;}
+-keep class okhttp3.** {*;}
+-keep class okio.** {*;}
+-dontwarn okio.**
+-keep class org.apache.** {*;}
+-keep class org.junit.** {*;}
+-keep class junit.** {*;}
+-keep class org.hamcrest.** {*;}
+
+-keep class sun.misc.Unsafe {*;}
+-keep class com.google.gson.** {*;}
+-keep class com.google.gson.stream.** {*;}
+-keep class com.android.volley.** {*;}
+
+-keep class butterknife.** {*;}
+-dontwarn butterknife.internal.**
+-keep class **$$ViewBinder { *; }
+
+-keep class cat.ereza.customactivityoncrash.** {*;}
+-keep class uk.co.senab.photoview.** {*;}
+-keep class com.flipboard.bottomsheet.** {*;}
+-keep class flipboard.bottomsheet.** {*;}
+-keep class com.bumptech.glide.** {*;}
+-keep class com.chad.library.** {*;}
+-keep class com.tonicartos.widget.stickygridheaders.** {*;}
+-keep class com.orhanobut.logger.** {*;}
+-keep class com.readystatesoftware.systembartint.** {*;}
+-keep class com.scwang.smartrefresh.** {*;}
+-keep class com.squareup.** {*;}
+-keep class com.tencent.** {*;}
+-keep class com.umeng.analytics.** {*;}
+-keep class com.youth.banner.** {*;}
+-keep class de.hdodenhof.circleimageview.** {*;}
+-keep class rx.** {*;}
+-keep class org.joda.time.** {*;}
+-keep class me.gujun.android.taggroup.** {*;}
+-keep class me.zhanghai.android.materialprogressbar.** {*;}
+-keep class android.net.** {*;}
+-keep class com.android.internal.http.multipart.** {*;}
+-keep class pl.droidsonroids.gif.** {*;}
+-keep class se.emilsjolander.stickylistheaders.** {*;}
+-keep class com.alipay.** {*;}
+-dontwarn com.alipay.**
+-keep class com.tencent.mm.sdk.** {
+   *;
+}
+
+###############################
+#
+# 自己的代码
+# 引用的其他Module可以直接在app的这个混淆文件里配置
+#
+###############################
+#实体类
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appcontact.model.** {*;}
+-keep class com.modular.login.model.** {*;}
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appme.settings.model.** {*;}
+-keep class com.modular.appmessages.model.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+-keep class com.uas.appworks.model.** {*;}
+-keep class com.xzjmyk.pm.activity.bean.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+#自定义控件
+-keep class com.core.widget.** {*;}
+-keep class com.modular.booking.widget.** {*;}
+-keep class com.uas.appcontact.ui.widget.stickylistheaders.** {*;}
+-keep class com.uas.appme.widget.** {*;}
+-keep class com.modular.appmessages.widget.** {*;}
+-keep class com.modular.apputils.widget.** {*;}
+-keep class com.uas.appworks.widget.** {*;}
+-keep class com.ipaulpro.afilechooser.** {*;}
+-keep class com.roamer.slidelistview.** {*;}
+-keep class com.xzjmyk.pm.activity.view.** {*;}
+-keep class com.xzjmyk.pm.activity.video.** {*;}
+-keep class com.modular.apputils.utils.** {*;}
+#与js互相调用的类
+-keep class com.com.xzjmyk.pm.activity.ui.erp.activity.WebViewCommActivity.JSWebView
 
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile

+ 225 - 16
app_modular/appworks/proguard-rules.pro

@@ -1,25 +1,234 @@
 # Add project specific ProGuard rules here.
 # By default, the flags in this file are appended to flags specified
-# in E:\Android-Studio\sdk/tools/proguard/proguard-android.txt
+# in C:\Android\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
+###############################
+#1.基本指令区
+# 代码混淆压缩比,在0~7之间,默认为5,一般不做修改
+-optimizationpasses 5
+# 混合时不使用大小写混合,混合后的类名为小写
+-dontusemixedcaseclassnames
+# 指定不去忽略非公共库的类
+-dontskipnonpubliclibraryclasses
+# 这句话能够使我们的项目混淆后产生映射文件
+# 包含有类名->混淆后类名的映射关系
+-verbose
+# 指定不去忽略非公共库的类成员
+-dontskipnonpubliclibraryclassmembers
+# 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
+-dontpreverify
+# 保留Annotation不混淆
+-keepattributes *Annotation*,InnerClasses
+# 避免混淆泛型
+-keepattributes Signature
+# 抛出异常时保留代码行号
+-keepattributes SourceFile,LineNumberTable
+# 指定混淆是采用的算法,后面的参数是一个过滤器
+# 这个过滤器是谷歌推荐的算法,一般不做更改
+-optimizations !code/simplification/cast,!field/*,!class/merging/*
+
+#2.默认保留区
+# 保留我们使用的四大组件,自定义的Application等等这些类不被混淆
+# 因为这些子类都有可能被外部调用
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-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
+# 保留support下的所有类及其内部类
+-keep class android.support.** {*;}
+# 保留继承的
+-keep public class * extends android.support.v4.**
+-keep public class * extends android.support.v7.**
+-keep public class * extends android.support.annotation.**
+# 保留R下面的资源
+-keep class **.R$* {*;}
+
+# 保留本地native方法不被混淆
+-keepclasseswithmembernames class * {
+    native <methods>;
+}
+# 保留在Activity中的方法参数是view的方法,
+# 这样以来我们在layout中写的onClick就不会被影响
+-keepclassmembers class * extends android.app.Activity{
+    public void *(android.view.View);
+}
+# 保留枚举类不被混淆
+-keepclassmembers enum * {
+    public static **[] values();
+    public static ** valueOf(java.lang.String);
+}
+# 保留我们自定义控件(继承自View)不被混淆
+-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);
+}
 
-# Add any project specific keep options here:
+# 保留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;
+    !static !transient <fields>;
+    !private <fields>;
+    !private <methods>;
+    private void writeObject(java.io.ObjectOutputStream);
+    private void readObject(java.io.ObjectInputStream);
+    java.lang.Object writeReplace();
+    java.lang.Object readResolve();
+}
+# 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
+-keepclassmembers class * {
+    void *(**On*Event);
+}
 
-# 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 *;
-#}
+#3.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);
+}
+-keepclassmembers class * extends android.webkit.webViewClient {
+    public void *(android.webkit.webView, jav.lang.String);
+}
+#移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用
+#这里可以作为禁止log打印的功能使用,另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制
+-assumenosideeffects class android.util.Log {
+    public static *** v(...);
+    public static *** i(...);
+    public static *** d(...);
+    public static *** w(...);
+    public static *** e(...);
+}
+
+
+###############################
+#
+# 第三方jar包
+#
+###############################
+-keep class com.baidu.** {*;}
+-keep class vi.com.** {*;}
+-dontwarn com.baidu.**
 
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
+-keep class com.uuzuche.lib_zxing.** {*;}
+-keep class com.andreabaccega.** {*;}
+-keep class com.github.clans.fab.** {*;}
+-keep class com.yalantis.phoenix.** {*;}
+-keep class com.baoyz.swipemenulistview.** {*;}
+-keep class com.viewpagerindicator.** {*;}
+-keep class com.afollestad.materialdialogs.** {*;}
+-keep class com.github.mikephil.charting.** {*;}
+-keep class com.module.recyclerlibrary.** {*;}
+-keep class com.handmark.pulltorefresh.library.** {*;}
+-keep class cc.cloudist.acplibrary.** {*;}
+
+-keep class android.arch.core.internal.** {*;}
+-keep class android.arch.lifecycle.** {*;}
+-keep class com.alibaba.fastjson.** {*;}
+-dontwarn com.alibaba.fastjson.**
+-keep class android.support.graphics.drawable.** {*;}
+-keep class com.facebook.stetho.** {*;}
+-keep class javax.annotation.** {*;}
+-keep class com.lidroid.xutils.** {*;}
+-keep class okhttp3.** {*;}
+-keep class okio.** {*;}
+-dontwarn okio.**
+-keep class org.apache.** {*;}
+-keep class org.junit.** {*;}
+-keep class junit.** {*;}
+-keep class org.hamcrest.** {*;}
+
+-keep class sun.misc.Unsafe {*;}
+-keep class com.google.gson.** {*;}
+-keep class com.google.gson.stream.** {*;}
+-keep class com.android.volley.** {*;}
+
+-keep class butterknife.** {*;}
+-dontwarn butterknife.internal.**
+-keep class **$$ViewBinder { *; }
+
+-keep class cat.ereza.customactivityoncrash.** {*;}
+-keep class uk.co.senab.photoview.** {*;}
+-keep class com.flipboard.bottomsheet.** {*;}
+-keep class flipboard.bottomsheet.** {*;}
+-keep class com.bumptech.glide.** {*;}
+-keep class com.chad.library.** {*;}
+-keep class com.tonicartos.widget.stickygridheaders.** {*;}
+-keep class com.orhanobut.logger.** {*;}
+-keep class com.readystatesoftware.systembartint.** {*;}
+-keep class com.scwang.smartrefresh.** {*;}
+-keep class com.squareup.** {*;}
+-keep class com.tencent.** {*;}
+-keep class com.umeng.analytics.** {*;}
+-keep class com.youth.banner.** {*;}
+-keep class de.hdodenhof.circleimageview.** {*;}
+-keep class rx.** {*;}
+-keep class org.joda.time.** {*;}
+-keep class me.gujun.android.taggroup.** {*;}
+-keep class me.zhanghai.android.materialprogressbar.** {*;}
+-keep class android.net.** {*;}
+-keep class com.android.internal.http.multipart.** {*;}
+-keep class pl.droidsonroids.gif.** {*;}
+-keep class se.emilsjolander.stickylistheaders.** {*;}
+-keep class com.alipay.** {*;}
+-dontwarn com.alipay.**
+-keep class com.tencent.mm.sdk.** {
+   *;
+}
+
+###############################
+#
+# 自己的代码
+# 引用的其他Module可以直接在app的这个混淆文件里配置
+#
+###############################
+#实体类
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appcontact.model.** {*;}
+-keep class com.modular.login.model.** {*;}
+-keep class com.modular.booking.model.** {*;}
+-keep class com.uas.appme.settings.model.** {*;}
+-keep class com.modular.appmessages.model.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+-keep class com.uas.appworks.model.** {*;}
+-keep class com.xzjmyk.pm.activity.bean.** {*;}
+-keep class com.modular.apputils.model.** {*;}
+#自定义控件
+-keep class com.core.widget.** {*;}
+-keep class com.modular.booking.widget.** {*;}
+-keep class com.uas.appcontact.ui.widget.stickylistheaders.** {*;}
+-keep class com.uas.appme.widget.** {*;}
+-keep class com.modular.appmessages.widget.** {*;}
+-keep class com.modular.apputils.widget.** {*;}
+-keep class com.uas.appworks.widget.** {*;}
+-keep class com.ipaulpro.afilechooser.** {*;}
+-keep class com.roamer.slidelistview.** {*;}
+-keep class com.xzjmyk.pm.activity.view.** {*;}
+-keep class com.xzjmyk.pm.activity.video.** {*;}
+-keep class com.modular.apputils.utils.** {*;}
+#与js互相调用的类
+-keep class com.com.xzjmyk.pm.activity.ui.erp.activity.WebViewCommActivity.JSWebView
 
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile

+ 1 - 1
build.gradle

@@ -1,4 +1,5 @@
 apply from: "version.gradle"
+
 buildscript {
     repositories {
         jcenter()
@@ -11,7 +12,6 @@ buildscript {
         classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
         classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'
         classpath 'me.tatarka:gradle-retrolambda:3.2.2'
-        classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.13'
     }
 }