Android Studio 3升级后无法导入外部项目作为模块
我太懂你这种升级后踩坑的烦躁了——把项目升到Android Studio 3.1并强制更新Gradle后,外部模块ShareLib死活导不进去,还弹出ExtractAarTransform的报错,试过各种清缓存、调版本都没用对吧?结合你贴出来的配置信息,我给你整理了几个针对性的解决步骤,你可以挨个试:
1. 先揪出大小写不一致的坑
你看settings.gradle里写的是:ShareLib(首字母大写),但app模块的build.gradle依赖里却是:shareLib(小写s):
implementation project(path: ':shareLib', configuration: 'default')
Gradle在Mac/Linux这类系统里是严格区分大小写的,这大概率是导致找不到模块的元凶!把依赖里的名称改成和settings.gradle一致的:ShareLib再说。
2. 修正settings.gradle的路径写法
你的路径用了..//ShareLib//,虽然Windows下双斜杠能跑,但Gradle更推荐用单斜杠或者系统默认分隔符,改成这样更稳妥:
include ':app', ':ShareLib' project(':ShareLib').projectDir = new File('../ShareLib')
避免路径解析时出幺蛾子。
3. 检查ShareLib模块本身的配置
先确认ShareLib自己的build.gradle是标准的Android库配置:
- 开头必须是
apply plugin: 'com.android.library'(不能是com.android.application) - 单独编译
ShareLib模块,确保它能正常生成aar文件,没有自身的编译错误 - 它的
build.gradle里也要有完整的仓库配置(比如google()、jcenter()),不然依赖拉不下来也会影响主项目同步
4. 彻底清缓存重启项目
有时候缓存就是顽固的毒瘤,按这个顺序来:
- 点击Android Studio顶部菜单栏的
File > Invalidate Caches / Restart,选Invalidate and Restart - 手动删掉项目根目录的
.gradle文件夹,还有app和ShareLib模块下的build文件夹 - 重启AS后,执行
File > Sync Project with Gradle Files
5. 调整Gradle插件版本试试
你现在用的是3.1.2,试试升级到同系列的稳定版3.1.4,或者暂时降级到3.0.1,看是不是版本兼容性的问题:
classpath 'com.android.tools.build:gradle:3.1.4'
另外确保buildToolsVersion和compileSdkVersion匹配,你当前compileSdkVersion 26配buildToolsVersion "27.0.3"没问题,但如果换插件版本,最好同步对应版本的Build Tools。
6. 简化依赖配置
如果ShareLib是标准的库模块,没必要加configuration: 'default',直接写就行:
implementation project(':ShareLib')
默认就会引用它的release版aar,多的配置反而可能出问题。
要是以上都没用,你可以先绕开模块导入,把ShareLib-release.aar直接放到app/libs目录下,然后在app的build.gradle里加:
implementation fileTree(dir: 'libs', include: ['*.aar'])
先验证是不是库本身的问题,还是模块导入机制的问题。
内容的提问来源于stack exchange,提问作者firegloves

