SDK 嵌入问题记录
来源:互联网 发布:mac可以玩lol 编辑:程序博客网 时间:2024/04/29 21:26
在日常开发中,我们常常会遇到如统计 App 的日活、总用户量、错误信息等数据的场景,一般情况下,我们可以嵌入友盟统计、TalkingData 等开发商提供的 SDK 进行统计,而无须自己重复造轮子。
一般情况下,SDK 开发商都会提供相应的文档及 Demo 对如何使用该 SDK 进行详情的指导,同时还提供各种各样的嵌入方式,如常见的 Eclipse libs 嵌入方式,aar 库的嵌入方式,以及 Android Studio 的 module 嵌入方式,说到底嵌入SDK是一件很简单的事情。
但是,在实际开发工作中,有时我们可能不止嵌入一个 SDK,同时可能会有各种各样的限制,然后就可能出现各种奇奇怪怪的问题。
近日,在对开发中的应用进行嵌入两个不同的 SDK 时,遇到了这样一个场景,嵌入的两个 SDK 中含有相同的 jar 包。想想也简单,在 Eclipse 中,也许我们直接简单粗暴把所有的 jar 包放在 libs 文件夹下就完事了,相同的去掉即可。而在 Android Studio 中,我们可以去掉后引入那个 SDK 的 module 中冲突的 jar 包,或者我们可以使用一个公共的 module 给这两个不同的 SDK 的 module 引用,这不就完事了么?
问题就出现在这里,为了便于代码的管理及第三方库的重复方便使用,需要把 module 打包成 aar 库放在远程仓库,然后其他需要用到的工程直接引用即可。其实也很简单啊,使用 module 的时候,Clean 并且 Rebuild 一下工程就会自动帮我们生成 aar 库了。然后就很开心的导入到工程,进入第三方 modue 主页,正常,完事,其他的测试工作就交给第三方合作商了。呃,在后面的测试反馈中,就出现了问题了。经过跟踪 Log,发现了如下错误。
ClassNotFoundException ? 找不着类…… 既然是找不着类,那我们可以看看 build 文件夹里面是否真的找不着该类,在 build -> intermediates -> exploded-aar ->相应的 aar 库查找,发现信息如下图
abcdefg …… 原来啊,要使用的类被混淆了,难怪找不着,查看了下第一个 module 的配置文件,果然发现了 release 包混淆的配置语句
release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'}
既然共用的 jar 包不能混淆代码,那我们只需要在混淆配置文件里面添加不混淆的配置即可。
-keep class com.bairuitech.** { *; }
再次查看 build 文件夹中 jar 包
终于没有各种 abcdefg 了,再次运行使用应用,也不再有 ClassNotFoundException 错误了。
其实整篇都是废话,总结如下:
在嵌入多个第三方 SDK 时,如果出现 jar 包冲突,可以使用公共的 module 存放共用 jar 包,如需使用 aar 库嵌入方式,切记共用的 jar 包不可以混淆,否则会出现找不着类的情况。
- SDK 嵌入问题记录
- unity3d 嵌入 移动MM SDK 闪退的问题
- Android中嵌入极光推送SDK存在冲突问题
- 记录一下接多盟SDK遇到的问题
- Cocos2d-x游戏,嵌入UC sdk问题之XML配置问题
- unity接入安卓sdk碰到的问题记录
- unity接android sdk的碰到的一些问题记录
- 记录一次排查极光推送SDK死锁问题
- Android学习之:第一次写SDK及SDK打Jar包相关问题记录
- Android应用嵌入有米SDK教程
- Facebook sdk嵌入,登陆与注销
- 支持嵌入的手机号码识别sdk软件
- scrollview嵌入listview问题
- 安装directx sdk记录
- PowerVR SDK记录
- 记录一个SDK
- hisi SDK安装记录
- 讯飞 SDK集成记录
- 从密码学角度看TX常用的TEA加密算法
- php5.2.x安装xdebug
- Platform总线
- Missing Number
- Hrbust 1390 Leyni, LOLI and Numbers【思维+树状数组+二分+双向链表模拟】好题!好题!好题!
- SDK 嵌入问题记录
- JAVA WEB从入门到精通 day19 Listener监听器
- [BZOJ2565]最长双回文串(manacher)
- PCI总线驱动程序设计
- Java static关键字--String类--StringBuilder等
- LeetCode算法题目:Binary Tree Zigzag Level Order Traversal
- MultiNET环境搭建中Cython问题处理
- Color过渡动画
- 2016蓝桥杯省赛 交换瓶子