Skip to content

Commit e900723

Browse files
AriesHoo@126.comAriesHoo@126.com
AriesHoo@126.com
authored and
AriesHoo@126.com
committed
1、完善FastLib库混淆规则并增加部分三方库混淆规则
1 parent acc077c commit e900723

File tree

9 files changed

+79
-215
lines changed

9 files changed

+79
-215
lines changed

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ Demo中使用到的网络请求api来源于[豆瓣API V2](https://developers.dou
3939

4040
![](/apk/qr.png)
4141

42+
## 关于混淆
43+
44+
1、**2.2.13_beta12版本**开始自带混淆规则,并且会自动导入,正常情况下无需手动导入。
45+
46+
2、**2.2.13_beta12以上版本**可参考[proguard-rules.pro](https://github.com/AriesHoo/FastLib/blob/dev/library/proguard-rules.pro)
47+
4248
## 重大更新日志 其它版本参看[Release](https://github.com/AriesHoo/FastLib/releases)
4349

4450
* 2.2.13

apk/sample.apk

-1.47 MB
Binary file not shown.

app/build.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,13 @@ android {
4343
//是否debug模式用于控制是否打印log等
4444
debuggable true
4545
zipAlignEnabled true //是否支持Zip Align
46-
shrinkResources true //是否清理无用资源
47-
minifyEnabled true //是否启动混淆
46+
shrinkResources false //是否清理无用资源
47+
minifyEnabled false //是否启动混淆
4848
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
4949
signingConfig signingConfigs.release
5050
}
5151
release {
52-
debuggable true
52+
debuggable false
5353
zipAlignEnabled true //是否支持Zip Align
5454
shrinkResources true //是否清理无用资源
5555
minifyEnabled true //是否启动混淆
@@ -87,7 +87,7 @@ dependencies {
8787
implementation 'androidx.appcompat:appcompat:'.concat(supportVersion)
8888
implementation 'androidx.recyclerview:recyclerview:'.concat(supportVersion)
8989
//万能适配器--一般都需要吧
90-
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.45-androidx'
90+
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.49-androidx'
9191
//webView库 继承FastWebActivity需要,不需要内置WebView可以不implementation
9292
implementation 'com.just.agentweb:agentweb:4.0.2'
9393
//webView提供下载功能

app/proguard-rules.pro

Lines changed: 40 additions & 180 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Add project specific ProGuard rules here.
22
# By default, the flags in this file are appended to flags specified
3-
# in D:\Android\sdk/tools/proguard/proguard-android.txt
3+
# in /Users/lihui/work/AndroidStudio/sdk/tools/proguard/proguard-android.txt
44
# You can edit the include path and order by changing the proguardFiles
55
# directive in build.gradle.
66
#
@@ -15,188 +15,48 @@
1515
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
1616
# public *;
1717
#}
18-
18+
#实体类不要混淆不然无法解析
1919
-keep class com.aries.library.fast.demo.base.**{*;}
20-
-keep class com.aries.library.fast.demo.entity.**{*;}
21-
##
22-
##-------------------------------------------基本不用动区域----------------------------------------------
23-
##
24-
##
25-
## -----------------------------基本 -----------------------------
26-
##
27-
#
28-
## 指定代码的压缩级别 0 - 7(指定代码进行迭代优化的次数,在Android里面默认是5,这条指令也只有在可以优化时起作用。)
29-
#-optimizationpasses 5
30-
## 混淆时不会产生形形色色的类名(混淆时不使用大小写混合类名)
31-
#-dontusemixedcaseclassnames
32-
## 指定不去忽略非公共的库类(不跳过library中的非public的类)
33-
#-dontskipnonpubliclibraryclasses
34-
## 指定不去忽略包可见的库类的成员
35-
#-dontskipnonpubliclibraryclassmembers
36-
##不进行优化,建议使用此选项,
37-
#-dontoptimize
38-
# # 不进行预校验,Android不需要,可加快混淆速度。
39-
#-dontpreverify
40-
## 屏蔽警告
41-
#-ignorewarnings
42-
## 指定混淆是采用的算法,后面的参数是一个过滤器
43-
## 这个过滤器是谷歌推荐的算法,一般不做更改
44-
#-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
45-
## 保护代码中的Annotation不被混淆
46-
#-keepattributes *Annotation*
47-
## 避免混淆泛型, 这在JSON实体映射时非常重要
48-
#-keepattributes Signature
49-
## 抛出异常时保留代码行号
50-
#-keepattributes SourceFile,LineNumberTable
51-
# #优化时允许访问并修改有修饰符的类和类的成员,这可以提高优化步骤的结果。
52-
## 比如,当内联一个公共的getter方法时,这也可能需要外地公共访问。
53-
## 虽然java二进制规范不需要这个,要不然有的虚拟机处理这些代码会有问题。当有优化和使用-repackageclasses时才适用。
54-
##指示语:不能用这个指令处理库中的代码,因为有的类和类成员没有设计成public ,而在api中可能变成public
55-
#-allowaccessmodification
56-
##当有优化和使用-repackageclasses时才适用。
57-
#-repackageclasses ''
58-
# # 混淆时记录日志(打印混淆的详细信息)
59-
# # 这句话能够使我们的项目混淆后产生映射文件
60-
# # 包含有类名->混淆后类名的映射关系
61-
#-verbose
62-
63-
#
64-
# ----------------------------- 默认保留 -----------------------------
65-
#
66-
#----------------------------------------------------
67-
# 保持哪些类不被混淆
68-
#继承activity,application,service,broadcastReceiver,contentprovider....不进行混淆
69-
#-keep public class * extends android.app.Activity
70-
#-keep public class * extends android.app.Application
71-
#-keep public class * extends android.support.multidex.MultiDexApplication
72-
#-keep public class * extends android.app.Service
73-
#-keep public class * extends android.content.BroadcastReceiver
74-
#-keep public class * extends android.content.ContentProvider
75-
#-keep public class * extends android.app.backup.BackupAgentHelper
76-
#-keep public class * extends android.preference.Preference
77-
#-keep public class * extends android.view.View
78-
#
79-
#-keep public class com.google.vending.licensing.ILicensingService
80-
#-keep public class com.android.vending.licensing.ILicensingService
81-
#表示不混淆上面声明的类,最后这两个类我们基本也用不上,是接入Google原生的一些服务时使用的。
82-
#----------------------------------------------------
20+
-keep class com.aries.library.fast.demo.entity.**{*;}
8321

8422
#
85-
##表示不混淆任何包含native方法的类的类名以及native方法名,这个和我们刚才验证的结果是一致
86-
#-keepclasseswithmembernames class * {
87-
# native <methods>;
88-
#}
89-
#
90-
#
91-
##这个主要是在layout 中写的onclick方法android:onclick="onClick",不进行混淆
92-
##表示不混淆Activity中参数是View的方法,因为有这样一种用法,在XML中配置android:onClick=”buttonClick”属性,
93-
##当用户点击该按钮时就会调用Activity中的buttonClick(View view)方法,如果这个方法被混淆的话就找不到了
94-
#-keepclassmembers class * extends android.app.Activity{
95-
# public void *(android.view.View);
96-
#}
97-
#
98-
##表示不混淆枚举中的values()和valueOf()方法,枚举我用的非常少,这个就不评论了
99-
#-keepclassmembers enum * {
100-
# public static **[] values();
101-
# public static ** valueOf(java.lang.String);
102-
#}
103-
#
104-
##表示不混淆任何一个View中的setXxx()和getXxx()方法,
105-
##因为属性动画需要有相应的setter和getter的方法实现,混淆了就无法工作了。
106-
#-keep public class * extends android.view.View{
107-
# *** get*();
108-
# void set*(***);
109-
# public <init>(android.content.Context);
110-
# public <init>(android.content.Context, android.util.AttributeSet);
111-
# public <init>(android.content.Context, android.util.AttributeSet, int);
112-
#}
113-
#-keepclasseswithmembers class * {
114-
# public <init>(android.content.Context, android.util.AttributeSet);
115-
# public <init>(android.content.Context, android.util.AttributeSet, int);
116-
#}
117-
#
118-
##表示不混淆Parcelable实现类中的CREATOR字段,
119-
##毫无疑问,CREATOR字段是绝对不能改变的,包括大小写都不能变,不然整个Parcelable工作机制都会失败。
120-
#-keep class * implements android.os.Parcelable {
121-
# public static final android.os.Parcelable$Creator *;
122-
#}
123-
## 这指定了继承Serizalizable的类的如下成员不被移除混淆
124-
#-keepclassmembers class * implements java.io.Serializable {
125-
# static final long serialVersionUID;
126-
# private static final java.io.ObjectStreamField[] serialPersistentFields;
127-
# private void writeObject(java.io.ObjectOutputStream);
128-
# private void readObject(java.io.ObjectInputStream);
129-
# java.lang.Object writeReplace();
130-
# java.lang.Object readResolve();
131-
#}
132-
## 保留R下面的资源
133-
##-keep class **.R$* {
134-
## *;
135-
##}
136-
##不混淆资源类下static的
137-
#-keepclassmembers class **.R$* {
138-
# public static <fields>;
139-
#}
140-
#
141-
## 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
142-
#-keepclassmembers class * {
143-
# void *(**On*Event);
144-
# void *(**On*Listener);
145-
#}
146-
#
147-
## 保留我们自定义控件(继承自View)不被混淆
148-
#-keep public class * extends android.view.View{
149-
# *** get*();
150-
# void set*(***);
151-
# public <init>(android.content.Context);
152-
# public <init>(android.content.Context, android.util.AttributeSet);
153-
# public <init>(android.content.Context, android.util.AttributeSet, int);
154-
#}
155-
#
156-
##
157-
##----------------------------- WebView(项目中没有可以忽略) -----------------------------
158-
##
159-
##webView需要进行特殊处理
160-
#-keepclassmembers class fqcn.of.javascript.interface.for.Webview {
161-
# public *;
162-
#}
163-
#-keepclassmembers class * extends android.webkit.WebViewClient {
164-
# public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
165-
# public boolean *(android.webkit.WebView, java.lang.String);
166-
#}
167-
#-keepclassmembers class * extends android.webkit.WebViewClient {
168-
# public void *(android.webkit.WebView, jav.lang.String);
169-
#}
23+
#-------------------------------------------基本不用动区域----------------------------------------------
17024
#
171-
##
172-
## ----------------------------- 其他的 -----------------------------
173-
##
174-
## 删除代码中Log相关的代码
175-
#-assumenosideeffects class android.util.Log {
176-
# public static boolean isLoggable(java.lang.String, int);
177-
# public static int v(...);
178-
# public static int i(...);
179-
# public static int w(...);
180-
# public static int d(...);
181-
# public static int e(...);
182-
#}
183-
#
184-
## 保持测试相关的代码
185-
#-dontnote junit.framework.**
186-
#-dontnote junit.runner.**
187-
#-dontwarn android.test.**
188-
#-dontwarn android.support.test.**
189-
#-dontwarn org.junit.**
19025
#
26+
# -----------------------------基本 -----------------------------
19127
#
192-
##
193-
## ----------------------------- 第三方 -----------------------------
194-
##
195-
#-dontwarn com.orhanobut.logger.**
196-
#-keep class com.orhanobut.logger.**{*;}
197-
#-keep interface com.orhanobut.logger.**{*;}
198-
#
199-
#-dontwarn com.google.gson.**
200-
#-keep class com.google.gson.**{*;}
201-
#-keep interface com.google.gson.**{*;}
202-
## 。。。。。。
28+
29+
# 指定代码的压缩级别 0 - 7(指定代码进行迭代优化的次数,在Android里面默认是5,这条指令也只有在可以优化时起作用。)
30+
-optimizationpasses 5
31+
# 混淆时不会产生形形色色的类名(混淆时不使用大小写混合类名)
32+
-dontusemixedcaseclassnames
33+
# 指定不去忽略非公共的库类(不跳过library中的非public的类)
34+
-dontskipnonpubliclibraryclasses
35+
# 指定不去忽略包可见的库类的成员
36+
-dontskipnonpubliclibraryclassmembers
37+
#不进行优化,建议使用此选项,
38+
-dontoptimize
39+
# 不进行预校验,Android不需要,可加快混淆速度。
40+
-dontpreverify
41+
# 屏蔽警告
42+
-ignorewarnings
43+
# 指定混淆是采用的算法,后面的参数是一个过滤器
44+
# 这个过滤器是谷歌推荐的算法,一般不做更改
45+
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
46+
# 保护代码中的Annotation不被混淆
47+
-keepattributes *Annotation*
48+
# 避免混淆泛型, 这在JSON实体映射时非常重要
49+
-keepattributes Signature
50+
# 抛出异常时保留代码行号
51+
-keepattributes SourceFile,LineNumberTable
52+
#优化时允许访问并修改有修饰符的类和类的成员,这可以提高优化步骤的结果。
53+
# 比如,当内联一个公共的getter方法时,这也可能需要外地公共访问。
54+
# 虽然java二进制规范不需要这个,要不然有的虚拟机处理这些代码会有问题。当有优化和使用-repackageclasses时才适用。
55+
#指示语:不能用这个指令处理库中的代码,因为有的类和类成员没有设计成public ,而在api中可能变成public
56+
-allowaccessmodification
57+
#当有优化和使用-repackageclasses时才适用。
58+
-repackageclasses ''
59+
# 混淆时记录日志(打印混淆的详细信息)
60+
# 这句话能够使我们的项目混淆后产生映射文件
61+
# 包含有类名->混淆后类名的映射关系
62+
-verbose

app/src/main/java/com/aries/library/fast/demo/App.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ public void onCreate() {
6565
start = System.currentTimeMillis();
6666
LoggerManager.i(TAG, "start:" + start + ";Application:" + FastUtil.getApplication());
6767
mContext = this;
68-
//最简单UI配置模式-必须进行初始化
69-
FastManager.init(this);
68+
//最简单UI配置模式-必须进行初始化-最新版本无需初始化FastLib内部自动初始化
69+
// FastManager.init(this);
7070
//以下为更丰富自定义方法
7171
//全局UI配置参数-按需求设置
7272
AppImpl impl = new AppImpl(mContext);

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,6 @@ ext{
3131
minLibSdkVersion = 15
3232
targetSdkVersion = 28
3333
supportVersion = "1.0.0"
34-
versionCode = 242
35-
versionName = "2.2.13_beta11"
34+
versionCode = 243
35+
versionName = "2.2.13_beta12"
3636
}

library/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ dependencies {
5050
// compileOnly 'androidx.appcompat:appcompat:'.concat(supportVersion)
5151
compileOnly 'androidx.recyclerview:recyclerview:'.concat(supportVersion)
5252
//万能适配器
53-
compileOnly 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.45-androidx'
53+
compileOnly 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.49-androidx'
5454
//webView库
5555
compileOnly 'com.just.agentweb:agentweb:4.0.2'
5656
//下拉刷新库

0 commit comments

Comments
 (0)