在项目中接入的大大小小的sdk 有几个了,现在比较适合做一下总结。
来源
- jar包:一般是公司内部其它部门的sdk、大部分的三方sdk
- aar:一般是公司内部其它部门的sdk(一般是不同Android 小组的sdk)、三方sdk(现在接入的比较新的sdk 很多是aar)
- jar包+资源文件(aar+资源文件)
- 封装开源框架的sdk:图片加载框架、网络框架之类的封装。
- 包含gradle plugin 插件的sdk。
还有一些sdk 包含了so 文件。
注意的问题
1. 冲突
含有资源文件的sdk 需要特殊的注意,资源文件并不会报错。如果主module 含有某个module 含有的资源则最终会被替换成主module 中的资源。如果多个module 含有同一个资源文件,则会导致最终被替换成第一个compile 进去的资源。可能导致的问题是最终运行时找不到某个资源(比如某个layout.xml 被替换了,里面的布局不一样)。所以在导入包含资源文件的sdk 时,需要特别注意资源文件是否有重复。
比较好的做法是在做sdk 时给每一个资源文件加一个前缀。在build.gradle
加入如下代码,资源命名的前缀不是prefix_
就会报红提醒。
|
|
2. 文档
在接入一些三方的sdk 时,最好是能记录sdk 版本,sdk 实现的功能,更加详细的包括调用的逻辑也可以记录下来,方便以后的维护和升级(受了没写文档后来更新的苦,特别是更新不频繁的sdk)。建议在新加的三方sdk 中加入详细文档。
3. so 文件
需要注意app 兼容的so 版本。为了减少包大小,很多app 只会导入armeabi
的so(x86
兼容armeabi
)。最终打包时可以通过下面脚本过滤只包含armeabi
。
|
|
4. 混淆
sdk 的接入文档里面会有混淆的说明,但是对于一个比较大的sdk 的混淆,推荐单独建一个文件来混淆。
5. 是否新建moudle
不推荐每一个aar 创建一个module。对于包含了比较多资源文件的sdk,或者项目的工程比较大、更新比较频繁的,或者某个aar 需要被多个工程引用(aar 文件不能传递依赖)推荐创建一个新的module。
Android Studio 自带导入aar 的方式。
但是不推荐使用这种方式,这样导入有一个缺点是无法在External Libraries 中查看导入的aar。
推荐单独创建一个module 的方式。
1.在sdk 目录下的build.gradle
中(把aar 放在lib 目录下)
|
|
2.在使用的module(所有的module 都可以这样配置)中配置
|
|
这样可以在External Libraries
中查看。
6. 其它
还有一些需要注意的问题可能比较杂,大概罗列一下:
- sdk 中使用的三方库(一般开源库)是否会跟app 存在兼容问题。
- sdk 编译的最低版本与我们app 是否兼容。
- sdk 是否需要在AndroidManifest 中配置(比较常见的是meta-data、permission、Service、Activity、ContentProvider),接入时需要仔细查看文档,不然会有奇怪错误。
- 尽量对sdk 代码调用进行封装。
- 一些细节问题(需要测试的时候用心)。比如sdk 是否有内存泄漏问题。
当然最后最最最重要的是导入三方sdk 的时候记得写文档,写文档,写文档。不然更新的时候就比较悲剧了。