Android工程配置混淆引发的问题

公司之前app下载文件是通过Android自带的第三方库FTPClient,有一个问题就是在文件下载过程中会存在文件泄密的问题,于是公司自己开发了一套加密传输文件的api,api是用c来实现的,Android如果要调用必须通过so文件的方式来加载,公司的同事通过一周的开发终于把so文件发给我,然后就有了以下一系列的问题;

首先选用通过jna的方式来加载so文件(当然也可以通过jni方式,不过更麻烦)

在开发过程中一直使用debug模式在调试,测试验证之后文件可以正常下载,以为这一个小小的功能在只需要一下午的时间就搞定了,于是打包了release版本的apk提供给测试部测试,万万没想到第二天直接给我提了一个严重等级的bug(bug内容:点击下载文件按钮app崩溃),我不是测试很多遍都没问题吗?怎么就崩溃了?一脸疑惑,心里想着我才不信,必须狠狠的打测试的脸,立马自己亲自安装了发给测试的release版本的apk,也崩溃了。。。。

看来自己自己一手造成的bug还是要自己来承受,于是我开始各种百度,什么csdn,GitHub等等,找了一下午还是没有结果,就在我绝望的时候无意间看到了一个配置没错就是混淆(minifyEnabled)我在想这个配置是干嘛的(作为Android开发的小白)于是我有开始各种百度,什么csdn,GitHub等等,这是我百度的一段混淆感念

Android代码混淆,又称Android混淆,是伴随着Android系统的流行而产生的一种AndroidAPP保护技术,用于保护APP不被破解和逆向分析(混淆就是将关键字和关键类名,修改为无意义的字符以起到迷惑试图反编译去查看源码的人)

看完之后我心里想会不会这个玩意把我调用so文件类给混淆掉了,我把true改为了false(修改完之后打包release版本的apk发现体积比之前大了4mb)通过一顿测试后都正常,重新打包apk发给了测试部,觉得这下应该没问题了

过了一天之后,测试部又提了一个新的bug,文件下载可以了,打不开ppt格式的文件(只有ppt格式打不开,其他都可以,我们公司的文档浏览是通过内置腾讯tbs插件)马德这是什么奇葩

我开始想会不会是文件解密的问题(我们公司文件都是加密过的,在打开前必须通过解密接口解密后才能正常打开),于是我把解密后的文件,和原本明文文件做了二进制对比,发现一模一样。这就奇怪了,难道是tbs插件最近有更新?那也不会影响到之前的插件的使用啊,我还是去了tbs官网,发现真的有最新插件,于是我下载下来替换了最新的重新打包测试,发现还是不行。

到底是什么原因呢?就在我又一次绝望的时候,突然想起来之前解决文件下载崩溃的时候修改了一个工程属性会不会是那个玩意引发的,我又把minifyEnabled这个配置改成了true,反复测试发现就是这个配置导致ppt格式文件打开失败。

这下要怎么解决,两个都是很严重的问题,好像修改这一个配置并不能解决两个问题

tbs是别人的东西,不好轻易去修改,只能硬着头皮去解决文件下载失败的问题了,以下就是问题原因和解决方法

首先我们打包两份release版本的apk包一份是minifyEnabled = true 一份minifyEnabled=false,因为就是这个配置导致我们文件下载时崩溃的所以我们需要对比一下究竟这两个包有哪些差异,打包好之后,在Android studio中可以查看apk包的内容,对比之后发现开启混淆之后,会将我们调用的类名、类中的成员重命名为a、b、c、d.......等等,就像上面提的混淆的概念所说的起到保护作用

  

 于是我有在网上找到,可以通过单独设置某个类不开启混淆,通过proguard-rules中添加对应的类来实现关闭混淆

添加之后,将 minifyEnabled 设置为 true,在打包release版本apk查看对应类的名称

发现和 minifyEnabled设置为false打包出来的一致,ok打包测试

测试后下载文件、打开ppt格式文件都正常,这下可以放心的提交bug,打新包给测试部

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值