diff --git a/SzyxImSdk/build.gradle b/SzyxImSdk/build.gradle index fa95369..d72c003 100644 --- a/SzyxImSdk/build.gradle +++ b/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' } } diff --git a/SzyxImSdk/proguard-rules.pro b/SzyxImSdk/proguard-rules.pro index 481bb43..55cbedd 100644 --- a/SzyxImSdk/proguard-rules.pro +++ b/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 \ No newline at end of file +# 对于一些基本指令的添加 +# +############################################# +# 代码混淆压缩比,在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{ ;} + -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 ; +} + +# 保留在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 (android.content.Context); + public (android.content.Context, android.util.AttributeSet); + public (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 ; + !private ; + !private ; + 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.**{*;} \ No newline at end of file diff --git a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/bean/IMUserFullInfo.java b/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/bean/IMUserFullInfo.java deleted file mode 100644 index 1eb0ac5..0000000 --- a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/bean/IMUserFullInfo.java +++ /dev/null @@ -1,4 +0,0 @@ -package cn.org.bjca.trust.android.lib.im.bean; - -public class IMUserFullInfo { -} diff --git a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/IMHelper.java b/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/IMHelper.java index de28a2e..6e38fea 100644 --- a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/IMHelper.java +++ b/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 { diff --git a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/manager/ImManager.java b/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/manager/ImManager.java index 98328d8..5500a97 100644 --- a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/manager/ImManager.java +++ b/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; diff --git a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/msg/SZYXMessage.java b/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/msg/message/SZYXMessage.java similarity index 98% rename from SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/msg/SZYXMessage.java rename to SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/msg/message/SZYXMessage.java index b285dce..7439c66 100644 --- a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/msg/SZYXMessage.java +++ b/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; diff --git a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/kit/IMInterface.java b/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/kit/IMInterface.java similarity index 88% rename from SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/kit/IMInterface.java rename to SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/kit/IMInterface.java index cd247a2..7442530 100644 --- a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/kit/IMInterface.java +++ b/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; diff --git a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/kit/IMSDKListener.java b/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/kit/IMSDKListener.java index 599e876..d79f3ff 100644 --- a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/kit/IMSDKListener.java +++ b/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); } diff --git a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/kit/MsgListener.java b/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/kit/MsgListener.java index 1f7d3a4..c0dfa83 100644 --- a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/kit/MsgListener.java +++ b/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 messages); diff --git a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/kit/SdkMsgInterface.java b/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/kit/SdkMsgInterface.java index 24d9416..78f9982 100644 --- a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/kit/SdkMsgInterface.java +++ b/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 { diff --git a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/manager/SZYXMessageManager.java b/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/manager/SZYXMessageManager.java index cc9f00d..31b2f36 100644 --- a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/manager/SZYXMessageManager.java +++ b/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; diff --git a/app/build.gradle b/app/build.gradle index aed22d5..0118532 100644 --- a/app/build.gradle +++ b/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' diff --git a/app/libs/SzyxImSdk-release.aar b/app/libs/SzyxImSdk-release.aar new file mode 100644 index 0000000..8e08a31 Binary files /dev/null and b/app/libs/SzyxImSdk-release.aar differ diff --git a/app/src/main/java/cn/org/bjca/trust/android/imdemo/MyApplication.java b/app/src/main/java/cn/org/bjca/trust/android/imdemo/MyApplication.java index f365d7a..f6d1abd 100644 --- a/app/src/main/java/cn/org/bjca/trust/android/imdemo/MyApplication.java +++ b/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) { } }); diff --git a/app/src/main/java/cn/org/bjca/trust/android/imdemo/ui/ChatActivity.java b/app/src/main/java/cn/org/bjca/trust/android/imdemo/ui/ChatActivity.java index e84d947..fcd5ae0 100644 --- a/app/src/main/java/cn/org/bjca/trust/android/imdemo/ui/ChatActivity.java +++ b/app/src/main/java/cn/org/bjca/trust/android/imdemo/ui/ChatActivity.java @@ -25,7 +25,6 @@ public class ChatActivity extends BaseActivity { 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)) {