xuqm 1 year ago
parent
commit
0985b44740

+ 11 - 1
SzyxImSdk/build.gradle

@@ -20,8 +20,18 @@ android {
     }
 
     buildTypes {
-        release {
+        debug {
+            // 开启混淆
             minifyEnabled false
+            // Zipalign压缩优化
+            zipAlignEnabled true
+            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+        }
+        release {
+            // 开启混淆
+            minifyEnabled true
+            // Zipalign压缩优化
+            zipAlignEnabled true
             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
         }
     }

+ 143 - 20
SzyxImSdk/proguard-rules.pro

@@ -1,21 +1,144 @@
-# Add project specific ProGuard rules here.
-# You can control the set of applied configuration files using the
-# proguardFiles setting in build.gradle.
+#############################################
 #
-# For more details, see
-#   http://developer.android.com/guide/developing/tools/proguard.html
-
-# 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 *;
-#}
-
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
-
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile
+# 对于一些基本指令的添加
+#
+#############################################
+# 代码混淆压缩比,在0~7之间,默认为5,一般不做修改
+-optimizationpasses 5
+
+# 混合时不使用大小写混合,混合后的类名为小写
+-dontusemixedcaseclassnames
+
+# 混淆时是否记录日志,这句话能够使我们的项目混淆后产生映射文件
+# 包含有类名->混淆后类名的映射关系
+-verbose
+
+# 指定不去忽略非公共库的类
+#-dontskipnonpubliclibraryclasses
+
+
+# 指定不去忽略非公共库的类成员
+#-dontskipnonpubliclibraryclassmembers
+
+# 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
+#-dontpreverify
+
+# 保留Annotation不混淆
+-keepattributes *Annotation*,InnerClasses
+
+# 避免混淆泛型
+-keepattributes Signature
+# 忽略警告
+# -ignorewarning
+# 优化不优化输入的类文件
+-dontoptimize
+# 抛出异常时保留代码行号
+-keepattributes SourceFile,LineNumberTable
+
+# 指定混淆是采用的算法,后面的参数是一个过滤器
+# 这个过滤器是谷歌推荐的算法,一般不做更改
+-optimizations !code/simplification/cast,!field/*,!class/merging/*
+
+
+#############################################
+#
+# Android开发中一些需要保留的公共部分
+#
+#############################################
+
+# 保留我们使用的四大组件,自定义的Application等等这些类不被混淆
+# 因为这些子类都有可能被外部调用
+# -keep public class * extends android.app.Activity
+# -keep public class * extends android.app.Appliction
+# -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 cn.org.bjca.trust.android.lib.im.SZYXImSdk{ <methods>;}
+ -keep public class cn.org.bjca.trust.android.lib.im.common.**{*;}
+ -keep interface cn.org.bjca.trust.android.lib.im.kit.**{*;}
+ -keep public class cn.org.bjca.trust.android.lib.im.bean.**{*;}
+ -keep public class cn.org.bjca.trust.android.lib.im.im.msg.message.**{*;}
+
+-keepattributes MethodParameters
+
+
+# 保留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);
+}
+
+# 保留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);
+    void *(**On*Listener);
+    void *(**add*Listener);
+}
+
+-keep interface kotlin.Metadata {
+  *;
+}
+-keepattributes RuntimeVisibleAnnotations
+
+# 华为相关
+-ignorewarnings
+-keepattributes *Annotation*
+-keepattributes Exceptions
+-keepattributes InnerClasses
+-keepattributes Signature
+-keepattributes SourceFile,LineNumberTable
+-keep class com.huawei.hianalytics.**{*;}
+-keep class com.huawei.updatesdk.**{*;}
+-keep class com.huawei.hms.**{*;}

+ 0 - 4
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/bean/IMUserFullInfo.java

@@ -1,4 +0,0 @@
-package cn.org.bjca.trust.android.lib.im.bean;
-
-public class IMUserFullInfo {
-}

+ 1 - 1
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/IMHelper.java

@@ -1,6 +1,6 @@
 package cn.org.bjca.trust.android.lib.im.im;
 
-import cn.org.bjca.trust.android.lib.im.im.kit.IMInterface;
+import cn.org.bjca.trust.android.lib.im.kit.IMInterface;
 import cn.org.bjca.trust.android.lib.im.im.manager.ImManager;
 
 public class IMHelper {

+ 2 - 2
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/manager/ImManager.java

@@ -27,10 +27,10 @@ import cn.org.bjca.trust.android.lib.im.common.json.GsonImplHelp;
 import cn.org.bjca.trust.android.lib.im.enums.MsgType;
 import cn.org.bjca.trust.android.lib.im.enums.PacketType;
 import cn.org.bjca.trust.android.lib.im.im.bean.PacketMessage;
-import cn.org.bjca.trust.android.lib.im.im.kit.IMInterface;
+import cn.org.bjca.trust.android.lib.im.kit.IMInterface;
 import cn.org.bjca.trust.android.lib.im.im.msg.ConnectMessage;
 import cn.org.bjca.trust.android.lib.im.im.msg.ConnectedMessage;
-import cn.org.bjca.trust.android.lib.im.im.msg.SZYXMessage;
+import cn.org.bjca.trust.android.lib.im.im.msg.message.SZYXMessage;
 import cn.org.bjca.trust.android.lib.im.im.msg.SendAckMessage;
 import cn.org.bjca.trust.android.lib.im.im.msg.message.SZYXTextMessage;
 import cn.org.bjca.trust.android.lib.im.im.opt.ImConnectOptions;

+ 1 - 1
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/msg/SZYXMessage.java → SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/msg/message/SZYXMessage.java

@@ -1,4 +1,4 @@
-package cn.org.bjca.trust.android.lib.im.im.msg;
+package cn.org.bjca.trust.android.lib.im.im.msg.message;
 
 import androidx.annotation.NonNull;
 

+ 2 - 2
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/kit/IMInterface.java → SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/kit/IMInterface.java

@@ -1,7 +1,7 @@
-package cn.org.bjca.trust.android.lib.im.im.kit;
+package cn.org.bjca.trust.android.lib.im.kit;
 
 import cn.org.bjca.trust.android.lib.im.enums.MsgType;
-import cn.org.bjca.trust.android.lib.im.im.msg.SZYXMessage;
+import cn.org.bjca.trust.android.lib.im.im.msg.message.SZYXMessage;
 import cn.org.bjca.trust.android.lib.im.im.opt.ImConnectOptions;
 import cn.org.bjca.trust.android.lib.im.kit.IMSDKCallback;
 import cn.org.bjca.trust.android.lib.im.kit.IMSDKListener;

+ 2 - 2
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/kit/IMSDKListener.java

@@ -1,6 +1,6 @@
 package cn.org.bjca.trust.android.lib.im.kit;
 
-import cn.org.bjca.trust.android.lib.im.bean.IMUserFullInfo;
+import cn.org.bjca.trust.android.lib.im.bean.UserInfo;
 
 public interface IMSDKListener {
     /**
@@ -30,6 +30,6 @@ public interface IMSDKListener {
     /**
      * 用户信息变更
      */
-    void onSelfInfoUpdated(IMUserFullInfo info);
+    void onSelfInfoUpdated(UserInfo info);
 
 }

