android混淆-关于依赖第三方库

之前写过关于打包混淆的一个帖子《android项目混淆打包注意事项》,它介绍的是对第三方jar包进行混淆,基本上可以解决混淆问题了。还不知道的,可以去看看,地址在这:http://my.eoe.cn/smile_it/archive/3820.html

现在的应用或多或少的都引用开源的项目作为外部library,如果对大部分开源项目还不是很了解的话,大家可以去我这篇博客去看看,它介绍了很多实用的开源项目和框架--《开源Club》:http://my.eoe.cn/smile_it/archive/17918.html

因此,这一篇文章主要是介绍在应用程序里引用了外部第三方库作为liarary时的混淆方式,也是由于最近一个项目引用了5个开源的library库,在上线之前专门实践了怎么对其进行混淆。

好了,废话不说,步入正题:

1、在project.properties文件中,你需要做的就是指定混淆规则,还有指明默认的第三方库的路径。

1
2
3
proguard.config=proguard.cfg target=android-14 android.library.reference.1=..\引入的外部library的工程名

2、如果你对你引入的第三方库不是很了解或者官方未对其混淆给出具体的实例的话,建议还是直接屏蔽,即不对其进行混淆就行。
在proguard.cfg文件内 主要做的是就是

1
2
3
4
5
> -libraryjars ..\第三方库的工程名--------引入的第三方库 > -dontwarn 包名.** --------告诉ProGuard不要警告找不到包名.**这个包里面的类的相关引用 > -keep class 包名.** { *;}      --------对这个包里面的所有类和所有方法不进行混淆

例子:

由于我的项目中还有其他的jar包,故我贴出我的

1、project.properties

图片说明文字

2、proguard.cfg:

1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
-optimizationpasses 5 -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontskipnonpubliclibraryclassmembers -dontpreverify -verbose -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* -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 com.android.vending.licensing.ILicensingService #umeng_socalize shared start -keepclasseswithmembernames class * { native <methods>; } -keepclasseswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet); } -keepclasseswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclassmembers class * extends android.app.Activity { public void *(android.view.View); } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } -dontwarn com.umeng.** -dontwarn org.apache.commons.** -dontwarn com.tencent.weibo.sdk.** -keepattributes *Annotation* -keep class com.umeng*.** {*; } -keep public class [your_pkg].R$*{ public static final int *; } -keep class com.tencent.open.TDialog$* -keep class com.tencent.open.TDialog$* {*;} -keep class com.tencent.open.PKDialog -keep class com.tencent.open.PKDialog {*;} -keep class com.tencent.open.PKDialog$* -keep class com.tencent.open.PKDialog$* {*;} -keep class com.tencent.mm.sdk.openapi.WXMediaMessage {*;} -keep class com.tencent.mm.sdk.openapi.** implements com.tencent.mm.sdk.openapi.WXMediaMessage$IMediaObject {*;} #umeng_socalize shared end -libraryjars ..\第三方库的工程名 -dontwarn 包名.** -keep class 包名.** { *;}

注:若还有其他的类库,可在这按照上面的格式继续添加,默认都是对其不混淆。

如果有什么不明白的,可以给我留言哦!

声明:eoe文章著作权属于作者,受法律保护,转载时请务必以超链接形式附带如下信息

原文作者: 469874851

原文地址: http://my.eoe.cn/smile_it/archive/20093.html

转载于:https://my.oschina.net/bankofchina/blog/184130

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值