首页 > 代码库 > Android项目将生成的jar包混淆

Android项目将生成的jar包混淆

又是一个不眠夜奋斗

问题来了,我们写个android项目部分代码想生成jar包,并且将jar包做混淆,不被别人切!

首先讲要代码生成jar包,这个就不多说了。然后找到找到SDK里的proguardgui.jar(目录:sdk\tools\proguard\lib\)并打开。

然后会看到proguard的页面

第一次点击Next,然后看下面页面,点击Addinput...添加你要混淆的jar包,点击Add output...是选择混淆后的jar包保存目录。底下的Add...是你jar包所依赖的jar。(涂黑地方是项目不可外露)

然后直接点击Process,点1按钮是查看配置文件,点2是保存配置文件,保存成xxx.pro(例如test.pro)

然后打开你保存的test.pro开始添加你项目中不做混淆的类和方法

然后再次打开Proguard,添加test.pro

点击Process,然后可以查看一下配置信息是否是你修改完的,然后点击Process!


OK,混淆完成,混淆时可能会出错,请根据错误提示去查找解决办法,大部分原因是因为配置时书写格式错误!

-optimizationpasses 5 
-dontusemixedcaseclassnames  
-dontskipnonpubliclibraryclasses  
-dontpreverify  
-verbose  
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 
 
-keep public class * extends android.app.Activity                          // 继承activity,application,service,broadcastReceiver,contentprovider....不进行混淆
-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

混淆时请把中文删掉


-keep class com.lidroid.xutils.** { *; }              //整个类都不混淆
-dontwarn  com.lidroid.xutils.**

//不混淆的类和方法

-keepclasseswithmembers public final class com.mzc.demo.MyDemo {
 public MyDemo(android.content.Context, java.lang.String, android.widget.LinearLayout);
 public void openDoor();
}




Android项目将生成的jar包混淆