我正在尝试删除所有lint警告但我仍然遇到compile
到implementation
之一的迁移。
如果我改变了这个:
compile fileTree(include: ['*.jar'], dir: 'libs')
到此:
implementation fileTree(include: ['*.jar'], dir: 'libs')
然后应用程序将无法构建,我收到以下错误:
错误:无法解析以下类的超类型。请确保您在类路径中具有所需的依赖项:...未解析的超类型:veg.mediaplayer.sdk.MediaPlayer.MediaPlayerCallback
这是一个错误还是我应该为fileTree做些不同的事情?我找不到任何关于文档的解释:https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html。
我已将所有gradle文件中的所有其他行从compile
更改为implementation
,并且它们都正常工作。
编辑:我还应该注意,这个特定的模块在lib文件夹中有一个jar。对于没有罐子的模块,它可以工作。
编辑2:我注意到,如果有一个罐子,实际上并不总是会发生。我有另一个模块与jar(我创建),它工作正常。 mediaplayersdk.jar必定有问题。
鉴于它只是抱怨从jar文件中实现的回调,我想这就是它被卡住的地方。
我也尝试使用Android Studio 3.1.0-beta1和gradle 4.4,但它没有帮助。
答案 0 :(得分:18)
好的我现在觉得自己像个白痴。我所要做的就是更仔细地阅读文档,我会看到api
相当于compile
并且得到了支持。
使用api
有效!
即。 api fileTree(include: ['*.jar'], dir: 'libs')
答案 1 :(得分:0)
来自Gradle迁移文档
当您的模块配置实现依赖项时,它让Gradle知道模块不希望在编译时将依赖项泄漏给其他模块。
另外
以前,库模块将以非标准方式处理本地JAR的依赖关系,并将它们打包在AAR中。即使在多项目构建中,AAR的消费者也会通过打包版本看到这些JAR文件。
和
库模块不再处理本地JAR。这是为了加快由库模块代码更改引起的增量构建。
因此,如果您要保留任何本地广告,则可能需要使用compile
。但请注意,即将发布的Android插件重要版本中将删除compile
及旧版本。
答案 2 :(得分:-3)
implementation fileTree(dir: 'libs', include: ['*.jar'])
为我工作