四、集成验证基础:检查SDK版本、资源文件、依赖库是否完整导入
集成验证是SDK接入的第一道关卡。说白了,就是确认你拿到的东西是“完整的、可用的”。
我见过太多项目,代码在CI上跑了一天,最后报个“找不到类定义”或者“资源ID冲突”——一查,原来是某个依赖库没导进来。这种锅,不该让集成人员背。
这一节,咱们把检查项拆成三个维度:版本、资源文件、依赖库。每个维度都有一套口令,照着做基本不会翻车。
4.1 SDK版本:打根上对齐
版本检查不是看一眼版本号就完事。你得验证三件事:
- 发布版本与文档版本一致:我经常遇到文档写的是2.3.1,包里却是2.3.0-SNAPSHOT。这种不一致往往意味着API有细微差异,后面联调时特别坑。
- 目标平台的最低版本要求:比如SDK要求minSdkVersion = 21,你的项目如果是19,直接编不过。这类问题越早发现越好。
- 版本号的语义规则:主版本号变更通常代表不兼容修改。升级时一定要看Change Log,别盲目替换。
一个小技巧:每次拿到新包,第一件事就是运行
sdk-version-check.sh 或者读取 sdk.properties,把版本号输出到构建日志里。这样CI报告里一眼就能看到当前集成了哪个版本。
4.2 资源文件:别漏了图、字符串、布局
资源文件是集成时最容易漏掉的部分。尤其是Android SDK,经常会带一堆drawable、layout、values下的字符串。
检查资源文件时,我习惯先看清单:
- R文件是否正确生成:如果build后找不到R.xxxx,说明资源导入失败。
- 资源命名冲突:有的SDK用
ic_launcher这种通用名称,容易跟App主工程冲突。集成前最好用grep -r "ic_launcher" res/扫一遍。 - 缺失资源引用:有些布局里引用了
@drawable/sdk_bg,但实际包里没有这张图。这类问题在运行时才暴露,特别恶心。
我曾经踩过的坑:一个UI SDK在values/strings.xml里定义了一个
app_name字符串,跟我的App主工程完全同名。集成后App名称直接变乱了。所以现在我在集成之前一定会跑资源冲突检测脚本,把共用的R字段全部加前缀。
4.3 依赖库:不只是jar/aar,还有传递依赖
依赖库检查分两层:直引依赖和传递依赖。
| 检查维度 | 检查点 | 工具或方法 |
|---|---|---|
| 直引依赖 | 是否包含所有必需的jar/aar/framework | 查看集成文档的依赖列表 → 对比项目 build.gradle |
| 传递依赖 | 是否有冲突(版本不一致、类重复) | ./gradlew :app:dependencies 输出树 |
| 平台依赖 | 是否存在缺失的系统库(如CoreTelephony) | 静态检查 nm -u libxxx.a |
| 动态库 | abi架构是否匹配(armeabi-v7a / arm64-v8a) | 解压aar → 检查jni目录 |
这里我要强调一点:传递依赖冲突是运行时的定时炸弹。比如SDK依赖了OkHttp 3.12,你的App依赖了OkHttp 4.0,虽然编译通过了,但运行时可能因为方法签名不同而Crash。我的做法是在集成阶段就运行./gradlew app:dependencies --configuration runtimeClasspath,然后把输出交给版本比对工具,标记出所有冲突的库。
集成验证清单(核心)
- 版本:README版本号 & 包内 version.txt & build.gradle 定义 → 三者一致
- 资源:运行一次
资源扫描脚本,输出缺失/冲突资源列表 - 依赖:执行依赖树 → 过滤出“冲突”、“警告”、“缺失”三类,逐条确认
4.4 自动化集成验证脚本
手动检查太慢了,而且容易漏。我一般会在CI流程里加一个verify-sdk-integration的Job,流程如下:
- 解压SDK包到临时目录
- 解析
sdk-info.json(或properties)获取版本号 - 遍历所有资源目录,生成资源清单
- 运行
gradle dependencies并解析输出 - 比对清单与预期值,不一致则标记失败
这个脚本跑下来一般只需要3~5秒,能在开发阶段就把百分之八十的集成问题拦在门外。
这张图把我们要做的四步流程串起来了。从版本校验开始,到依赖库检查,最后汇总到自动化脚本。每一步都能提前发现问题,而不是等到联调测试才暴露。
我常用的一个辅助工具:写一个小脚本
check-sdk.sh,里面整合了版本比对、资源冲突检测、依赖树输出。每次集成新版本SDK,先跑一遍这个脚本,生成一份“集成验证报告”。报告里会明确打出“通过”或“失败”以及具体原因,给QA同学看也一目了然。
最后再提一句:别嫌麻烦。集成验证花10分钟,能省后面3天的排查时间。这个账,怎么算都划算。