您的位置:首页 > 移动开发

关于Android Studio打包混淆以及上传mapping文件

2016-03-14 13:42 561 查看


打包

Android studio的打包很简单 


 

然后如果已经有keystore的一路next下去,如果没有的可能需要先创建keystore,最后我们就会得到一个apk文件


混淆

现在网上关于反编译的博客很多了,我在此就不多做介绍了,放上个传送门传送门

那么我们已经知道了反编译是如此的简单,我们总不希望自己辛苦写的代码被如此轻易的反编译走,而且这样有可能对公司的服务器留下被攻击的隐患,那么我们就可以使用混淆来保护我们所写的代码 

Android studio混淆和Eclipse差不多是大同小异的。 



名称作用
minifyEnabled是否开启混淆
shrinkResources去除无用的resource文件
proguardFiles getDefaultProguardFile加载混淆配置文件


如果按照默认的混淆规则很有可能你的程序会报错,因为混淆了一些方法所以程序运行期间无法找到该方法。所以我们应该自定义一些规则在proguard-rules.pro中


以下模板信息来源于网上

指定代码的压缩级别 

-optimizationpasses 5 

包明不混合大小写 

-dontusemixedcaseclassnames 

不去忽略非公共的库类 

-dontskipnonpubliclibraryclasses 

优化 不优化输入的类文件 

-dontoptimize 

预校验 

-dontpreverify 

混淆时是否记录日志 

-verbose 

混淆时所采用的算法 

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

保护注解 

-keepattributes Annotation 

保持哪些类不被混淆 

-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 

如果有引用v4包可以添加下面这行 

-keep public class * extends android.support.v4.app.Fragment 

忽略警告 

-ignorewarning 

记录生成的日志数据,gradle build时在本项目根目录输出 

apk 包内所有 class 的内部结构 

-dump class_files.txt 

未混淆的类和成员 

-printseeds seeds.txt 

列出从 apk 中删除的代码 

-printusage unused.txt 

混淆前后的映射 

-printmapping mapping.txt


mapping文件

mapping.txt 

列出了原始的类,方法和字段名与混淆后代码间的映射。这个文件很重要,当你从release版本中收到一个bug报告时,可以用它来翻译被混淆的代码。

mapping目录在 
\app\build\outputs\mapping\release


测试




 

OK,Bye
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: