混淆
Android Studio:
只需在build.gradle(Module:app)中的buildTypes中增加release的编译选项即可,如下:
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
这个proguard-android.txt是sdk中groguard默认的文件,具体地址在:/opt/sdk/tools/proguard/proguard-android.txt
而proguard-rules.pro是AS中专用的proguard配置文件,其实只是后缀名不同,与Eclipse中的proguard-project.txt是一样的,配置规则相同,后面会详细提到。
老版本开启混淆的命令是runProguard,现在统一用minifyEnabled命令了,将其设为true就好了。
编译的时候可以使用命令:
./gradlew assembleRelease
或者用上一篇生成签名apk的办法都可。
Eclipse:
在project.properties文件中开启proguard配置(放开注释),如下:
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
同样,生成签名时代码就会被混淆。
混淆语法
请参考${sdk.dir}/tools/proguard/proguard-android.txt文件,需要注意的是文件中虽然有了不混淆Parcelable的语句,如下:
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
但是还是要自己把继承自Parcelable的类写进来避免混淆,否则会出现BadParcelableException异常。
-keep class com.linc.datatype.XXInfo {*
为微信分享而引入的jar包,我们不需要对其进行混淆,也需要在proguard-android.txt中注明,如下:
-keep class com.tencent.** { *
-keep class com.tencent.mm.sdk.openapi.WXMediaMessage {*
-keep class com.tencent.mm.sdk.openapi.** implements com.tencent.mm.sdk.openapi.WXMediaMessage$IMediaObject {*
为了验证是否混淆成功,可以使用下面的反编译工具验证。
反编译
主要用到三个工具:
dex2jar:将dex文件转为jar文件
jd-gui:反编译jar文件
AXMLPrinter2.jar:反编译xml文件
使用方法参见《反编译apk文件,得到其源代码的方法》
对于Ubuntu64位,运行jd-gui或许会报错:
尝试解决如下:
$ sudo apt-get install libgtk2.0-0:i386 libnss3:i386 libcurl3-gnutls:i386 libidn11:i386 libpango1.0-0:i386 libpangox-1.0-0:i386 libpangoxft-1.0-0:i386 librtmp0:i386 libxft2:i386
又报错:
$ /opt/sdk/tools/jd-gui: error while loading shared libraries: libXxf86vm.so.1: cannot open shared object file: No such file or directory
解决办法如下:
$ sudo apt-get install libgtk2.0-0:i386 libxxf86vm1:i386 libsm6:i386 lib32stdc++6
参考:
http://blog.csdn.net/lincyang/article/details/6333974
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
分享到:
相关推荐
Android如何防止apk程序被反编译 亲自测试 完美混淆
代码混淆—关于android被反编译的两种解决方案,使用方法参见我的博文:http://blog.csdn.net/online1989/article/details/7058743
java混淆和反编译 jocky支持最新jdk
在 android studio 使用自定义混淆字典进行混淆,增加app被反编译后阅读的难度, 内容为16位由0,o,O,3个字符生产的如OoO0oOoOoO0O0oO0这样的不重复字符串,使用方式:将下载的dictoO0.txt放在proguard-rules.pro同级...
两大最受欢迎的C#工具 一个是反编译的工具.NET Reflector 8.0.2.313 官方最新破解版 一个是dll混淆工具Xenocode Postbuild 2010 for .NET 另附破解教程以及使用教程 亲测绝对可用
c# .net exe应用程序代码混淆 反反编译必用工具
jock java 混淆反编译
Android 反编译和代码混淆里面工具和文档都很全,欢迎大家下载!
包括android工程源码混淆方法、apk签名方法和apk反编译方法
android源码混淆避免反编译定义.pdf
如何混淆Android项目代码(ProGuard)防止反编译.rar
可以先使用 proguard来混淆加密,然后再使用 jd-gui看看加密是否成功,正常情况下被混淆加密之后的jar包,无法再被反编译出来看到。 ===> 注意不要有中文名称文件夹。
Android studio多module混淆成一个Jar
android源码混淆避免反编译[参照].pdf
用此工具反混淆后 然后用reflector软件反编译下就能还原任何经过混淆后的代码 百度下reflector网上有下载
绝对可用,个人收藏整理的,和大家分享一下,使用很方便,主要有java代码的混淆编译,java编译后class文件的反编译,javascript代码的压缩、混淆,js是在线版的,很好用,可以自己定义混淆级别,混淆后仍可以使用,...
ProGuard混淆与dex2jar反编译工具
通过混淆android代码来防止黑客反编译,防止黑客破解app的方法 你辛辛苦苦编写的app,被黑客轻易就破解,替换资源了,重新打包发布市场,抢占了你的利润,你是不是会很心疼?现在我教你,如何让你的APP更安全,黑客别说修改其...
MaxCode C#加密混淆 防止反编译
Android混淆打包不混淆第三方jar包Android 混淆打包不混淆第三方jar包