Android中的play-services-base与-basement依赖关系(AAR) [英] play-services-base versus -basement dependencies (AAR) in Android

查看:269
本文介绍了Android中的play-services-base与-basement依赖关系(AAR)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我找到了一个XML文件GoogleDependencyFlurryPlugin.xml

<dependencies>
<dependency><groupId>com.google.android.gms</groupId><artifactId>play-services-base</artifactId><version>8.4+</version></dependency>
<dependency><groupId>com.google.android.gms</groupId><artifactId>play-services-basement</artifactId><version>8.4+</version></dependency>
</dependencies>

以及一个xml文件GoogleDependencyPlayGameServicesPlugin.xml

<dependencies>
<dependency><groupId>com.google.android.gms</groupId><artifactId>play-services-games</artifactId><version>8.4+</version></dependency>
<dependency><groupId>com.google.android.gms</groupId><artifactId>play-services-plus</artifactId><version>8.4+</version></dependency>
</dependencies>

现在,以前的文件曾经只有

play-services-base> OR<播放服务地下室

这似乎引起了很大的问题. AndroidJavaException:java.lang.NoSuchMethodError:一旦在设备上运行.

Android专家,如果您拥有基础" 您必须具有地下室" ...或者也许反之亦然?

确实是WRT的Play-Services-Games或Play-Services-Plus,也许其中之一/两者都以某种方式(或与之矛盾)取决于基础/地下室?

解决方案

play-services-basementplay-services-base的依赖项.它是在Google Play服务版本8.1.0中引入的,以帮助减小play-services-adsplay-services-analytics之类的其他某些库的大小.

添加play-services-base时,还会自动添加play-services-basement,因此无需添加显式依赖项.

您可以检查本地Google存储库中每个库的依赖关系.

例如,对于库play-services-games,打开位于此处的文件pom文件:

extras/google/m2repository/com/google/android/gms/play-services-games/8.4.0/play-services-games-8.4.0.pom

这是文件的内容:

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.google.android.gms</groupId>
  <artifactId>play-services-games</artifactId>
  <version>8.4.0</version>
  <packaging>aar</packaging>
  <dependencies>
    <dependency>
      <groupId>com.google.android.gms</groupId>
      <artifactId>play-services-base</artifactId>
      <version>8.4.0</version>
      <scope>compile</scope>
      <type>aar</type>
    </dependency>
    <dependency>
      <groupId>com.google.android.gms</groupId>
      <artifactId>play-services-drive</artifactId>
      <version>8.4.0</version>
      <scope>compile</scope>
      <type>aar</type>
    </dependency>
  </dependencies>
</project>

您可以看到play-services-games取决于play-services-baseplay-services-drive

I found an xml file GoogleDependencyFlurryPlugin.xml

<dependencies>
<dependency><groupId>com.google.android.gms</groupId><artifactId>play-services-base</artifactId><version>8.4+</version></dependency>
<dependency><groupId>com.google.android.gms</groupId><artifactId>play-services-basement</artifactId><version>8.4+</version></dependency>
</dependencies>

and indeed an xml file GoogleDependencyPlayGameServicesPlugin.xml

<dependencies>
<dependency><groupId>com.google.android.gms</groupId><artifactId>play-services-games</artifactId><version>8.4+</version></dependency>
<dependency><groupId>com.google.android.gms</groupId><artifactId>play-services-plus</artifactId><version>8.4+</version></dependency>
</dependencies>

Now, at one point the former file had ONLY

play-services-base > OR < play-services-basement

and that seemed to cause a huge problem. AndroidJavaException: java.lang.NoSuchMethodError: once running on a device.

Android experts, is it the case that if you have "base" you must have "basement" ... or perhaps vice versa?

Indeed, WRT play-services-games or play-services-plus, perhaps one/both of those depend in some way (or contradict?) base/basement?

解决方案

The library play-services-basement is a dependency of play-services-base. It was introduced in Google Play Service version 8.1.0 to help to reduce the size of some other libraries like play-services-ads and play-services-analytics.

When you add play-services-base you automatically add also play-services-basement so it's not necessary to add the explicit dependency.

You can check the dependencies of every single library in your local Google repository.

For example for the library play-services-games open the file pom file that is located here:

extras/google/m2repository/com/google/android/gms/play-services-games/8.4.0/play-services-games-8.4.0.pom

this is the content of the file:

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.google.android.gms</groupId>
  <artifactId>play-services-games</artifactId>
  <version>8.4.0</version>
  <packaging>aar</packaging>
  <dependencies>
    <dependency>
      <groupId>com.google.android.gms</groupId>
      <artifactId>play-services-base</artifactId>
      <version>8.4.0</version>
      <scope>compile</scope>
      <type>aar</type>
    </dependency>
    <dependency>
      <groupId>com.google.android.gms</groupId>
      <artifactId>play-services-drive</artifactId>
      <version>8.4.0</version>
      <scope>compile</scope>
      <type>aar</type>
    </dependency>
  </dependencies>
</project>

As you can see play-services-games depends on play-services-base and play-services-drive

这篇关于Android中的play-services-base与-basement依赖关系(AAR)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