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”就可以了
最新文章
- SQL 数据优化之不建立索引的情况
- MySQL Workbench中修改表字段字符集
- [tem]线段树练习
- 简易购物车 --day2
- iOS出现<;object returned empty description>;的解决方法
- 【笔记】CAP原理和BASE思想
- GMM算法k-means算法的比较
- 一个ListBox的例子
- 上传本地文件到HDFS
- 时钟 IoTimer
- [技巧]如何清除VS2008的最近打开项目
- 暑假集训(4)第三弹 -----递推(Hdu1799)
- declare-styleable:自定义控件的属性
- Controller返回值类型ActionResult
- ASP.NET查询页面设置form的action属性只弹出一个页面,并且每次将页面设置到最前
- PROFINET如何实现实时性
- MySQL 参数autoReconnect=true 解决8小时连接失效(转)
- UVA - 658 最短路
- 【记录】IntelliJ IDEA—IDEA2018-2019激活
- vue_element_vue 引入路径@
热门文章
- 硬件——STM32 , SN74HC573锁存器
- SQL Server 2008 Tempdb 数据库迁移
- 同一master,两个slave的server_id相同问题处理
- 闪回drop恢复表后sql运行计划异常
- FOJ (FZU) 1476 矩形的个数 排列组合。
- hdu 2577 How to Type(DP)
- 事件处理之一:两种方式:监听器与回调 分类: H1_ANDROID 2013-10-31 10:26 3250人阅读 评论(0) 收藏
- JQuery中Ajax详细参数使用案例
- Android的事件分发
- 【codeforces 754D】Fedor and coupons