文档章节

Android中代码混淆

jdroid
 jdroid
发布于 2012/08/06 08:47
字数 368
阅读 2852
收藏 0
# android 原始混淆模板

-optimizationpasses 5  # 通过指定数量的优化能执行

#-dontusemixedcaseclassnames	混淆时不会产生形形色色的类名 
#-dontskipnonpubliclibraryclasses  指定不去忽略非公共的库类

#-dontskipnonpubliclibraryclasses

# -dontpreverify	不预校验

-verbose	#输出生成信息

#optimizations  {optimization_filter} 	优化选项
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

-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

-keepclasseswithmembernames class * {
    native <methods>;
}
# modify 修改合并
-keep public class * extends android.view.View {
    public <init>(android.content.Context);
    public <init>(android.content.Context, android.util.AttributeSet);
    public <init>(android.content.Context, android.util.AttributeSet, int);
    public void set*(...);
}

-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}

#--------------------------
# 保护类型   -keepattributes 说明
# Exceptions, Signature, Deprecated, SourceFile, SourceDir, LineNumberTable, LocalVariableTable, 
# LocalVariableTypeTable, Synthetic, EnclosingMethod, RuntimeVisibleAnnotations, RuntimeInvisibleAnnotations, 
# RuntimeVisibleParameterAnnotations, RuntimeInvisibleParameterAnnotations, and AnnotationDefault
# --------------------
-keepattributes **
-libraryjars <java.home>/lib/rt.jar

-dontshrink	#不压缩指定的文件

-dontoptimize	#不优化指定的文件

#  -dontobfuscate	#不混淆指定的文件

# ----- 混淆包路径 -------
-repackageclasses ''
-flattenpackagehierarchy ''
-target 1.6

# -------- 以下是使用了 roboguice-1.1.2.jar 以及 guice-2.0-no_app.jar 功能需要保护的字段及类相关 --------
-keep class com.google.inject.Binder
-keepclassmembers class * {
    @com.google.inject.Inject <init>(...);
}
-keepclassmembers class * {
    void *(**On*Event); 
}
-keepclassmembers class **.R$* {
    public static <fields>;
}

# ------ 编译时需要用到的 jar 包
-libraryjars D:/dev_rc/android-sdk-windows/add-ons/addon_google_apis_google_inc_11/libs/maps.jar

# ------ 保护第三方jar包----------
-keep class android.support.v4.**
-dontwarn android.support.v4.**

# ------ 保护百度地址jar包 --------
-keep class com.baidu.mapapi.** { *; }
-dontwarn com.baidu.mapapi.**

-dontwarn com.classpackage.AA	#打包时忽略以下类的警告

#-keepnames class * implements java.io.Serializable
-keepclassmembers class * implements java.io.Serializable {	保护所有实体中的字段名称
    <fields>;
}

-keepclassmembers class * {	#保护类中的所有方法名
	public <methods>;
}


本文转载自:http://huangyuan.iteye.com/blog/1472732

共有 人打赏支持
jdroid
粉丝 16
博文 84
码字总数 23247
作品 0
海淀
私信 提问
加载中

评论(2)

9
976014121
刚看了篇混淆的文章,可以去了解下
android发布打包常见问题及解决方法-android proguard
http://www.yee4.com/android-release-package-for-common-problems-and-solving-methods-of-android-proguard/
你来打我呀
你来打我呀
请问这个原理是什么?
android studio 项目结构解析

1、android系统架构 android的系统结构一共可以分为四个,分别为:Linux内核层、系统运行库层、应用框架层和应用层 1.1 Linux内核层 Android系统是基于Linux内核的,这一层为Android设备的底...

西米小娅
09/12
0
0
代码混淆proguard技术介绍

由于各种反编译工具的泛滥,作为Android程序员在2.3版本以前只能通过手动添加proguard来实现代码混淆 proguard这个工具是一个java代码混淆的工具 在2.3版本的sdk中 我们可以看到在android-s...

hebeijpp
2013/05/21
0
0
[Android]混淆代码后生成带签名的apk

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

亭子happy
2012/10/11
0
4
Proguard进行Android代码混淆

在实际的开发成产品apk的发布过程中,我们经常会使用到代码混淆技术。不过在讲解如何进行代码混淆之前,我先跟大家演示一下反编译的过程,这样才能让大家明白为什么需要进行代码混淆。 一、代...

丁佳辉
2015/11/09
0
0
Android的反编译和代码混淆

系列文章: Android的反编译和代码混淆 Android的打包签名 Android的多渠道打包 前言 包括以下内容 要反编译apk需要下面3个工具 反编译资源文件 反编译类文件 代码混淆 要反编译apk需要下面3...

跳动的松鼠
2017/11/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

0015-如何使用Sentry管理Hive外部表权限

1.文档编写目的 本文档主要讲述如何使用Sentry对Hive外部表权限管理,并基于以下假设: 1.操作系统版本:RedHat6.5 2.CM版本:CM 5.11.1 3.集群已启用Kerberos和Sentry 4.采用具有sudo权限的...

Hadoop实操
16分钟前
1
0
边缘计算与数据中心的发展趋势

导读 Gartner研究表明,人工智能、物联网和5G助力下一代商业创新,由此产生大量数据,2020年前企业将使用超过75亿台联网设备。 在几乎每个方面,社会的节奏都正变得更快。我们希望客户服务问...

问题终结者
28分钟前
4
0
toString();

package com.atguigu.java1; import java.util.Date; /** * toString()的使用: * * 1.java.lang.Object类中toString()定义如下: * public String toString() { return getClass().getName......

architect刘源源
56分钟前
1
3
不可不说的Java“锁”事

前言 Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8)、使用场景进行举例,为读者介绍主流锁的知识点...

Java干货分享
59分钟前
1
0
Java GoEasy 实现服务端推送和Web端推送

项目中需要消息推送,又想降低开发成本。Java服务器端推送,Web端接收推送信息。 具体需求: 需求一:系统框架实现全局异常捕获并录入日志表,实现实时推送消息到客户端页面展示。 需求二:系...

Gibbons
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部