详细讲解Android对自己的应用代码进行混淆加密防止反编译_于任道_新浪博客,于任道,1.查看项目中有没有proguard.cfg。
2.如果没有那就看看这个文件中写的什么吧,看完后将他复制到你的项目中。
–optimizationpasses 5
–dontusemixedcaseclassnames
–dontskipnonpubliclibraryclasses
–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
–keepclasseswithmembernames class * {
native ;
}
–keepclasseswithmembers class * {
public (android.content.Context, android.util.AttributeSet);
}
–keepclasseswithmembers class * {
public (android.content.Context, android.util.AttributeSet, int);
}
–keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
3.复制到项目中后打开project.properties文件
4.打开后在项目中加上一句话:proguard.config=proguard.cfg
5.这样就开始按照正常的签名对自己的应用进行签名,生成后的apk经过反编译后就会和源代码有很大的不一样,不过这一步你会遇到很多问题,根本就签名不成功。例如:①如果工程引入了android-support-v4的jar类库,那么在工程打包混淆时,就会出现报错提示你:You may need to specify additional library jars (using ‘-libraryjars’)。②引用第三方包等问题
6.那就详细讲解5中出现的问题
如果工程引入了android-support-v4的jar类库,那你就在proguard.cfg里的后面,添加如下内容:
-libraryjars /android-support-v4.jar
-dontwarn android.support.v4.**
-keep class android.support.v4.** { *; }
-keep public class * extends android.support.v4.**
-keep public class * extends android.app.Fragment
然后你再打包看看,应该可以正常生成apk安装包了。
如果出现:”类1 can’t find referenced class 类2″ 字面上的意思就是类1找不到类2的引用;它会建议你:”You may need to specify additional library jars (using ‘-libraryjars’).”;
需要使用-libraryjars加上项目中使用到的第三方库就OK了。
例如:-libraryjars /android-support-v4.jar
注意:这里引用方式是当前工程的根目录(也可以配置其他目录),也就是说,你要把第三方jar放到当前目录下,否则就会警告说找不到jar文件!
如果出现: can’t find superclass or interface android.os.Parcelable$ClassLoaderCreator,碰到这样的情况,可以使用-dontwarn com.xx.yy.**,不对错误提出警告。
注意:使用这个方式的话,要确保自己没有用到这个库里面的类!否则就会抛ClassNotFoundException!
如果在工程中确实用到了该类,采用上面方式还是不行。这个时候就要再增加一项:-keep class com.xx.yy.** { *;},让当前类不混淆。
总结:
对于引用第三方包的情况,可以采用下面方式避免打包出错:
-libraryjars /aaa.jar
-dontwarn com.xx.yy.**
-keep class com.xx.yy.** { *;}
最后打包成功,祝君成功混淆加密!
7.附上完整的proguard.cfg
–optimizationpasses 5
–dontusemixedcaseclassnames
–dontskipnonpubliclibraryclasses
–dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
–dontwarn com.slidingmenu.**
-keep class com.slidingmenu.** { *;}
–libraryjars /libs/android-support-v4.jar
–dontwarn android.support.v4.**
-keep class android.support.v4.** { *; }
-keep public class * extends android.support.v4.**
-keep public class * extends android.app.Fragment
-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
–keepclasseswithmembernames class * {
native ;
}
–keepclasseswithmembers class * {
public (android.content.Context, android.util.AttributeSet);
}
–keepclasseswithmembers class * {
public (android.content.Context, android.util.AttributeSet, int);
}
–keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
详细讲解Android对自己的应用代码进行混淆加密防止反编译
相关推荐
- uniapp底部弹出层(uni-popup)使用技巧_uniapp从底部弹出一个盒子-CSDN博客
- uniapp开发H5兼容APP,踩坑吐血整理_h5与app进行桥接遇到的wenti-CSDN博客
- uni-app父子组件间的方法调用及传值_uniapp调用组件内部的方法-CSDN博客
- uview2.0 u-number-box 无法输入小数,以及弹起键盘没有小数点 的问题 !! 非常简单的解决!!-CSDN博客
- uniapp uview u-number-box防抖(商城添加商品有起购)-CSDN博客
- UNIAPP实战项目笔记38 购物车的添加商品到购物车功能_uniapp加入购物车数量-CSDN博客
- uniapp 实现保持登录状态_uniapp保持登录状态-CSDN博客
- 一套.NetCore+Vue+Uniapp前后端分离的低代码快速开发框架_c# 网站后端 低代码框架-CSDN博客