android eclipse 项目打成jar包及jar混淆

项目前段时间要抽取核心功能做成sdk版本,有jar包和apk。牵扯到将项目打包成jar和jar混淆2部分

在eclipse中右键你的项目,export


android eclipse 项目打成jar包及jar混淆_第1张图片
android eclipse 项目打成jar包及jar混淆_第2张图片

选择jar file


android eclipse 项目打成jar包及jar混淆_第3张图片

这个页面之后点击pos_sdk左边的大于号,只勾选src的对号,其他的全部去掉。右边方框里的对号也全部去掉。还要选择生成jar包的路径,之后点击next。

建议点项目前面的黑色框,,这样就会取消所有已勾选的选项,,只需要将src部分的代码进行打包就可以了

android eclipse 项目打成jar包及jar混淆_第4张图片

这个里面的关于errors的对勾去掉,下面的的关于warnings打上对勾。选择好路径之后next,再点击finish。

此时在刚选的路径处就可以看到对应的jar包了。然后开始混淆(我是用的jd-gui查看的jar包)。

混淆做起来很简单只需要2步,第一编写好pos_sdk.pro文件

-injars D:/dspread_android_sdk.jar

-outjars D:/dspread_android_sdk2.5.5.jar

-libraryjars C:/Program Files/Java/jdk1.7.0_80/jre/lib/rt.jar

-libraryjars D:/adtbundlewindows64/sdk/platforms/android-19/android.jar

第一行是准备混淆的jar的路径;第二行是输出的路径;第三行是jdk的路径,只需要找到jdk的路劲然后找到rt.jar文件就可以了;第四行是sdk的路径,和第三部一样找到android.jar的路径粘贴路径就好。

之后在.pro的文件夹下运行命令行,直接粘进去就行

D:\>java -jar D:/adtbundlewindows64/sdk/tools/proguard/lib/proguard.jar @pos_sdk.pro

以下附上pos_sdk.pro文件,和项目混淆的内容相似

-injars E:/sdk/***.jar

-outjars D:/***.jar

-libraryjars C:/Program Files/Java/jdk1.7.0_51/jre/lib/rt.jar

-libraryjars D:/SDK/android_sdk/platforms/android-19/android.jar

-dontskipnonpubliclibraryclassmembers

-dontshrink

-dontoptimize

-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

-optimizationpasses 5

-useuniqueclassmembernames

-dontusemixedcaseclassnames

-keeppackagenames

-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,Synthetic,EnclosingMethod

-keepparameternames

-dontpreverify

-dontnote

-dontwarn

-keep public class * extends android.app.Activity  #所有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 #指定具体类不要去混淆

#-keep,allowshrinking class *

-keep class com.handmark.pulltorefresh.library.** {*;}

####-keepclasseswithmembers class * {     

      public(android.content.Context, android.util.AttributeSet);  #保持自定义控件类不被混淆,指定格式的构造方法不去混淆  } 

-keepclasseswithmembers class * {      public * ;} 

-keepclasseswithmembers class * {      public(android.content.Context, android.util.AttributeSet, int);  }  #保护指定类的成员,如果此类受到保护他们会保护的更好

-keepclassmembers class * extends android.app.Activity {  public void *(android.view.View);}

#保持自定义控件指定规则的方法不被混淆 

-keep public class * extends android.view.View {    public(android.content.Context);      public(android.content.Context, android.util.AttributeSet);      public(android.content.Context, android.util.AttributeSet, int);      public void set*(...);  } 

-keepclassmembers enum * {    public static **[] values();    public static ** valueOf(java.lang.String);}

#保持 Parcelable 不被混淆(aidl文件不能去混淆) 

-keep class * implements android.os.Parcelable {  public static final android.os.Parcelable$Creator *;} #需要序列化和反序列化的类不能被混淆(注:Java反射用到的类也不能被混淆)

-keepnames class * implements java.io.Serializable

-keepattributes *Annotation*  #过滤注解-keepattributes Signature  #过滤泛型-keep class **.R$* { *; }  #保持R文件不被混淆 #bean类所在包

-keepclassmembernames class com.example.object.** { *; }  #转换JSON的JavaBean,类成员名称保护,使其不被混淆 

-keepclassmembers class * {  public(org.json.JSONObject);}

你可能感兴趣的:(android eclipse 项目打成jar包及jar混淆)