欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SDK接入踩坑注意点:忘记加入代码防混淆配置

程序员文章站 2022-06-18 14:18:17
最近项目涉及到个人网盘业务,所以自然的就接入了三方的SDK,这其中涉及到了SDK防混淆以及阿里框架ARouter防混淆配置,当时手头活比较多,都是想着先实现功能,打包那是最后最后的事情了,所以把当时想这块放在最后做,于是最后也忘了。debug包自测所有功能一切都正常,但是当打release包发给测试人员测试时,点击事件效果全无、功能不正常。于是开启了找bug过程......刚开始怀疑是服务端的测试环境代码没有拷贝到生产环境上,但同事说release包用的就是测试环境,这个自然排除。下面就是怀疑........

最近项目涉及到个人网盘业务,所以自然的就接入了三方的SDK,这其中涉及到了SDK防混淆以及阿里框架ARouter防混淆配置,当时手头活比较多,都是想着先实现功能,打包那是最后最后的事情了,所以把当时想这块放在最后做,于是最后也忘了。debug包自测所有功能一切都正常,但是当打release包发给测试人员测试时,点击事件效果全无、功能不正常。于是开启了找bug过程......

刚开始怀疑是服务端的测试环境代码没有拷贝到生产环境上,但同事说release包用的就是测试环境,这个自然排除。下面就是怀疑.......,哎,还是无意间提到,“是不是没有加SDK代码防混淆配置?”,然后突然想起来这档子事,于是就加了:

#aar防混淆配置
-keep class com.chinamobile.mcloud.sdk.backup.**{*;}
-keep class com.chinamobile.mcloud.sdk.base.**{*;}
-keep class com.huawei.cloud.sdk.**{*;}
-keep class com.chinamobile.mcloud.sdk.common.**{*;}
-keep class com.chinamobile.mcloud.community.**{*;}
-keep class com.cmic.corenetwork.**{*;}
-keep class com.chinamobile.mcloud.sdk.family.**{*;}
-keep class com.chinamobile.mcloud.sdk.file.**{*;}
-keep class com.chinamobile.mcloud.sdk.main.**{*;}
-keep class com.chinamobile.mcloud.sdk.sharegroup.**{*;}
-keep class com.chinamobile.mcloud.sdk.trans.**{*;}
-keep class com.chinamobile.icloud.im.**{*;}
-keep class com.chinamobile.contacts.sdk.**{*;}
#ARouter防混淆配置
-keep public class com.alibaba.android.arouter.routes.**{*;}
-keep public class com.alibaba.android.arouter.facade.**{*;}
-keep class * implements com.alibaba.android.arouter.facade.template.ISyringe{*;}

然后打release包,测试,一切恢复正常!

一些区别总结一下:

用Android studio直接跑的包,程序是不会经过混淆代码、加秘钥等操作的,而打包的过程会进行代码混淆、加秘钥等安全加固措施的,如果接入的一些第三方的SDK你没有加入防混淆的代码,那么在程序打包编译时,会进行类名、方法等的加密、混淆处理,在代码中调用的SDK的类名、方法名等实现的功能自然就被混淆找不到了。所以一定要加防混淆配置!

另外值得了解Apk的整个流程:

1. aapt工具将res中的资源生成 R.java文件和resources.arsc文件;

2. 如果有aidl,那么aidl工具会将aidl接口转化为java类;

3. javac将所有的java类编译为class文件;

4. 如果有代码混淆,则会加入代码混淆;

5. dx.bat将所有的class文件转化为classes.dex文件;

6. ApkBuild将所有的资源(assets、so、jni)、resources.arcs以及上一步生成的dex文件,打包生成一个apk文件;

7. 对上一步生成的apk进行签名;

8. 使用Zipalign对签名后的apk进行优化。

这个打包的整个流程走下来会很慢,根据我实际打包体验,MacBook os系统  i7处理器 16GB内存 64位 打一个75M的APP大概在17-25分钟左右。

写给入门的新手,少走弯路,快速成长吧!

本文地址:https://blog.csdn.net/luqingshuai_eloong/article/details/108123905

相关标签: android