无法解决以下问题:Lcom / google / android / gms / location / LocationRequest

时间:2018-07-19 05:49:52

标签: android location

我正在使用

的gradle依赖项
implementation 'com.google.android.gms:play-services-location:15.0.1'

在运行时我遇到错误

java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/location/LocationRequest;

我正在尝试使用LocationRequest来获取经时,当我在一个独立项目中使用此代码时,它可以工作。而且,当我尝试使用相同的代码构建库时,出现了上述错误。

我已经检查过,独立项目和库项目都具有相同的依赖项和版本。

2 个答案:

答案 0 :(得分:0)

这可能是由于 2个原因

第一个可能的原因

直接使用该库时,在build.gradle中使用了implementation方法。 因此,您可以直接在 简单应用模块 中使用它。

将其移至 您的库 并使用与该位置库相同的implementation选项的该位置库 只能由您的图书馆使用。 应用模块不能使用和 ,其中您已经使用您的库

尝试{strong}替换{strong} implementation,以api替换这样的位置库

api 'com.google.android.gms:play-services-location:15.0.1'

有关更多详细信息,请参阅此帖子以了解实现与api-Here


第二个可能的原因

正如您在评论中提到的,它是运行时错误

根据我的观点,这可能是由于 ProGuard造成的混淆

添加该类以保持ProGuard规则

-keep class com.google.android.gms.location.** { *; }

因此,这将停止混淆该位置请求类

答案 1 :(得分:0)

代码现在可以进行以下更改(我仍在寻找爆炸)

在库gradle中编辑为以下依赖项

compileOnly "com.google.android.gms:play-services-location:15.0.1"

并在依赖项下方添加的应用程序gradle文件中

runtimeOnly 'com.google.android.gms:play-services-location:11.6.0'
  • 我的猜测是,由于“ compileOnly”负责在库中添加依赖项,而“ runtimeOnly”负责使用该依赖项,因此代码可以工作并且可以找到LocationRequest类。

P.S adityakamble49在主题中的回答也有所帮助。请尝试该方法,以使其适合您的情况。