IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android工程配置混淆引发的问题 -> 正文阅读

[移动开发]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,打新包给测试部

?

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-08-14 14:11:29  更:2021-08-14 14:13:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 1:04:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码