Android Studio相关博客:
Android Studio(二):快捷键设置、插件安装
最近终于把项目做完了,天天加班,累成狗了。 而昨日又忽闻慕和网络CEO吴波猝然离世的消息,深感互联网行业在高薪(其实好多人并不高薪哇)的同时,也是高压力高风险的啊,也在此希望广大同行可以珍惜生命,远离代码,啊呸,是远离加班熬夜!
好啦,继续今天的话题,当项目做完之后,作为一个称职的开发者,接下来任务自然是打包测试发布了。
而打包之前,你必须要混淆你的代码,前提是你不希望别人看到你的代码!
如果你不混淆你的代码,会有怎样的后果呢?知道不?
通过反编译你的apk文件,你的源代码和资源文件都将暴漏无疑,就像光着屁股在别人眼瞎乱晃一样,我觉得它们一定不好受。 作为一手造就它的你来说,怎么能让它不好受呢?
嘿,说到这里,我想有些初学的开发者已经会有所好奇了:如何反编译apk文件擦查看源码呢?再此,给大家推荐两篇博客,很精简很易懂《android 代码 混淆- 原来如此简单》和 《 Android APK反编译就这么简单 详解》; 相信你看完这两篇博客(能跟着做一遍更佳),一定会觉得蛋疼: 尼玛老子辛辛苦苦搞了几个月的项目,你几分钟就把源码给我搞到了,当我开源的啊!
好啦,知道不去混淆代码会有怎样的影响之后,那我们来看看如何在Android Studio上混淆你的工程代码吧。
代码混淆
首先,在你的工程目录下,找到proguard-rules.pro文件,它就是你要进行编写混淆配置的文件:
光编写该文件还不够哦,你还需要在你module的build.gradle文件中引用该混淆文件:
好了,知道在哪配置混淆文件后,下面开始讲讲如何配置混淆:
混淆文件 proguard-rules.pro 参数详解:
以上是最基础的配置,几乎每个项目都需要进行这些地方的混淆(或保持不混淆)。
如果你仔细看过上方的注释,就会了解一些基本代码混淆策略了。
只是,这还远远不够,因为你在项目中,总会不可避免的引用第三方的library库或是jar包,那,如果你不能够正确的混淆第三方的资源,可能会导致你的应用无法使用。(我就因为忘了配置Gson相关的混淆,导致页面一直没有数据显示,蛋疼的一笔)。
贴出我项目中关于第三方的混淆部分:
以上的配置,即是对一个项目的混淆配置了,相对比较完整,大家可以依葫芦画瓢,写更多的配置,对于一些第三方项目的使用,一般官方会给出如何配置混淆,大家需要小心,别忘了配置。
好啦,如果你已经写好自己的混淆配置文件,不要忘了在build.gradle文件中再次配置下,打开混淆文件:
release节点下,minifyEnabled设置为true。
导出APK文件
学会了如何混淆你的项目代码之后,接下来,我们看下,如何使用Android Studio导出APK文件吧。
(1)Android Studio菜单Build->Generate Signed APK
(2)弹出签名选择、创建窗口
(3)创建密钥库及密钥,创建后会自动选择刚创建的密钥库和密钥(已拥有密钥库跳过)
点击“Create new...”按钮创建密钥库
Key store path:密钥库文件的地址
Password/Confirm:密钥库的密码
Alias:密钥名称
Password/Confirm:密钥密码
Validity(years):密钥有效时间
First and Last Name:密钥颁发者姓名
Organizational Unit:密钥颁发组织
City or Locality:城市
Country Code(XX):国家
(4)选择已存在密钥库及密钥(在(3)中创建密钥库后跳过此步骤)
点击“Choose existing...”按钮找到密钥库文件
Key store password输入已选择的密钥库文件的密码
点击Key alias后的“...”按钮,选择或者创建一个密钥
(5)点击“Next”按钮,选择保存路径后,点击“Finish”按钮完成
使用Android Studio 自动签名打包
a. 打开Project Structure,打开方法如下:
b. 选中需要构建的项目,打开Signing,添加config,创建自己的config
执行完成后,会在build.gradle中自动加上 signingConfigs{ config {...} }的信息
c. 打开Build Types -> release
在signing Config中选择定义的配置
zip align enabled 默认为true, 用于启用优化Apk的操作