频道栏目
首页 > 程序开发 > 移动开发 > 其他 > 正文
利用 android studio 混淆打包时该注意的一些问题
2016-11-19 08:15:00         来源:SkyBurningSea的博客  
收藏   我要投稿

针对混淆代码的时候,哪些可以混淆,哪些不能混淆,都是有一定规则的。昨天自己在打包混淆的时候,就困惑了很久,因为我项目中集成了百度地图的sdk,libs的导入直接拿到是demo中的,而百度官方文档上提到的是:
`矢量版SDK(即2.0.0及之后的版本):

如果是用proguard ,以下配置供参考:

-libraryjars libs/baidumapapi_v2_1_2.jar 替换成自己所用版本的jar包

-keep class com.baidu.** { *; }

-keep class vi.com.gdi.bgl.android.**{*;} `

自己项目的libs,没有baidumapapi_v2_1_2.jar,而是一些

这里写图片描述

因此,我尝试写成:-libraryjars libs/baidumapapi_base_v4_1_1.jar 这样子。
可在打包编译时就出问题了,studio里会提示:

   java.io.IOException: The same input jar [C:\Users\Administrator\AndroidStudioProjects\RO\app\libs\baidumapapi_base_v4_1_1.jar] is specified twice. 

意思就是说,已经指定了两次。为什么会说指定了两次呢,那是因为在gradle中,Google默认已经帮我们做了jar包的混淆忽略了,也就是说当我们再去用-libraryjars libs/xxxx.jar时,就会报重复指定了,去掉自己写的,问题解决。因此第三方jar包,不需要我们再去担心要不要混淆了。

第三方jar包问题解决,混淆打包也成功,而且程序进入到首页也没问题,正当我以为可以直接出包的时候,我点了点其他模块,程序崩溃了!!
由于一开始没有任何调试信息,自己也不知道问题在哪,刚开始还以为是百度地图sdk混淆还有问题,因此又继续去研究百度的官方文档。后来,自己加入了Crash收集代码,问题马上就暴露出来了。空指针异常!!
原因是我的代码里面有用到gosn,把response的内容转化为bean,这个过程要利用反射机制,而当我混淆代码后,反射就会因为找不到类名出问题了。因此,解决方法就很简单了,参考Google官方文档:

—————Begin: proguard configuration for Gson ———-
Gson uses generic type information stored in a class file when working with fields. Proguard
removes such information by default, so configure it to keep all of it.
-keepattributes Signature
For using GSON @Expose annotation
-keepattributes Annotation
Gson specific classes
-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.stream.* { ; }
Application classes that will be serialized/deserialized over Gson
-keep class com.xxx.xxx.bean.* { ; }
—————End: proguard configuration for Gson ———-
把自己项目中的整个bean文件夹保留下来,不要混淆调,问题迎刃而解(以后,项目中有地方用到反射的地方,一定要记得不能混淆!)。

在代码混淆的时候,可能还有一种情况,就是会引用到第三方库,那么第三方库,在代码混淆的时候又该怎么做呢,据我个人了解,第三方库,自己可做配置也可以不做配置,对程序影响不大,只是在反编译出来会有不同。

最后,混淆打包,对于第三方jar包,第三方库,自己写的代码,要不要做混淆,上面都有做讲述。由于自己知识有限,可能有很多不当地方,还请大神们直接指出,后续更改。

点击复制链接 与好友分享!回本站首页
上一篇:【手游开发】unity实用技能 Unity 代码实现抛体运动
下一篇:移动App界面设计尺寸视觉规范
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站