Android程序增加代码混淆器
增加代码混淆器。主要是增加proguard-project.txt文件的规则进行混淆,之前新建Android程序是proguard.cfg文件
能够看一下我採用的通用规则(proguard-project.txt文件)
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-keepattributes *Annotation*
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable # 下面两个命令配合让类的路径给删除了
-allowaccessmodification
-repackageclasses ” # 记录生成的日志数据,在 proguard 文件夹下
-dump class_files.txt
-printseeds seeds.txt
-printusage unused.txt
-printmapping mapping.txt # 异常都能够忽略就打开
#-dontwarn
-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
-dontnote com.android.vending.licensing.ILicensingService
-keepnames class * implements java.io.Serializable # Explicitly preserve all serialization members. The Serializable interface
# is only a marker interface, so it wouldn’t save them.
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
private void writeObject (java.io.ObjectOutputStream);
private void readObject (java.io.ObjectInputStream);
java.lang.Object writeReplace ();
java.lang.Object readResolve ();
} # Preserve all native method names and the names of their classes.
#-keepclasseswithmembernames class * {
# native ;
#}
#-keepclasseswithmembernames class * {
# public (android.content.Context, android.util.AttributeSet);
#}
#-keepclasseswithmembernames class * {
# public (android.content.Context, android.util.AttributeSet, int);
#} # Preserve static fields of inner classes of R classes that might be accessed
# through introspection.
#-keepclassmembers class **.R$* {
# public static ;
#} # Preserve the special static methods that are required in all enumeration classes.
-keepclassmembers enum * {
public static **[] values ();
public static ** valueOf (java.lang.String);
} -keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
} # 假设你的project是对外提供方法调用就打开
#-keep public class * {
# public protected *;
#}
假设还有规则就加在后面
另外,我们一般须要混淆的是自己写的代码,引入的第三方库文件是不须要混淆的,否则会出现例如以下错误:
就是找不到所须要的类。
所以第三方库须要指出来不混淆,方法例如以下:
上面是android.support.v4.×找不到所需类,查看引入库的包名
在proguard-project.txt后面加上
-dontwarn android.support.v4.**
-keep class android.support.v4.** { *; }
第一句是忽略这个警告。第二句是保持类不混淆
把你全部引入的第三方库弄完后,在project.properties文件中加上一句
proguard.config=proguard-project.txt
就能够编译了(怎么编译?)
编译后。能够在bin里看到混淆代码的apk文件,是不是文件变小了,多爽!
同一时候。在bin/proguard目录里多了几个文件
当中,mapping.txt就是全部混淆的类及变量名的前后參照,usage.txt是你在代码中没用到的方法,都给你列出来了,是优化后的结果。
Android程序增加代码混淆器的更多相关文章
- 推荐一个C#代码混淆器 .NET Reactor【转】
		
C#的代码辛苦写出来之后,一个反射工具,就可以完全显露出来. 当然,在做项目时,这个功能还不错.因为我就曾在一个项目上使用C#,没有进行任何混淆.结果在项目二年多之后,需要做一些调整,自己保存的源代码 ...
 - Android 上的代码阅读器 CoderBrowserHD 修改支持 go 语言代码
		
我在Android上的代码阅读器用的是 https://github.com/zerob13/CoderBrowserHD 改造的版本,改造后的版本我放在 https://github.com/ghj ...
 - 转:Android 2.3 代码混淆proguard技术介绍
		
ProGuard简介 ProGuard是一个SourceForge上非常知名的开源项目.官网网址是:http://proguard.sourceforge.net/. Java的字节码一般是非常容易反 ...
 - android studio 实现代码混淆
		
=======本文章属于转载==========原文章地址:http://my.oschina.net/aibenben/blog/370985 这篇文章等是跟大家分享一在Android studio ...
 - 用Eclipse编写Android程序的代码提示功能
		
用Eclipse编写Android程序的代码提示功能主要是在java和xml文件中,有时候会失效,默认的提示功能有限. 1)java文件自动提示 Window->Preferences- ...
 - android对app代码混淆
		
