【问题标题】:play-services-base versus -basement dependencies (AAR) in AndroidAndroid 中的 play-services-base 与 -basement 依赖项 (AAR)
【发布时间】:2023-03-11 07:41:01
【问题描述】:

我找到了一个 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 > 或者

这似乎造成了一个巨大的问题。 AndroidJavaException: java.lang.NoSuchMethodError: 一旦在设备上运行。

Android 专家,如果你有“基地”你必须有“地下室”......或者也许反之亦然

确实,WRT play-services-games 或 play-services-plus,也许其中一个/两者以某种方式(或矛盾?)基础/地下室?

【问题讨论】:

  • 如果您在编译后查看 Android Studio 中的 app/build 目录,您会注意到 basement 具有 base 没有的其他类。 IE。它有 zze.class,从 GooglePlayServicesUtil 扩展而来。

标签: android maven unity3d aar prime31


【解决方案1】:

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

【讨论】:

  • 感谢这个令人难以置信的答案!所以事实上,关于第一个文件,因为它有play-services-base,实际上添加play-services-basement 是没有意义的——我理解正确吗?谢谢!
  • 是的,你是对的,如果你已经添加了play-services-base,那么添加play-services-basement是没有意义的。
  • 知道了,谢谢。另一方面,因为它使用 play-services-games,你的意思是我必须包括 play-services-base 和 play-services-drive?还是我误会你了?谢谢...
  • 您不需要显式添加play-services-baseplay-services-drive,因为它们是play-services-games的依赖项,因此会自动添加
  • 如果您是 Google 并且已经到达 base,那么您显然只能通过访问 basement 来更深入:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-27
  • 1970-01-01
  • 2014-05-04
  • 2018-06-27
  • 1970-01-01
相关资源
最近更新 更多