Android 项目从 AS 2.3.x 迁移至 AS 3.0 踩坑记录。
昨天把手里面一个基于 AS 2.3.3 开发的大项目迁移至 AS 3.0.1 的时候,还专门参考了下别的大佬写的踩坑记录博文,比如 这篇。新版本的的 AS 3.x 里的 Gradle 插件相较于 AS 2.x 版本的 Gradle 插件在项目构建脚本语法方面进行了很多破坏性修改,但是有很多参考资料嘛我改的还是比较轻松的。嗯一开始感觉一切正常,话说我这个项目里有即时通讯功能,并且因为时间比较赶我选择了集成第三方的即时通讯 (融云)SDK。
然后在我想把项目从手机里跑起来的时候遇到了一个比较诡异的问题!融云的即时通讯 SDK 集成的时候需要往项目里引入两个 module:
就是上面图1里用黑框框起来的两个 module。
这时我已经按照上面提到的大佬写的博客一步步把 Gradle 脚本改好了,按说应该能正常在手机上把项目跑起来了,不过事实证明我想得太简单了……
注意上面图1中用红框框起来的那个 jar 文件,我在 app 模块儿里有多处用到了里面的类,现在项目 app 模块儿里用到这个 jar 文件里的类的地方一直提示我找不到这个 jar 文件里的类…
这。。。
不用多说这种问题用手指头想想也知道肯定是项目模块 gradle 脚本里的问题…
于是我看了眼 IMKit 模块儿的 build.gradle 脚本,里面最外部的:
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'src/main/libs')
implementation 'com.android.support:support-v4:27+'
implementation project(':IMLib')
}
这里注意第二行对 jar 文件的依赖声明,问题就出在这里,我们把 implementation 改成 compile:
dependencies {
compile fileTree(include: ['*.jar'], dir: 'src/main/libs')
implementation 'com.android.support:support-v4:27+'
implementation project(':IMLib')
}
问题成功解决~
完。