接到新任务.现有项目的代码混淆.在此之前混淆了一些理解,但还不够具体和全面,我知道有些东西混起来相当棘手. 但幸运的是,现在这个项目是不是太复杂(对于这有些混乱).提前完成--这是总结. 第一部分 介 ...
 - Android 项目的代码混淆,Android proguard 使用说明
		
简单介绍 Java代码是非常easy反编译的. 为了非常好的保护Java源码,我们往往会对编译好的class文件进行混淆处理. ProGuard是一个混淆代码的开源项目.它的主要作用就是混淆,当然它还 ...
 - Android ProGuard:代码混淆压缩
		
写这篇文章的目的 一直以来,在项目中需要进行代码混淆时每次都要去翻文档,很麻烦.也没有像写代码那样记得那么多.既然要查来查去,就不如自己捋一捋这个知识点了,被人写的终究还是别人的.所以自己去翻看了很多 ...
 - 5个常用Java代码混淆器 助你保护你的代码
		
[IT168 技术文档] 从事Java编程的人都知道,可以通过逆向工程反编译得到Java程序的源代码,这种反编译工具之一就是JAD.因此,为保护我们的劳动成果,尽可能给反编译人员制造障碍,我们可以使用 ...
 
随机推荐
- Oracle PLSQL Demo - 12.定义包体[Define PACKAGE BODY]
			
CREATE OR REPLACE PACKAGE BODY temp_package_demo is FUNCTION f_demo(userid NUMBER) RETURN BOOLEAN IS ...
 - 检测SqlServer数据库是否能连接的小技巧
			
有时候可能需要检测下某台机器的服务是不是起来了,或者某台机器的某个库是不是能被连接又不能打开ssms也不想登陆服务器的话就可以用这个方法. 1.在桌面上右键创建个文本,然后改后缀名为udl以后保存(1 ...
 - eclipse下properties配置文件中文乱码解决
			
properties文件常带有中文注释,eclipse显示是乱码. 安装插件(properties editor)可以解决properties配置文件乱码的问题. 菜单 : Help->Ecli ...
 - VC6.0启动File-open和Project-add file to project崩溃的解决方法
			
最近由于装了Office2010,VC6.0被整残了,file->open 和 Project->add file to project不能用,一用VC6.0就崩溃,查到是由于office ...
 - 一款html拼图游戏详解
			
本文是爱编程原创翻译,转载请看清文末的转载要求,谢谢合作! 游戏介绍 这篇文章是献给web游戏开发者用简单的开发工具开发一款游戏.此文介绍了用html.css.javascript只需简单和几个步骤开 ...
 - HttpClient-4.3.X 中get和post方法使用
			
转自:http://linhongyu.blog.51cto.com/6373370/1538672 一.简介 HttpClient是Apache Jakarta Common下的子项目,用来提供高效 ...
 - JS地毯式学习二
			
1.递归算法 a. function box(num){if(num<=1){ return 1;}else{ return num*box(num-1);}}alert(box(5)); b. ...
 - PHP 之超级全局变量
			
参考菜鸟教程,并经过自己亲手实验,记录PHP的几个超级全局变量 所谓超级全局变量 ,你可以理解为在一个脚本里面的全部代码里面都可以使用的变量. $GLOBALS $GLOBALS 是 php 的一个超 ...
 - wireshark教程(一)
			
按照国际惯例,从最基本的说起. 抓取报文: 下载和安装好Wireshark之后,启动Wireshark并且在接口列表中选择接口名,然后开始在此接口上抓包.例如,如果想要在无线网络上抓取流量,点击无线接 ...
 - Elasticsearch5.X IN Windows 10 系列文章(5)
			
ElasticSearch版本: 5.5.1 (最新稳定版为5.5.2),由于用到IK中文分词插件,最新版本没有5.5.2 ,所以使用5.5.1 日期:2017-08-31 第五章:Kibana 安装 ...