Android 混淆[学习笔记]
Android 混淆
Gradle的简介: http://www.flysnow.org/2015/03/30/manage-your-android-project-with-gradle.html
多渠道打包的介绍: http://blog.csdn.net/tu_bingbing/article/details/42362619
http://coolshell.info/blog/2015/03/android-studio-prefrence.html
目前Android studio 1.4版本,目标apk 5.0 (21)。主要参考这个文: http://www.cnblogs.com/Supperlitt/p/4214949.html
1. 修改 build.gradle
signingConfigs {
release {
storeFile file('release.keystore')
storePassword "123456"
keyAlias "androiddebugkey"
keyPassword "123456"
}
debug {
storeFile file('release.keystore')
storePassword "123456"
keyAlias "androiddebugkey"
keyPassword "123456"
}
}
buildTypes {
release {
minifyEnabled true // 设置代码进行混淆
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release // 签名配置
}
}
以前版本中。
a> 我们使用的是runProguard不过现在是使用minifyEnabled了。设置为true就是进行混淆。
b> proguradFiles 指定配置混淆项目的文件,可以看到使用的是progurad-rules.pro。这是我们后续配置排除混淆和运行环境会用到的。
2. 创建KeyStore文件,用命令行或Android Studio菜单"Build -> Generate Signed Apk -> Create new"
cd Users\User\.android
keytool -genkey -v -keystore release.keystore -alias androiddebugkey -keyalg RSA -validity 10000
将生成的release.keystore文件拷到build.gradle 文件同一个目录。
3. 修改 progurad-rules.pro,添加如下内容:
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
注:如果你使用了第三方的 jar.又不需要混淆,或者已经混淆为了避免出问题。你可以在progurad-rules.pro文件中加上下面内容。
-dontwarn com.android.support.**
-keep class com.android.support.** {
*;
}
我这里用了安卓自带的,估计不需要。
4. 菜单"Build -> Select build vaiants" 选择release,然后每次都生成这个了,或者"Build->Generate Signed Apk"。
PS: eclipse的混淆,见: http://blog.csdn.net/vipzjyno1/article/details/21042823
让proguard.cfg起作用的做法很简单,就是在eclipse自动生成的default.properties文件中加上一句“proguard.config=proguard.cfg”就可以了
Android 混淆[学习笔记]的更多相关文章
- Android:日常学习笔记(2)——分析第一个Android应用程序
Android:日常学习笔记(2)——分析第一个Android应用程序 Android项目结构 整体目录结构分析 说明: 除了APP目录外,其他目录都是自动生成的.APP目录的下的内容才是我们的工作重 ...
- Android自动化学习笔记:编写MonkeyRunner脚本的几种方式
---------------------------------------------------------------------------------------------------- ...
- Android自动化学习笔记之MonkeyRunner:官方介绍和简单实例
---------------------------------------------------------------------------------------------------- ...
- android开发学习笔记000
使用书籍:<疯狂android讲义>——李刚著,2011年7月出版 虽然现在已2014,可我挑来跳去,还是以这本书开始我的android之旅吧. “疯狂源自梦想,技术成就辉煌.” 让我这个 ...
- Android动画学习笔记-Android Animation
Android动画学习笔记-Android Animation 3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中 ...
- Android 数字签名学习笔记
Android 数字签名学习笔记 在Android系统中,所有安装到系统的应用程序都必有一个数字证书,此数字证书用于标识应用程序的作者和在应用程序之间建立信任关系,如果一个permission的pro ...
- Android:日常学习笔记(9)———探究持久化技术
Android:日常学习笔记(9)———探究持久化技术 引入持久化技术 什么是持久化技术 持久化技术就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失 ...
- Android:日常学习笔记(9)———探究广播机制
Android:日常学习笔记(9)———探究广播机制 引入广播机制 Andorid广播机制 广播是任何应用均可接收的消息.系统将针对系统事件(例如:系统启动或设备开始充电时)传递各种广播.通过将 In ...
- Android:日常学习笔记(8)———开发微信聊天界面
Android:日常学习笔记(8)———开发微信聊天界面 只做Nine-Patch图片 Nine-Patch是一种被特殊处理过的PNG图片,能够指定哪些区域可以被拉升,哪些区域不可以.
随机推荐
- swift项目第五天:swift中storyBoard Reference搭建主界面
一:StoryBoard Reference的介绍 StoryBoard Reference是Xcode7,iOS9出现的新功能 目的是让我们可以更好的使用storyboard来开发项目 在之前的开发 ...
- thinkphp3.1课程 1-1 为什么thinkphp在开发好后需要关掉开发模式
thinkphp3.1课程 1-1 为什么thinkphp在开发好后需要关掉开发模式 一.总结 一句话总结:因为调试模式中会记录你所有的调试信息,比如a调用b,b调用c,c调用d,比如你从哪个数据库取 ...
- Javascript学习之Window
1.confirm:确认对话框. window.confirm("确定要删除吗?");//返回true或false if(window.confirm(“确定要删除吗?”)) { ...
- ng build --base-href的设定问题
项目构建部署中遇到的问题: 1.不使用hash,如何解决刷新页面404的问题? 说明: root 指定项目地址路径,默认为nginx下的html index 默认访问index文件 try_fil ...
- 使用ganglia监控hadoop及hbase集群 分类: B3_LINUX 2015-03-06 20:53 646人阅读 评论(0) 收藏
介绍性内容来自:http://www.uml.org.cn/sjjm/201305171.asp 一.Ganglia简介 Ganglia 是 UC Berkeley 发起的一个开源监视项目,设计用于测 ...
- Linux系统编程_8_进程控制之fork_wait_waitpid函数
fork函数: #include <unistd.h> pid_t fork(void); fork用来创建一个子进程: 特点: fork调用后会返回两次,子进程返回0,父进 ...
- Jedis 源代码阅读一 —— Jedis
这是jedis 源代码文件夹,我们接下来选择性阅读重要的接口以及实现. └─redis └─clients ├─jedis │ │ BinaryClient.java │ │ BinaryJedis. ...
- DI:依赖注入详解
DI(依赖注入) 依赖注入的理解: 一般写程序的时候service层都需要用到dao层,所以一般都是在service层里面new dao ,而现在利用依赖注入的方式,直接把dao给了service层 ...
- href="javascript:;" href="javascript:void(0);" href="#"区别
一.href="javascript:;" 这种用法不正确,这么用的话会出现浏览器访问"javascript:;"这个地址的现象: 二.href="j ...
- C/C++ 变量的初始化
局部变量,初始化为垃圾值,局部静态变量初始化为 0: 1. 二维数组 // 作为局部变量 int arr[4]; // 全是垃圾值 int arr[4] = {1}; // 第一个元素为 1,其他默认 ...