首页 > 解决方案 > Onesignal 和 play-services-ads 错误:无法在单个 dex 文件中容纳请求的类

问题描述

我将 OneSignal 添加到 App 并且效果很好,但是当我添加时:

com.google.android.gms:play-services-ads:17.1.1

构建失败:Cannot fit requested classes in a single dex file (# methods: 70355 > 65536)

我搜索然后发现这个https://stackoverflow.com/a/51088321这表明了原因。当我删除play-services-ads这个问题就消失了。我没有得到我应该排除哪个组或模块来解决这个问题,我尝试了这个但没有解决问题:

    implementation ('com.google.android.gms:play-services-ads:17.1.1'){
    transitive = true
    exclude group: "play-services-ads-identifier"
    exclude group: "play-services-basement"
    exclude group: "play-services-measurement-sdk-api"
    exclude module: "play-services-measurement-base"
}

gradlew :app:dependencies相关输出:

|    +--- com.google.android.gms:play-services-ads-base:[17.1.1] -> 17.1.1
|    +--- com.google.android.gms:play-services-ads-identifier:16.0.0 (*)
|    +--- com.google.android.gms:play-services-ads-lite:[17.1.1] -> 17.1.1
|    |    +--- com.google.android.gms:play-services-ads-base:[17.1.1] -> 17.1.1
|    |    +--- com.google.android.gms:play-services-basement:16.0.1 -> 16.1.0 (*)
|    |    \--- com.google.android.gms:play-services-measurement-sdk-api:16.0.3
|    |         +--- com.google.android.gms:play-services-basement:16.0.1 -> 16.1.0 (*)
|    |         \--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
|    +--- com.google.android.gms:play-services-basement:16.0.1 -> 16.1.0 (*)
|    +--- com.google.android.gms:play-services-gass:[17.1.1] -> 17.1.1
|    |    +--- com.google.android.gms:play-services-ads-base:[17.1.1] -> 17.1.1
|    |    \--- com.google.android.gms:play-services-basement:16.0.1 -> 16.1.0 (*)

我使用了 17.1.1,因为 minAPI 是 15。

我不想使用 multidex 支持,因为这不是解决方案。

标签: javaandroidgradledependenciesonesignal

解决方案


推荐阅读