Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
mmm-rain
AndroidUtilCode
提交
0dc2c95e
A
AndroidUtilCode
项目概览
mmm-rain
/
AndroidUtilCode
与 Fork 源项目一致
从无法访问的项目Fork
通知
4
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
AndroidUtilCode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
0dc2c95e
编写于
8月 30, 2018
作者:
B
Blankj
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
see 08/30 log
上级
dd1e760d
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
14 addition
and
202 deletion
+14
-202
app/proguard-rules.pro
app/proguard-rules.pro
+1
-172
config.gradle
config.gradle
+12
-9
subutil/proguard-rules.pro
subutil/proguard-rules.pro
+1
-21
未找到文件。
app/proguard-rules.pro
浏览文件 @
0dc2c95e
...
@@ -14,175 +14,4 @@
...
@@ -14,175 +14,4 @@
#
class
:
#
class
:
#-
keepclassmembers
class
fqcn
.
of
.
javascript
.
interface
.
for
.
webview
{
#-
keepclassmembers
class
fqcn
.
of
.
javascript
.
interface
.
for
.
webview
{
#
public
*
;
#
public
*
;
#
}
#
}
\ No newline at end of file
#############################################
#
#
对于一些基本指令的添加
#
#############################################
#
代码混淆压缩比,在
0
~
7
之间,默认为
5
,一般不做修改
-
optimizationpasses
5
#
混合时不使用大小写混合,混合后的类名为小写
-
dontusemixedcaseclassnames
#
指定不去忽略非公共库的类
-
dontskipnonpubliclibraryclasses
#
这句话能够使我们的项目混淆后产生映射文件
#
包含有类名
->
混淆后类名的映射关系
-
verbose
#
指定不去忽略非公共库的类成员
-
dontskipnonpubliclibraryclassmembers
#
不做预校验,
preverify是proguard的四个步骤之一
,
Android
不需要
preverify
,去掉这一步能够加快混淆速度。
-
dontpreverify
#
保留
Annotation
不混淆
-
keepattributes
*
Annotation
*,
InnerClasses
#
避免混淆泛型
-
keepattributes
Signature
#
抛出异常时保留代码行号
-
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 com.android.vending.licensing.ILicensingService
# 保留support下的所有类及其内部类
-keep class android.support.
*
* {*;}
# 保留继承的
-keep public class * extends android.support.v4.
*
*
-keep public class * extends android.support.v7.
*
*
-keep public class * extends android.support.annotation.
*
*
# 保留R下面的资源
-keep class
*
*.R$* {*;}
# 保留本地native方法不被混淆
-keepclasseswithmembernames class * {
native <methods>;
}
# 保留在Activity中的方法参数是view的方法,
# 这样以来我们在layout中写的onClick就不会被影响
-keepclassmembers class * extends android.app.Activity{
public void *(android.view.View);
}
# 保留枚举类不被混淆
-keepclassmembers enum * {
public static
*
*[] values();
public static
*
* valueOf(java.lang.String);
}
# 保留我们自定义控件(继承自View)不被混淆
-keep public class * extends android.view.View{
**
* get*();
void set*(
**
*);
public <init>(android.content.Context);
public <init>(android.content.Context, android.util.AttributeSet);
public <init>(android.content.Context, android.util.AttributeSet, int);
}
# 保留Parcelable序列化类不被混淆
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
# 保留Serializable序列化的类不被混淆
-keepnames class * implements java.io.Serializable
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
!static !transient <fields>;
!private <fields>;
!private <methods>;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
# 对于带有回调函数的onXXEvent、
*
*On*Listener的,不能被混淆
-keepclassmembers class * {
void *(
*
*On*Event);
void *(
*
*On*Listener);
}
# webView处理,项目中没有使用到webView忽略即可
-keepclassmembers class fqcn.of.javascript.interface.for.webview {
public *;
}
-keepclassmembers class * extends android.webkit.webViewClient {
public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
public boolean *(android.webkit.WebView, java.lang.String);
}
-keepclassmembers class * extends android.webkit.webViewClient {
public void *(android.webkit.webView, jav.lang.String);
}
# 移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用,这里可以作为禁止log打印的功能使用
# 记得proguard-android.txt中一定不要加-dontoptimize才起作用
# 另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制
#-assumenosideeffects class android.util.Log {
# public static int v(...);
# public static int i(...);
# public static int w(...);
# public static int d(...);
# public static int e(...);
#}
#############################################
#
# 项目中特殊处理部分
#
#############################################
#-----------处理反射类---------------
#-----------处理js交互---------------
#-----------处理实体类---------------
# 在开发的时候我们可以将所有的实体类放在一个包内,这样我们写一次混淆就行了。
#-keep class com.blankj.data.bean.
*
*{ *; }
# 或者对实体类都加 @Keep 即可
# @Keep
-keep,allowobfuscation @interface android.support.annotation.Keep
-keep @android.support.annotation.Keep class *
-keepclassmembers class * {
@android.support.annotation.Keep *;
}
#-----------处理第三方依赖库---------
\ No newline at end of file
config.gradle
浏览文件 @
0dc2c95e
...
@@ -12,17 +12,18 @@ ext {
...
@@ -12,17 +12,18 @@ ext {
versionConfig
=
[
versionConfig
=
[
// plugin
// plugin
gradle
:
'3.1.3'
,
gradle
:
'3.1.3'
,
kotlin
:
'1.2.30'
,
kotlin
:
'1.2.30'
,
// lib
// lib
support
:
'27.1.0'
,
support
:
'27.1.0'
,
gson
:
'2.8.2'
,
gson
:
'2.8.2'
,
glide
:
'4.7.1'
,
glide
:
'4.7.1'
,
leakcanary
:
'1.5.4'
,
leakcanary
:
'1.5.4'
,
retrofit
:
'2.4.0'
,
retrofit
:
'2.4.0'
,
free_proguard:
'0.0.6'
,
// test
// test
junit
:
'4.12'
,
junit
:
'4.12'
,
robolectric:
'3.1.2'
robolectric
:
'3.1.2'
]
]
depConfig
=
[
depConfig
=
[
...
@@ -41,6 +42,7 @@ ext {
...
@@ -41,6 +42,7 @@ ext {
gson
:
"com.google.code.gson:gson:$versionConfig.gson"
,
gson
:
"com.google.code.gson:gson:$versionConfig.gson"
,
glide
:
"com.github.bumptech.glide:glide:$versionConfig.glide"
,
glide
:
"com.github.bumptech.glide:glide:$versionConfig.glide"
,
retrofit
:
"com.squareup.retrofit2:retrofit:$versionConfig.retrofit"
,
retrofit
:
"com.squareup.retrofit2:retrofit:$versionConfig.retrofit"
,
free_proguard
:
"com.blankj:free-proguard:$versionConfig.free_proguard"
,
junit
:
"junit:junit:$versionConfig.junit"
,
junit
:
"junit:junit:$versionConfig.junit"
,
robolectric
:
"org.robolectric:robolectric:$versionConfig.robolectric"
,
robolectric
:
"org.robolectric:robolectric:$versionConfig.robolectric"
,
...
@@ -165,6 +167,7 @@ def configAppDependencies(Project pro) {
...
@@ -165,6 +167,7 @@ def configAppDependencies(Project pro) {
implementation
depConfig
.
support
.
appcompat_v7
implementation
depConfig
.
support
.
appcompat_v7
implementation
depConfig
.
support
.
design
implementation
depConfig
.
support
.
design
implementation
depConfig
.
free_proguard
implementation
'com.r0adkll:slidableactivity:2.0.5'
implementation
'com.r0adkll:slidableactivity:2.0.5'
// LeakCanary
// LeakCanary
debugImplementation
depConfig
.
leakcanary
.
android
debugImplementation
depConfig
.
leakcanary
.
android
...
...
subutil/proguard-rules.pro
浏览文件 @
0dc2c95e
...
@@ -26,24 +26,4 @@
...
@@ -26,24 +26,4 @@
#-
keep
class
com
.
blankj
.
subutil
.
**
{
*
;
}
#-
keep
class
com
.
blankj
.
subutil
.
**
{
*
;
}
#-
keepclassmembers
class
com
.
blankj
.
subutil
.
**
{
*
;
}
#-
keepclassmembers
class
com
.
blankj
.
subutil
.
**
{
*
;
}
#-
dontwarn
com
.
blankj
.
subutil
.
**
-
dontwarn
com
.
blankj
.
subutil
.
**
\ No newline at end of file
#
OkHttp
-
dontwarn
okio
.
**
-
dontwarn
okhttp3
.
**
-
dontwarn
javax
.
annotation
.
Nullable
-
dontwarn
javax
.
annotation
.
ParametersAreNonnullByDefault
#
Okio
-
dontwarn
com
.
squareup
.
**
-
dontwarn
okio
.
**
-
keep
public
class
org
.
codehaus
.
*
{
*
;
}
-
keep
public
class
java
.
nio
.
*
{
*
;
}
#
Retrofit
-
keep
class
retrofit2
.
**
{
*
;
}
-
dontwarn
retrofit2
.
**
-
keepattributes
Signature
-
keepattributes
Exceptions
-
dontwarn
okio
.
**
-
dontwarn
javax
.
annotation
.
**
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录