Android 项目代码混淆
来源:互联网 发布:信息推广软件 编辑:程序博客网 时间:2024/06/13 09:08
实现Android项目代码混淆三步走战略:
一、修改工程下的project.properties文件如下:
# This file is automatically generated by Android Tools.# Do not modify this file -- YOUR CHANGES WILL BE ERASED!## This file must be checked in Version Control Systems.## To customize properties used by the Ant build system edit# "ant.properties", and override values to adapt the script to your# project structure.## To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt# Project target.target=android-10proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
其中最后一行为自行添加的 混淆脚本路径,具体脚本编写在 proguard-project.txt 脚本文件内进行。
二、修改脚本文件
为什么说事修改呢? 很简单因为Google已经替我们完成了大部分功能,只需按自己需要增加规则就OK,我得 proguard-project.txt 文件如下:
# This is a configuration file for ProGuard.# http://proguard.sourceforge.net/index.html#manual/usage.html-dontusemixedcaseclassnames-dontskipnonpubliclibraryclasses-verbose# ignorewarnings -ignorewarnings# Optimization is turned off by default. Dex does not like code run# through the ProGuard optimize and preverify steps (and performs some# of these optimizations on its own).-dontoptimize-dontpreverify# Note that if you want to enable optimization, you cannot just# include optimization flags in your own project configuration file;# instead you will need to point to the# "proguard-android-optimize.txt" file instead of this one from your# project.properties file.-keepattributes *Annotation*-keep public class com.google.vending.licensing.ILicensingService-keep public class com.android.vending.licensing.ILicensingService# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native-keepclasseswithmembernames class * { native <methods>;}# keep setters in Views so that animations can still work.# see http://proguard.sourceforge.net/manual/examples.html#beans-keepclassmembers public class * extends android.view.View { void set*(***); *** get*();}# We want to keep methods in Activity that could be used in the XML attribute onClick-keepclassmembers class * extends android.app.Activity { public void *(android.view.View);}# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations-keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String);}-keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *;}-keepclassmembers class **.R$* { public static <fields>;}# The support library contains references to newer platform versions.# Don't warn about those in case this app is linking against an older# platform version. We know about them, and they are safe.-dontwarn android.support.**# -keep class android.support.v4.**{*;}-keep class org.phprpc.**{*;}-keep class com.google.gson.**{*;}-keep class com.baidu.**{*;}-keep class com.novell.sasl.client.**{*;}-keep class org.**{*;}-keep class com.hp.hpl.**{*;}-keep class net.sourceforge.**{*;}-keep class pinyindb.**{*;}-keep class demo.**{*;}
其中因为引用第三方jar包,所以自己写了忽略混淆第三方jar包规则,如文件最后的 -keep class * , 最后在增加 -ignorewarnings 忽略警告。
三、打包签名并反编译验证
打包后工程中会出现 proguard 文件夹,内部文件自动生成 如下:
dump.txtmapping.txtseeds.txtusage.txt
反编译验证,至于反编译具体过程请自行Baidu 、Google 编译结果如下截图:
操作期间遇到个问题:如果把脚本中这行 # -keep class android.support.v4.**{*;} 的注释去掉,反编译后无法看到类的内容,类名倒还是如上图,不知道这情况是否正常?
- Android项目代码混淆
- Android项目代码混淆
- Android 项目代码混淆
- Android项目代码混淆
- Android 项目代码混淆
- Android项目代码混淆
- Android 项目的代码混淆
- Android 项目的代码混淆
- android 项目代码混淆方法
- Android项目的代码混淆
- Android项目代码混淆(加密),添加混淆配置文件
- 如何混淆Android项目代码(ProGuard)
- 如何混淆Android项目代码(ProGuard)
- 如何混淆Android项目代码(ProGuard)
- Android 项目的代码混淆的使用说明
- Android 项目如何添加代码混淆
- Android studio 项目代码混淆要领
- Android 代码混淆,混淆打包
- java生态系统:二、java文档注释
- 施耐德电气面试(一)
- HDOJ 1078 FatMouse and Cheese
- Android Bluetooth Stack: Bluedroid(二):AVRCP演进
- Linux 解压缩命令大全
- Android 项目代码混淆
- [Android UI界面] 如何在activity中动态的设置TextView上字体的颜色
- 运维小记
- 软件测试类工具大全2009版
- Quantum的权限认证(3)
- No.4 在二元树中找出和为某一值的所有路径
- Highcharts纯Javascript图表使用讲解
- WCF web log can be logged via setting its web.config
- 十四种前端框架