文档章节

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

boonya
 boonya
发布于 2016/07/20 17:38
字数 485
阅读 19
收藏 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
成都
高级程序员
使用proguard混淆android代码

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

码农明明
2014/05/31
0
4
Android Ant 批量多渠道打包实例

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

Cundong
2014/10/17
0
7
Jean同学的Proguard私房物语

由于项目中自主研发的一个Android平台工具库需要提供给外部人员使用,我们决定使用android sdk自带的proguard tool混淆源码。在动用了google之后得到的大量资源文中,拨云见雾、去糟存精,融...

jeanwoo
2012/08/10
0
0
[Android]混淆代码后生成带签名的apk

Android从2.3的SDK开始,将ProGuard混淆代码的功能加入了进来。 我们可以从android sdk的tools目录下看到有一个proguard目录。说明具有了代码混淆的功能。 至于如何进行代码的混淆。我们需要...

亭子happy
2012/10/11
0
4
Android Apk包的签名出库、自动编译与混淆

1.签名与打正式包 右键工程,android tools export signed application 可以帮你生成签名(如果没有的话)以及打签名正式包 这时目录内会自动生成几个需要的文件,并且打一个不混淆的正式包 ...

hawkyoung
2013/11/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

咕泡-Factory设计模式笔记

简单工厂模式(Factory) 做静态工厂方法(StaticFactory Method)模式,但不属于23 种设计模式之一 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类 Spring...

职业搬砖20年
13分钟前
0
0
Java中的锁分类

在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下: 公平锁/非公平锁 可重入锁 独享锁/共享锁 互斥锁/读写锁 乐观锁/悲观锁 分段锁 偏...

Funcy1122
21分钟前
0
0
Ansible随机数

想为你的Ansible剧本取一个随机数?还想在接下来的运行中保持系统的等幂性?这里有一个答案。 假如,你要为一大批服务器设置cron任务,却不想让它们同时启动,你可以这样设置分钟数: minute...

大别阿郎
30分钟前
0
0
SpringCloud之服务注册中心Eureka

本系列介绍的配置均基于 Spring Boot 2.0.1.RELEASE 版本和 Spring Cloud Finchley.SR1 服务注册中心 Spring Cloud 已经帮我们实现了服务注册中心,我们只需要很简单的几个步骤就可以完成。 ...

熊小飞呀
57分钟前
7
1
“Comparison method violates ...”异常的再现方法

前提条件:JDK8 代码: import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;public class Test { public stat......

hunterli
59分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部