app/build.gradle
@@ -16,8 +16,8 @@ applicationId "com.dayu.recharge" minSdk 23 targetSdk 26 versionCode 265 versionName "2.6.5" versionCode 266 versionName "2.6.6" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" ndk { @@ -28,7 +28,10 @@ buildTypes { release { minifyEnabled false //表示启用代码混淆。 minifyEnabled true // 表示移除未使用的资源文件。 shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } app/proguard-rules.pro
@@ -18,4 +18,129 @@ # If you keep the line number information, uncomment this to # hide the original source file name. #-renamesourcefileattribute SourceFile #-renamesourcefileattribute SourceFile -keepattributes SourceFile,LineNumberTable -keepattributes Exceptions, Signature, InnerClasses -keepclasseswithmembernames class * { # 保持native方法不被混淆 native <methods>; } -keep class * implements Android.os.Parcelable { # 保持Parcelable不被混淆 public static final Android.os.Parcelable$Creator *; } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keepattributes *Annotation* #保持注解 #---------------------------------默认保留区--------------------------------- -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 -keep class android.support.** {*;} -keepclasseswithmembernames class * { native <methods>; } -keepclassmembers class * extends android.app.Activity{ public void *(android.view.View); } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -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); } -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } -keepclassmembers class * implements java.io.Serializable { static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve(); } -keep class **.R$* { *; } -keepclassmembers class * { void *(**On*Event); } # 移除日志语句 -assumenosideeffects class android.util.Log { public static *** d(...); # public static *** v(...); # public static *** i(...); # public static *** w(...); # public static *** e(...); } #---------------------------------------------------------------------------- -keep public class * extends android.view.View { } -keep class **.R$* {*;} #okhttp -dontwarn okhttp3.** -keep class okhttp3.**{*;} -keep interface okhttp3.**{*;} #rxjava -keep public class io.reactivex.android.**{*;} -keep public class io.reactivex.**{*;} -keep public class rx.android.**{*;} -keep public class rx.**{*;} -keep public class javax.annotation.**{*;} -keep public class javax.inject.**{*;} -keep class com.google.gson.** { *; } #glide -keep public class com.bumptech.glide.**{*;} -keep public class com.luck.picture.lib.**{*;} -keep public class androidx.**{*;} -keep public class com.bumptech.**{*;} -keep public class com.scwang.**{*;} -keep public class kotlin.**{*;} -keep public class retrofit2.**{*;} -keep public class okio.**{*;} -keep public class com.google.**{*;} # 若Android API 高于27添加以下(不需要/): -dontwarn com.bumptech.glide.load.resource.bitmap.VideoDecoder # for DexGuard only #-keep resource xmlelements manifest/application/meta-data@value=GlideModule -keep class com.xuexiang.xupdate.entity.** { *; } # Note: if you use a custom API parser for parsing, you need to add confusion to your custom API entities. Here are the custom API entity obfuscation rules configured in this demo: -keep class com.xuexiang.xupdatedemo.entity.** { *; } -keep class com.hjq.permissions.** {*;} #腾讯相关 -keep class com.qq.** {*;} -keep class com.tencent.** {*;} #权限申请 -keep class com.hjq.** {*;} #列表相关 -keep class com.scwang.** {*;} #其他 -keep class com.contrarywind.** {*;} -keep class com.bigkoo.** {*;} -keep class org.** {*;} app/src/main/java/com/dayu/recharge/activity/LoginActivity.java
@@ -47,7 +47,6 @@ ActivityLoginBinding binding; PassWordBean passWordBean; // com.dayu.qihealonelibrary.dbBean.PassWordBean int clickNumber; @Override @@ -55,12 +54,9 @@ super.onCreate(savedInstanceState); binding = ActivityLoginBinding.inflate(LayoutInflater.from(this)); setContentView(binding.getRoot()); getPermission(); initView(); if (MyApplication.myApplication.libraryType == BaseCommon.NoLibrary) { choesLibrary(); //没有选择版本先选择版本 } getPermission(); } private void initView() { @@ -194,6 +190,9 @@ } } /** * 获取通用权限 */ private void getPermission() { try { XXPermissions.with(this) @@ -212,6 +211,10 @@ file.mkdirs(); } passWordBean = BaseDaoSingleton.getInstance(LoginActivity.this).loginPsDao().findFirst(); if (MyApplication.myApplication.libraryType == BaseCommon.NoLibrary) { choesLibrary(); //没有选择版本先选择版本 } } catch (Exception e) { e.printStackTrace(); } @@ -282,6 +285,7 @@ } long mExitTime; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { app/src/main/res/layout/activity_login.xml
@@ -45,7 +45,7 @@ android:hint="请输入账号" android:maxLines="1" android:singleLine="true" android:text="zuoxiao" /> android:text="" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" @@ -66,7 +66,7 @@ android:layout_height="wrap_content" android:hint="初始密码为数字1-6" android:inputType="textPassword" android:text="ZX@@123qwA" /> android:text="" /> </LinearLayout> baselibrary/build.gradle
@@ -12,7 +12,7 @@ buildTypes { release { minifyEnabled false minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } @@ -30,7 +30,7 @@ dependencies { implementation fileTree(include: ['*.jar','*.aar'], dir: 'libs') implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs') implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' implementation 'androidx.core:core-ktx:1.8.0' baselibrary/proguard-rules.pro
@@ -18,4 +18,135 @@ # If you keep the line number information, uncomment this to # hide the original source file name. #-renamesourcefileattribute SourceFile #-renamesourcefileattribute SourceFile -keepattributes SourceFile,LineNumberTable -keepattributes Exceptions, Signature, InnerClasses -keepclasseswithmembernames class * { # 保持native方法不被混淆 native <methods>; } -keep class * implements Android.os.Parcelable { # 保持Parcelable不被混淆 public static final Android.os.Parcelable$Creator *; } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keepattributes *Annotation* #保持注解 #---------------------------------默认保留区--------------------------------- -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 -keep class android.support.** {*;} -keepclasseswithmembernames class * { native <methods>; } -keepclassmembers class * extends android.app.Activity{ public void *(android.view.View); } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -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); } -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } -keepclassmembers class * implements java.io.Serializable { static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve(); } -keep class **.R$* { *; } -keepclassmembers class * { void *(**On*Event); } # 移除日志语句 -assumenosideeffects class android.util.Log { public static *** d(...); # public static *** v(...); # public static *** i(...); # public static *** w(...); # public static *** e(...); } #---------------------------------------------------------------------------- -keep public class * extends android.view.View { } -keep class **.R$* {*;} #okhttp -dontwarn okhttp3.** -keep class okhttp3.**{*;} -keep interface okhttp3.**{*;} #rxjava -keep public class io.reactivex.android.**{*;} -keep public class io.reactivex.**{*;} -keep public class rx.android.**{*;} -keep public class rx.**{*;} -keep public class javax.annotation.**{*;} -keep public class javax.inject.**{*;} -keep class com.google.gson.** { *; } #glide -keep public class com.bumptech.glide.**{*;} -keep public class com.luck.picture.lib.**{*;} -keep public class androidx.**{*;} -keep public class com.bumptech.**{*;} -keep public class com.scwang.**{*;} -keep public class kotlin.**{*;} -keep public class retrofit2.**{*;} -keep public class okio.**{*;} -keep public class com.google.**{*;} # 若Android API 高于27添加以下(不需要/): -dontwarn com.bumptech.glide.load.resource.bitmap.VideoDecoder # for DexGuard only #-keep resource xmlelements manifest/application/meta-data@value=GlideModule -keep class com.xuexiang.xupdate.entity.** { *; } # Note: if you use a custom API parser for parsing, you need to add confusion to your custom API entities. Here are the custom API entity obfuscation rules configured in this demo: -keep class com.xuexiang.xupdatedemo.entity.** { *; } -keep class com.hjq.permissions.** {*;} #腾讯相关 -keep class com.qq.** {*;} -keep class com.tencent.** {*;} #权限申请 -keep class com.hjq.** {*;} #列表相关 -keep class com.scwang.** {*;} #其他 -keep class com.contrarywind.** {*;} -keep class com.bigkoo.** {*;} -keep class org.** {*;} #当前模块 -keep class com.dayu.baselibrary.R -keep class com.dayu.baselibrary.activity.** {*;} -keep class com.dayu.baselibrary.view.** {*;} -keep class com.dayu.baselibrary.bean.** {*;} -keep class com.dayu.baselibrary.dbbean.** {*;} baselibrary/src/main/java/com/dayu/baselibrary/dao/BaseDaoSingleton.java
@@ -2,6 +2,7 @@ import android.content.Context; import android.os.Environment; import android.util.Log; import androidx.room.Room; henanlibrary/build.gradle
@@ -14,7 +14,7 @@ buildTypes { release { minifyEnabled false minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } henanlibrary/proguard-rules.pro
@@ -18,4 +18,136 @@ # If you keep the line number information, uncomment this to # hide the original source file name. #-renamesourcefileattribute SourceFile #-renamesourcefileattribute SourceFile -keepattributes SourceFile,LineNumberTable -keepattributes Exceptions, Signature, InnerClasses -keepclasseswithmembernames class * { # 保持native方法不被混淆 native <methods>; } -keep class * implements Android.os.Parcelable { # 保持Parcelable不被混淆 public static final Android.os.Parcelable$Creator *; } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keepattributes *Annotation* #保持注解 #---------------------------------默认保留区--------------------------------- -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 -keep class android.support.** {*;} -keepclasseswithmembernames class * { native <methods>; } -keepclassmembers class * extends android.app.Activity{ public void *(android.view.View); } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -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); } -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } -keepclassmembers class * implements java.io.Serializable { static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve(); } -keep class **.R$* { *; } -keepclassmembers class * { void *(**On*Event); } # 移除日志语句 -assumenosideeffects class android.util.Log { public static *** d(...); # public static *** v(...); # public static *** i(...); # public static *** w(...); # public static *** e(...); } #---------------------------------------------------------------------------- -keep public class * extends android.view.View { } -keep class **.R$* {*;} #okhttp -dontwarn okhttp3.** -keep class okhttp3.**{*;} -keep interface okhttp3.**{*;} #rxjava -keep public class io.reactivex.android.**{*;} -keep public class io.reactivex.**{*;} -keep public class rx.android.**{*;} -keep public class rx.**{*;} -keep public class javax.annotation.**{*;} -keep public class javax.inject.**{*;} -keep class com.google.gson.** { *; } #glide -keep public class com.bumptech.glide.**{*;} -keep public class com.luck.picture.lib.**{*;} -keep public class androidx.**{*;} -keep public class com.bumptech.**{*;} -keep public class com.scwang.**{*;} -keep public class kotlin.**{*;} -keep public class retrofit2.**{*;} -keep public class okio.**{*;} -keep public class com.google.**{*;} # 若Android API 高于27添加以下(不需要/): -dontwarn com.bumptech.glide.load.resource.bitmap.VideoDecoder # for DexGuard only #-keep resource xmlelements manifest/application/meta-data@value=GlideModule -keep class com.xuexiang.xupdate.entity.** { *; } # Note: if you use a custom API parser for parsing, you need to add confusion to your custom API entities. Here are the custom API entity obfuscation rules configured in this demo: -keep class com.xuexiang.xupdatedemo.entity.** { *; } -keep class com.hjq.permissions.** {*;} #腾讯相关 -keep class com.qq.** {*;} -keep class com.tencent.** {*;} #权限申请 -keep class com.hjq.** {*;} #列表相关 -keep class com.scwang.** {*;} #其他 -keep class com.contrarywind.** {*;} -keep class com.bigkoo.** {*;} -keep class org.** {*;} #当前模块 -keep class com.dayu.henanlibrary.view.** {*;} -keep class com.dayu.henanlibrary.activity.** {*;} -keep class com.dayu.henanlibrary.card.** {*;} -keep class com.dayu.henanlibrary.dbBean.** {*;} -keep class com.dayu.henanlibrary.net.** {*;} -keep class com.dayu.henanlibrary.socketBean.** {*;} qihealonelibrary/build.gradle
@@ -14,7 +14,7 @@ buildTypes { release { minifyEnabled false minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } qihealonelibrary/proguard-rules.pro
@@ -18,4 +18,135 @@ # If you keep the line number information, uncomment this to # hide the original source file name. #-renamesourcefileattribute SourceFile #-renamesourcefileattribute SourceFile -keepattributes SourceFile,LineNumberTable -keepattributes Exceptions, Signature, InnerClasses -keepclasseswithmembernames class * { # 保持native方法不被混淆 native <methods>; } -keep class * implements Android.os.Parcelable { # 保持Parcelable不被混淆 public static final Android.os.Parcelable$Creator *; } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keepattributes *Annotation* #保持注解 #---------------------------------默认保留区--------------------------------- -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 -keep class android.support.** {*;} -keepclasseswithmembernames class * { native <methods>; } -keepclassmembers class * extends android.app.Activity{ public void *(android.view.View); } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -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); } -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } -keepclassmembers class * implements java.io.Serializable { static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve(); } -keep class **.R$* { *; } -keepclassmembers class * { void *(**On*Event); } # 移除日志语句 -assumenosideeffects class android.util.Log { public static *** d(...); # public static *** v(...); # public static *** i(...); # public static *** w(...); # public static *** e(...); } #---------------------------------------------------------------------------- -keep public class * extends android.view.View { } -keep class **.R$* {*;} #okhttp -dontwarn okhttp3.** -keep class okhttp3.**{*;} -keep interface okhttp3.**{*;} #rxjava -keep public class io.reactivex.android.**{*;} -keep public class io.reactivex.**{*;} -keep public class rx.android.**{*;} -keep public class rx.**{*;} -keep public class javax.annotation.**{*;} -keep public class javax.inject.**{*;} -keep class com.google.gson.** { *; } #glide -keep public class com.bumptech.glide.**{*;} -keep public class com.luck.picture.lib.**{*;} -keep public class androidx.**{*;} -keep public class com.bumptech.**{*;} -keep public class com.scwang.**{*;} -keep public class kotlin.**{*;} -keep public class retrofit2.**{*;} -keep public class okio.**{*;} -keep public class com.google.**{*;} # 若Android API 高于27添加以下(不需要/): -dontwarn com.bumptech.glide.load.resource.bitmap.VideoDecoder # for DexGuard only #-keep resource xmlelements manifest/application/meta-data@value=GlideModule -keep class com.xuexiang.xupdate.entity.** { *; } # Note: if you use a custom API parser for parsing, you need to add confusion to your custom API entities. Here are the custom API entity obfuscation rules configured in this demo: -keep class com.xuexiang.xupdatedemo.entity.** { *; } -keep class com.hjq.permissions.** {*;} #腾讯相关 -keep class com.qq.** {*;} -keep class com.tencent.** {*;} #权限申请 -keep class com.hjq.** {*;} #列表相关 -keep class com.scwang.** {*;} #其他 -keep class com.contrarywind.** {*;} -keep class com.bigkoo.** {*;} -keep class org.** {*;} #当前模块 -keep class com.dayu.qihealonelibrary.view.** {*;} -keep class com.dayu.qihealonelibrary.card.** {*;} -keep class com.dayu.qihealonelibrary.activity.** {*;} -keep class com.dayu.qihealonelibrary.dbBean.** {*;} qiheonlinelibrary/build.gradle
@@ -14,7 +14,7 @@ buildTypes { release { minifyEnabled false minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } qiheonlinelibrary/proguard-rules.pro
@@ -19,7 +19,133 @@ # If you keep the line number information, uncomment this to # hide the original source file name. #-renamesourcefileattribute SourceFile -keepattributes SourceFile,LineNumberTable -keepattributes Exceptions, Signature, InnerClasses -keepclasseswithmembernames class * { # 保持native方法不被混淆 native <methods>; } -keep class * implements Android.os.Parcelable { # 保持Parcelable不被混淆 public static final Android.os.Parcelable$Creator *; } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keepattributes *Annotation* #保持注解 #---------------------------------默认保留区--------------------------------- -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 -keep class android.support.** {*;} -keep class androidx.room.** { *; } -keep @androidx.room.** class * -keep interface androidx.room.** { *; } -keepclasseswithmembernames class * { native <methods>; } -keepclassmembers class * extends android.app.Activity{ public void *(android.view.View); } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -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); } -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } -keepclassmembers class * implements java.io.Serializable { static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve(); } -keep class **.R$* { *; } -keepclassmembers class * { void *(**On*Event); } # 移除日志语句 -assumenosideeffects class android.util.Log { public static *** d(...); # public static *** v(...); # public static *** i(...); # public static *** w(...); # public static *** e(...); } #---------------------------------------------------------------------------- -keep public class * extends android.view.View { } -keep class **.R$* {*;} #okhttp -dontwarn okhttp3.** -keep class okhttp3.**{*;} -keep interface okhttp3.**{*;} #rxjava -keep public class io.reactivex.android.**{*;} -keep public class io.reactivex.**{*;} -keep public class rx.android.**{*;} -keep public class rx.**{*;} -keep public class javax.annotation.**{*;} -keep public class javax.inject.**{*;} -keep class com.google.gson.** { *; } #glide -keep public class com.bumptech.glide.**{*;} -keep public class com.luck.picture.lib.**{*;} -keep public class androidx.**{*;} -keep public class com.bumptech.**{*;} -keep public class com.scwang.**{*;} -keep public class kotlin.**{*;} -keep public class retrofit2.**{*;} -keep public class okio.**{*;} -keep public class com.google.**{*;} # 若Android API 高于27添加以下(不需要/): -dontwarn com.bumptech.glide.load.resource.bitmap.VideoDecoder # for DexGuard only #-keep resource xmlelements manifest/application/meta-data@value=GlideModule -keep class com.xuexiang.xupdate.entity.** { *; } # Note: if you use a custom API parser for parsing, you need to add confusion to your custom API entities. Here are the custom API entity obfuscation rules configured in this demo: -keep class com.xuexiang.xupdatedemo.entity.** { *; } -keep class com.hjq.permissions.** {*;} #腾讯相关 -keep class com.qq.** {*;} -keep class com.tencent.** {*;} #权限申请 -keep class com.hjq.** {*;} #列表相关 -keep class com.scwang.** {*;} #其他 -keep class com.contrarywind.** {*;} -keep class com.bigkoo.** {*;} -keep class org.** {*;} #当前模块 -keep class com.dayu.qiheonlinelibrary.view.** {*;} -keep class com.dayu.qiheonlinelibrary.activity.** {*;} -keep class com.dayu.qiheonlinelibrary.card.** {*;} -keep class com.dayu.qiheonlinelibrary.dbBean.** {*;} qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/RechargeActivity.java
@@ -1,7 +1,5 @@ package com.dayu.qiheonlinelibrary.activity; import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.text.Editable; @@ -11,37 +9,25 @@ import android.view.View; import android.widget.EditText; import com.dayu.baselibrary.tools.HexUtil; import com.dayu.baselibrary.utils.DeviceUtils; import com.dayu.baselibrary.utils.MornyUtil; import com.dayu.baselibrary.utils.TipUtil; import com.dayu.baselibrary.utils.ToastUtil; import com.dayu.baselibrary.view.TipDialog; import com.dayu.qiheonlinelibrary.QHOnLineApplication; import com.dayu.qiheonlinelibrary.R; import com.dayu.qiheonlinelibrary.bean.CardInfoResult; import com.dayu.qiheonlinelibrary.bean.RechargeResult; import com.dayu.qiheonlinelibrary.card.UserCard; import com.dayu.qiheonlinelibrary.databinding.ActivityRechargeQhlBinding; import com.dayu.qiheonlinelibrary.dbBean.AdminDataBean; import com.dayu.qiheonlinelibrary.dbBean.ElectricPriceBean; import com.dayu.qiheonlinelibrary.dbBean.RechargeBean; import com.dayu.qiheonlinelibrary.dbBean.UserCardBean; import com.dayu.qiheonlinelibrary.net.ApiManager; import com.dayu.qiheonlinelibrary.net.BaseResponse; import com.dayu.qiheonlinelibrary.net.RSAUtile; import com.dayu.qiheonlinelibrary.net.subscribers.SubscriberListener; import com.dayu.qiheonlinelibrary.tools.NfcReadHelper; import com.dayu.qiheonlinelibrary.utils.CardCommon; import com.tencent.bugly.crashreport.CrashReport; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -68,7 +54,7 @@ CardInfoResult cardInfoResult; UserCard mOldUserCard; @Override protected void onCreate(Bundle savedInstanceState) { @@ -106,13 +92,24 @@ cardType = cardType.split(",")[1]; } //获取卡内信息 mOldUserCard = NfcReadHelper.getInstence(intent, this).getUserCardData(); getUserInfoAndCardInfo(cardNumber,mOldUserCard.getMyUserCode()); userCard = NfcReadHelper.getInstence(intent, this).getUserCardData(); if (userCard != null) { try { getUserInfoAndCardInfo(cardNumber, userCard.getMyUserCode()); } catch (Exception e) { e.printStackTrace(); CrashReport.postCatchedException(e); TipUtil.show(this, "读卡失败,请刷卡后不要立即移开"); } } else { TipUtil.show(this, "读卡失败,请刷卡后不要立即移开"); } } private void setUserData(String cardNumber, String userName, String lastRechargeTime, List<byte[]> data) { private void setUserData(String cardNumber, String userName, String lastRechargeTime) { if (cardType.equalsIgnoreCase(CardCommon.USER_CARD_TYPE_1)) { setCardState("终端写卡"); binding.rechargeLL.setVisibility(View.VISIBLE); @@ -127,25 +124,31 @@ TipUtil.show(this, "非用户卡,不能充值"); return; } if (userCard != null) { try { if (Integer.valueOf(QHOnLineApplication.getInstance().arerNumber) == userCard.getArerNumber()) { binding.rechargeReadLL.setVisibility(View.GONE); binding.rechargeTextLL.setVisibility(View.VISIBLE); binding.userName.setText(userName); binding.redInitCode.setText(cardNumber); binding.redRechargeDate.setText("本卡最后购水日期:\n\n" + lastRechargeTime); binding.redUserCode.setText(cardInfoResult.getIccardCode()); if (userCard != null) { binding.redRemainderBlance.setText(MornyUtil.changeF2Y(userCard.getBalance()) + " 元"); binding.redBalanceElectric.setText("充值后剩余电量:" + MornyUtil.changeF2Y(userCard.getSurplusElecticity()) + " 度"); } binding.redRechargeElectric.setText("电量单价:" + QHOnLineApplication.getInstance().electriclePriceStr + "元/度"); userCard = UserCard.getBean(data); if (Integer.valueOf(QHOnLineApplication.getInstance().arerNumber) == userCard.getArerNumber()) { binding.rechargeReadLL.setVisibility(View.GONE); binding.rechargeTextLL.setVisibility(View.VISIBLE); binding.userName.setText(userName); binding.redInitCode.setText(cardNumber); binding.redRechargeDate.setText("本卡最后购水日期:\n\n" + lastRechargeTime); binding.redUserCode.setText(cardInfoResult.getIccardCode()); if (userCard != null) { binding.redRemainderBlance.setText(MornyUtil.changeF2Y(userCard.getBalance()) + " 元"); binding.redBalanceElectric.setText("充值后剩余电量:" + MornyUtil.changeF2Y(userCard.getSurplusElecticity()) + " 度"); } else { TipUtil.show(this, "非本区域卡\n不能充值!!!"); } } catch (Exception e) { e.printStackTrace(); CrashReport.postCatchedException(e); TipUtil.show(this, "读卡失败,请刷卡后不要立即移开"); } binding.redRechargeElectric.setText("电量单价:" + QHOnLineApplication.getInstance().electriclePriceStr + "元/度"); } else { TipUtil.show(this, "非本区域卡\n不能充值!!!"); TipUtil.show(this, "读卡失败,请刷卡后不要立即移开"); } @@ -225,7 +228,7 @@ private void startNfcActivity(String morny, String balance, float rechargeElectric, float iccardBalanceElectric, float totalMorny, String iccardRechargeRecordId) { //先处理补扣 //充值补扣金额=充值金额+充值前读取的卡内余额-充值回调返回卡内余额 int deductionMorny = MornyUtil.changeY2F(morny) + mOldUserCard.getBalance() - MornyUtil.changeY2F(balance); int deductionMorny = MornyUtil.changeY2F(morny) + userCard.getBalance() - MornyUtil.changeY2F(balance); if (MornyUtil.changeY2F(morny) < deductionMorny) { TipUtil.show(RechargeActivity.this, "当前充值金额小于补扣金额,补扣金额为" + MornyUtil.changeF2Y(deductionMorny) + "元,充值金额应大于补扣金额!"); @@ -341,11 +344,11 @@ if (t.getData() != null) { //ic卡状态 0 正常 1 已注销 2 已挂失 if (t.getData().getIccardStatus() == 0) { List<byte[]> data = NfcReadHelper.getInstence(intent, RechargeActivity.this).getOnesectorData(); // List<byte[]> data = NfcReadHelper.getInstence(intent, RechargeActivity.this).getOnesectorData(); if (!data.isEmpty()) { if (!TextUtils.isEmpty(cardNumber)) { cardInfoResult = t.getData(); setUserData(cardNumber, cardInfoResult.getPeasantName(), cardInfoResult.getLastRechargeTime(), data); setUserData(cardNumber, cardInfoResult.getPeasantName(), cardInfoResult.getLastRechargeTime()); } else { TipUtil.show(RechargeActivity.this, "读取卡片失败,请重新贴卡"); } qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/Constants.java
@@ -7,7 +7,8 @@ * Description: */ public class Constants { public static final String BASE_URL = "http://120.46.45.35:20081/api/sjggqhtest/"; // http://120.46.45.35:20081/api/sjggqhtest/ public static final String BASE_URL = "http://120.46.45.35:20081/api/sjgg/"; /** * 代表请求成功