+ 1 - 1
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/kit/MsgListener.java

@@ -2,7 +2,7 @@ package cn.org.bjca.trust.android.lib.im.kit;
 
 import java.util.List;
 
-import cn.org.bjca.trust.android.lib.im.im.msg.SZYXMessage;
+import cn.org.bjca.trust.android.lib.im.im.msg.message.SZYXMessage;
 
 public interface MsgListener {
     void messageArrive(List<SZYXMessage> messages);

+ 1 - 1
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/kit/SdkMsgInterface.java

@@ -1,6 +1,6 @@
 package cn.org.bjca.trust.android.lib.im.kit;
 
-import cn.org.bjca.trust.android.lib.im.im.msg.SZYXMessage;
+import cn.org.bjca.trust.android.lib.im.im.msg.message.SZYXMessage;
 
 public interface SdkMsgInterface {
 

+ 1 - 1
SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/manager/SZYXMessageManager.java

@@ -2,7 +2,7 @@ package cn.org.bjca.trust.android.lib.im.manager;
 
 import cn.org.bjca.trust.android.lib.im.enums.MsgType;
 import cn.org.bjca.trust.android.lib.im.im.IMHelper;
-import cn.org.bjca.trust.android.lib.im.im.msg.SZYXMessage;
+import cn.org.bjca.trust.android.lib.im.im.msg.message.SZYXMessage;
 import cn.org.bjca.trust.android.lib.im.im.msg.message.SZYXTextMessage;
 import cn.org.bjca.trust.android.lib.im.kit.IMSDKCallback;
 import cn.org.bjca.trust.android.lib.im.kit.MsgListener;

+ 11 - 2
app/build.gradle

@@ -30,12 +30,21 @@ android {
     buildFeatures {
         viewBinding true
     }
-}
+    sourceSets {
+        main {
+            jniLibs.srcDirs = ['libs']
+
+        }
 
+    }
+}
 dependencies {
+//    implementation fileTree(include: ['*.jar','*.aar'], dir: 'libs')
+
+
 
     api project(path: ':SzyxImSdk')
-    implementation 'androidx.appcompat:appcompat:1.4.1'
+    implementation 'androidx.appcompat:appcompat:1.4.2'
     implementation 'com.google.android.material:material:1.5.0'
     implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
     implementation 'androidx.annotation:annotation:1.3.0'

BIN
app/libs/SzyxImSdk-release.aar


+ 2 - 3
app/src/main/java/cn/org/bjca/trust/android/imdemo/MyApplication.java

@@ -1,14 +1,13 @@
 package cn.org.bjca.trust.android.imdemo;
 
-import android.app.Application;
 import android.widget.Toast;
 
 import com.xuqm.base.App;
 
 import cn.org.bjca.trust.android.lib.im.SZYXImSdk;
-import cn.org.bjca.trust.android.lib.im.bean.IMUserFullInfo;
 import cn.org.bjca.trust.android.lib.im.kit.IMSDKCallback;
 import cn.org.bjca.trust.android.lib.im.kit.IMSDKListener;
+import cn.org.bjca.trust.android.lib.im.bean.UserInfo;
 
 public class MyApplication extends App {
     @Override
@@ -41,7 +40,7 @@ public class MyApplication extends App {
             }
 
             @Override
-            public void onSelfInfoUpdated(IMUserFullInfo info) {
+            public void onSelfInfoUpdated(UserInfo info) {
 
             }
         });

+ 0 - 1
app/src/main/java/cn/org/bjca/trust/android/imdemo/ui/ChatActivity.java

@@ -25,7 +25,6 @@ public class ChatActivity extends BaseActivity<ActivityChatBinding> {
         String userName = getIntent().getStringExtra("userName");
         setTitleText(userName + "(" + userId + ")");
         getBaseBinding().baseToolbar.getToolbarMenu().setVisibility(View.VISIBLE);
-
         getBinding().btnSend.setOnClickListener(v -> {
             String msg = getBinding().et.getText().toString();
             if (!ToolsHelper.isNull(msg)) {