From f0de01d017c0ce0a4954dd1215449ceea05af29b Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期二, 10 九月 2024 14:13:52 +0800 Subject: [PATCH] 添加混淆,修复因权限问题的bug --- qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/Constants.java | 3 qiheonlinelibrary/build.gradle | 2 baselibrary/src/main/java/com/dayu/baselibrary/dao/BaseDaoSingleton.java | 1 baselibrary/proguard-rules.pro | 133 ++++++++++ qihealonelibrary/build.gradle | 2 qihealonelibrary/proguard-rules.pro | 133 ++++++++++ qiheonlinelibrary/proguard-rules.pro | 132 +++++++++ baselibrary/build.gradle | 4 app/src/main/java/com/dayu/recharge/activity/LoginActivity.java | 16 app/src/main/res/layout/activity_login.xml | 4 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/RechargeActivity.java | 77 +++-- henanlibrary/build.gradle | 2 henanlibrary/proguard-rules.pro | 134 ++++++++++ app/proguard-rules.pro | 127 +++++++++ app/build.gradle | 9 15 files changed, 718 insertions(+), 61 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 7456738..d8d6824 100644 --- a/app/build.gradle +++ b/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 + //琛ㄧず鍚敤浠g爜娣锋穯銆� + minifyEnabled true + // 琛ㄧず绉婚櫎鏈娇鐢ㄧ殑璧勬簮鏂囦欢銆� + shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 481bb43..b536631 100644 --- a/app/proguard-rules.pro +++ b/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 \ No newline at end of file +#-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.**{*;} + + +# 鑻ndroid 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.** {*;} \ No newline at end of file diff --git a/app/src/main/java/com/dayu/recharge/activity/LoginActivity.java b/app/src/main/java/com/dayu/recharge/activity/LoginActivity.java index 7b46a21..95354c4 100644 --- a/app/src/main/java/com/dayu/recharge/activity/LoginActivity.java +++ b/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) { diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 7297574..59d8d49 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/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> diff --git a/baselibrary/build.gradle b/baselibrary/build.gradle index b32585c..16f5ba9 100644 --- a/baselibrary/build.gradle +++ b/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' diff --git a/baselibrary/proguard-rules.pro b/baselibrary/proguard-rules.pro index 481bb43..9aeee16 100644 --- a/baselibrary/proguard-rules.pro +++ b/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 \ No newline at end of file +#-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.**{*;} + + +# 鑻ndroid 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.** {*;} diff --git a/baselibrary/src/main/java/com/dayu/baselibrary/dao/BaseDaoSingleton.java b/baselibrary/src/main/java/com/dayu/baselibrary/dao/BaseDaoSingleton.java index 3d09e8f..2b40851 100644 --- a/baselibrary/src/main/java/com/dayu/baselibrary/dao/BaseDaoSingleton.java +++ b/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; diff --git a/henanlibrary/build.gradle b/henanlibrary/build.gradle index 02deea0..5ae6fac 100644 --- a/henanlibrary/build.gradle +++ b/henanlibrary/build.gradle @@ -14,7 +14,7 @@ buildTypes { release { - minifyEnabled false + minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } diff --git a/henanlibrary/proguard-rules.pro b/henanlibrary/proguard-rules.pro index 481bb43..8311792 100644 --- a/henanlibrary/proguard-rules.pro +++ b/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 \ No newline at end of file +#-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.**{*;} + + +# 鑻ndroid 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.** {*;} \ No newline at end of file diff --git a/qihealonelibrary/build.gradle b/qihealonelibrary/build.gradle index 08d91f6..527f133 100644 --- a/qihealonelibrary/build.gradle +++ b/qihealonelibrary/build.gradle @@ -14,7 +14,7 @@ buildTypes { release { - minifyEnabled false + minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } diff --git a/qihealonelibrary/proguard-rules.pro b/qihealonelibrary/proguard-rules.pro index 481bb43..8961f96 100644 --- a/qihealonelibrary/proguard-rules.pro +++ b/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 \ No newline at end of file +#-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.**{*;} + + +# 鑻ndroid 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.** {*;} + diff --git a/qiheonlinelibrary/build.gradle b/qiheonlinelibrary/build.gradle index 3aacde8..8f63ea4 100644 --- a/qiheonlinelibrary/build.gradle +++ b/qiheonlinelibrary/build.gradle @@ -14,7 +14,7 @@ buildTypes { release { - minifyEnabled false + minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } diff --git a/qiheonlinelibrary/proguard-rules.pro b/qiheonlinelibrary/proguard-rules.pro index 4731eef..18afb05 100644 --- a/qiheonlinelibrary/proguard-rules.pro +++ b/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.** { *; } \ No newline at end of file +-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.**{*;} + + +# 鑻ndroid 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.** {*;} \ No newline at end of file diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/RechargeActivity.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/RechargeActivity.java index 122fc9c..967de28 100644 --- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/RechargeActivity.java +++ b/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) { //鍏堝鐞嗚ˉ鎵� //鍏呭�艰ˉ鎵i噾棰�=鍏呭�奸噾棰�+鍏呭�煎墠璇诲彇鐨勫崱鍐呬綑棰�-鍏呭�煎洖璋冭繑鍥炲崱鍐呬綑棰� - 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, "褰撳墠鍏呭�奸噾棰濆皬浜庤ˉ鎵i噾棰濓紝琛ユ墸閲戦涓�" + MornyUtil.changeF2Y(deductionMorny) + "鍏冿紝鍏呭�奸噾棰濆簲澶т簬琛ユ墸閲戦锛�"); @@ -341,11 +344,11 @@ if (t.getData() != null) { //ic鍗$姸鎬� 0 姝e父 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, "璇诲彇鍗$墖澶辫触锛岃閲嶆柊璐村崱"); } diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/Constants.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/Constants.java index fc8f768..eb90138 100644 --- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/net/Constants.java +++ b/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/"; /** * 浠h〃璇锋眰鎴愬姛 -- Gitblit v1.8.0