文档章节

Android混淆打包-通过proguard配置实现

boonya
 boonya
发布于 2016/07/20 17:38
字数 485
阅读 39
收藏 1

1 . 在工程文件project.properties中加入下proguard.config=proguard.cfg , 如下所示:

target=android-8

proguard.config=proguard.cfg

Eclipse会通过此配置在工程目录生成proguard.cfg文件

 2 . 生成keystore (如已有可直接利用)

按照下面的命令行 在D:\Program Files\Java\jdk1.6.0_07\bin>目录下,输入:

keytool -genkey -alias android.keystore -keyalg RSA -validity 100000 -keystore android.keystore

参数意义:-validity主要是证书的有效期,写100000天;空格,退格键 都算密码。

命令执行后会在D:\Program Files\Java\jdk1.6.0_07\bin>目录下生成 android.keystore文件。

 3. 在Eclipce的导出apk操作

File -> Export -> Export Android Application -> Select project -> Using the existing keystore , and input password -> select the destination APK file 。

设置应用相关信息:

此处,Organization Unit不能有特殊字符“,”,最终生成加密的混淆代APK:

 经过混淆后的源代码,原先的类名和方法名会被类似a,b,c....的字符所替换,混淆的原理其实也就是类名和方法名的映射。

4. proguard.cfg 文件代码解读

-optimizationpasses 5  ->设置混淆的压缩比率 0 ~ 7 

-dontusemixedcaseclassnames -> Aa aA 

-dontskipnonpubliclibraryclasses ->如果应用程序引入的有jar包,并且想混淆jar包里面的class 

-dontpreverify 

-verbose ->混淆后生产映射文件 map 类名->转化后类名的映射

 -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*  ->混淆采用的算法.

 -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

 -keepclasseswithmembernames class * {

    native <methods>;   -> 所有native的方法不能去混淆. 

}

 -keepclasseswithmembers class * {

    public <init>(android.content.Context, android.util.AttributeSet);

    -->某些构造方法不能去混淆

}

 -keepclasseswithmembers class * {

    public <init>(android.content.Context, android.util.AttributeSet, int);

}

 -keepclassmembers class * extends android.app.Activity {

   public void *(android.view.View);

}

 -keepclassmembers enum * {   -> 枚举类不能去混淆. 

    public static **[] values();

    public static ** valueOf(java.lang.String);

}

 -keep class * implements android.os.Parcelable {   -> aidl文件不能去混淆. 

  public static final android.os.Parcelable$Creator *;

}

本文转载自:http://blog.sina.com.cn/s/blog_4e1e357d0101cjz8.html

共有 人打赏支持
boonya
粉丝 73
博文 214
码字总数 43922
作品 0
成都
高级程序员
私信 提问
如何混淆Android项目代码(ProGuard)防止反编译

ProGuard简介 ProGuard是一个SourceForge上非常知名的开源项目。官网网址是:http://proguard.sourceforge.net/。 Java的字节码一般是非常容易反编译的。为了很好的保护Java源代码,我们往往...

鉴客
2011/12/30
9.4K
3
IntelliJ IDEA android项目的混淆不生效

我在工程的project.properties文件中分别增加了 proguard.config=proguard-project.txt(规则拷贝到相同路径下的proguard-project.txt文件中) 和proguard.config=E:/transfer/Android/android......

wenyong160
2013/08/29
2.7K
2
使用proguard混淆android代码

当前是有些工具比如apktool,dextojar等是可以对我们android安装包进行反编译,获得源码的。为了减少被别人破解,导致源码泄露,程序被别人盗取代码,等等。我们需要对代码进行混淆,android...

码农明明
2014/05/31
0
4
Android 代码混淆及反编译方法

一、AndroidSDK自带proguard混淆 在Android SDK中自带有proguard代码混淆器,但在默认的情况下该混淆器是没有打开的。该混淆器在SDK中的路径是android-sdk-windows\tools\proguard 启动andro...

鉴客
2011/11/13
9.5K
3
Android Ant 批量多渠道打包实例

Android Ant 批量多渠道打包实例 关于批量打包,无需多言,这是每个国内Android开发者必须面对的一个问题。 下面,我就以开源项目「知乎小报」为例,详细说明如何使用ANT实现批量打渠道包。 ...

Cundong
2014/10/17
0
7

没有更多内容

加载失败,请刷新页面

加载更多

中国龙-扬科
19分钟前
0
0
使用apicloud开发移动端APP,IOS list页面滚动卡顿解决记录

给内容容器添加样式:-webkit-overflow-scrolling:touch; -webkit-overflow-scrolling:属性控制元素在移动设备上是否使用滚动回弹效果. auto:使用普通滚动, 当手指从触摸屏上移开,滚动会立即...

万建宁
21分钟前
0
0
Akka消息传送可靠性 23

原文:https://doc.akka.io/docs/akka/2.5/general/message-delivery-reliability.html Akka可帮助您构建可靠的应用程序,这些应用程序在一台计算机中使用多个处理器核心或分布在计算机网络中...

woshixin
43分钟前
2
0
composer安装

前言:随着开源的东西越来越多,一些好的代码我们是可以直接拿过来用的,github更是加快了这一节奏,在github上我们可以看到一些开源的项目、代码块、函数库、类结构等,我们可以直接Fork,然...

echojson
今天
4
0
mysql grant 用户权限总结

用户权限管理主要有以下作用: 1. 可以限制用户访问哪些库、哪些表 2. 可以限制用户对哪些表执行SELECT、CREATE、DELETE、DELETE、ALTER等操作 3. 可以限制用户登录的IP或域名 4. 可以限制用...

Airship
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部