做了这么多安卓项目,还是第一次遇见这样的重复导包问题


HI,Good Night!好几天没推送文章啦,这两周我也是忙得不亦乐乎,晕头转向的!毕竟写一篇完整的技术性文章还是挺费时费力的,不可草草了事。

考虑到与其他公号的差异性,以后尽量提高推文频率。比如可以将工作中所遇到的安卓开发问题和一些时事科技见解发送至此,与大家交流。偶尔也能有一些吐槽,比如这篇。

说一种情况,大家肯定遇到过。

无论是使用 Eclipse 还是 Android Studio 作为 IDE,都不能重复导入相同的 Jar 包。否则编译时一定报错不通过,因为编译出的 Dex 文件是用包名区分所有 java 代码的。比较常见的使用场景就是 support v4 包。

很多第三方 Library 都需要依赖 v4 包,我们自己创建项目时也会自动引入 v4 包。但是不可以重复引入,一般项目中保证一个 v4 包即可。

这种情况,还比较好处理,检查检查,手动去重,删除多余的 jar 包即可。如果拥有相同依赖的两个第三方库在项目中都是远程依赖的,使用 Gradle 的这个操作也能去重:

compile 'com.umeng.analytics:analytics:latest.integration'{
    exclude group: 'XXX'
}

然而,最近我工作中遇到一个更为奇葩的问题。

项目一直使用的是「友盟」作为第三方统计分析工具,相信大家很多人都用过。然而最近增加一个功能,与之缘分般地冲突啦!这个功能需要引入中国移动统一认证 SDK,用于识别用户手机 SM 卡,实现自动登录。

嵌入第三方 SDK 本身不是一件很难的事,那就按照文档指示导入相关 jar 文件、so 文件等,一步步操作即可。可是最终编译时出错啦!Messages 窗口弹出一件令我苦笑不得的错误提示:

这你敢信?花样 duplicate entity?

一般说来,除了安卓本身的一些 support 包被大家公用,第三方 SDK 的 java 代码都在自己特殊包名路径下,出现重复的概率好比夜晚坐在阳台看流星,可遇不可求啊!

那好吧,肯定是项目中引入的哪个第三方也出现图中的奇葩 java 类。一翻搜索,果不其然,如图:

(友盟统计 SDK)

(统一认证 SDK)

这不由得让我想起小品中的一句话:

好尴尬啊

这些年做过很多项目,用过的第三方 SDK 用上脚趾头也数不完。给我的感觉就是,小公司提供的 SDK 最好用,文档清晰,代码规范。相反,BAT 等大公司的 SDK 最烦,文档少得可怜,甚至没有,直接扔出一个 Demo 得不能再 Demo 的 Demo,让使用者自己去看代码。(遇到问题,找个客服好比大海捞针。)

这次更为奇葩,头回遇到这样的问题,不知道背后的开发人员咋想的。真的是,各人自扫门前雪,休管他人瓦上霜啊!

不知道大家是否有过类似的感受,也欢迎拿出来晒一晒!

猜你喜欢

★ Android 突破 DEX 文件的 64K 方法数限制

★ 利用 Chrome 开发者工具远程调试 Android 工程中的原生 WebView

★ 关于 Android 7.0 适配中 FileProvider 部分的总结

★ 了解 Android 应用的文件存储目录,掌握持久化数据的正确姿势

★ 聊聊 GitHub 对于程序员的品牌价值

★ Android Theme.AppCompat 中,你应该熟悉的颜色属性

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值