如何编译Google Vision API库?集成时遇multidex编译错误求解决
我帮你梳理下解决这个编译错误的办法,以及Google Vision API库的编译方式:
一、搞定Multidex相关的编译报错
你碰到的这个错误,核心是Multidex配置不到位,再加上旧版Guava库和Google Vision API的依赖冲突导致的。可以按下面的步骤一步步排查:
检查Multidex配置是否完整
打开你的build.gradle (Module: app)文件,确保已经开启Multidex并添加了依赖:android { defaultConfig { // 其他原有配置保持不变 multiDexEnabled true } } dependencies { // 引入Multidex依赖 implementation 'com.android.support:multidex:1.0.3' }如果你的App有自定义的Application类,要么让它继承
MultiDexApplication,要么在attachBaseContext方法里手动初始化Multidex:public class MyApp extends Application { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } }别忘了在
AndroidManifest.xml的<application>标签里指定这个自定义Application类。解决Guava库版本冲突
错误日志里提到的guava-jdk5-17.0.jar是个比较老的版本,很可能和Vision API依赖的高版本Guava冲突。你可以强制项目使用统一的Guava版本:configurations.all { resolutionStrategy.force 'com.google.guava:guava:28.1-android' }或者在引入Vision API依赖时直接排除掉旧版的Guava:
implementation('com.google.android.gms:play-services-vision:20.1.3') { exclude group: 'com.google.guava', module: 'guava-jdk5' }清理重建项目
做完上面的配置后,先执行File > Invalidate Caches / Restart重启Android Studio,然后用命令行运行./gradlew clean assembleDebug,或者在AS里点击Build > Clean Project再Rebuild Project。
二、Google Vision API库的编译方式
通常情况下,我们不需要手动编译Google Vision API库,直接通过Gradle依赖引入官方预编译的版本就够了:
在build.gradle (Module: app)的dependencies块里添加:
implementation 'com.google.android.gms:play-services-vision:20.1.3'
这个版本是经过验证的稳定版,你可以根据项目需求更新到最新版本。
如果确实需要手动编译(比如要定制修改源码),可以按以下步骤操作:
- 首先需要获取Google Play Services的源码(注意:部分源码需要权限才能访问)
- 确保本地环境配置好了对应的Android SDK、NDK,版本要符合项目要求
- 进入项目根目录,执行Gradle编译命令:
编译完成后,生成的aar文件会在./gradlew :play-services-vision:assembleReleaseplay-services-vision/build/outputs/aar/目录下,你可以把这个aar作为本地依赖导入自己的项目使用。
内容的提问来源于stack exchange,提问作者Anshul Khare

