如果你在公司做过Android的产品,或者发布过自己的产品,那么你应该知道或者听说过代码混淆吧,简单说就是在被别人反编译你的apk时,让别人看不懂你的代码,只能看到一些无意义的字母!如果你对这方面还不熟悉,那么请你先了解一下proguard这个Google自带的工具,网上也有很多相关的资料,这里就不介绍了。
然而在代码混淆之后,如果想捕获一些系统的异常,就不能得到正确的source file、Stack trace、line number,因此对开发人员对软件后期的维护会带来相当大的困难!下面我就来介绍一种如何使得软件既有代码混淆,又有正确地异常反馈信息。
在下面的解决方法中需要用到Crashlytics这个工具,如果你对Crashlytics还不熟悉可以看本人的上一篇博客。下面假设你已经使用过Crashlytics这个工具,并且对它已经有一定的了解。这里插一句,Crashlytics这是一个非常强大的工具,在异常反馈,报告的分类统计和管理方面做得已经挺不错了,特别是如果以后你想自己上线一款软件,你可以通过这个工具方便的了解软件的异常报告的统计分析。
下面进入正题,
我们首先新建一个Android的工程,取名为CrashDemo,工程目录如下:
然后在MainActivity的onCreate方法中,添加一行代码:
throw new RuntimeException("This is a crash!");
如下:
接下来需要添加Crashlytics的相关配置信息和代码了,这里如果讲得不清楚,可以参看本人的上一篇博客。
1.点击工具栏中Crashlytics的按钮
2.添加一个工程,选择CrashDemo,点next
3.选择next,出现下面图表示已经将CrashDemo添加完毕了
接下来可以做一下测试,是否可以正常地反馈异常报告https://www.crashlytics.com/上,打开网站后登陆你的账号,并找到项目CrashDemo
可以看到如下的异常报告统计信息说明已经配置成功了!
下面就开始导出代码混淆的apk了:
这里不多过多的介绍如何代码混淆,只是给出步骤,有关更多代码混淆的设置请自行搜索相关代码混淆的资料。(注意:如果你的项目中用到了第三方的jar的话,一定需要自己配置proguard-project.txt文件!)
1.打开工程目录下的project.properties
2.将下面红色方框圈住的行前面的#去掉
3.右击当前工程,选择export
4.选择下面的选项Android -> Export Crashlytics-enabled Android Application
5.选择需要导出的工程
6.这里选择创建一个新的keystore(也可以选择一个一有的keystore)
7.填写keystore的相关信息,这里可以随便填啦
8.这是最后一步了,选择导出的apk的位置,选择好后点finish。
9.现在就可以将导出的CrashDemo.apk安装到手机上,这个是经过代码混淆的,里面也加了异常处理机制,在启动应用时,会强制退出,并将异常报告发送。我们可以进入Crashlytics查看异常报告了!并且我们看到异常报告信息和之前代码混淆之前是一样的!
到这里我们解决了这个问题。
最后提供一个参考资料http://support.crashlytics.com/knowledgebase/articles/202143-eclipse-with-proguard