java - 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 支持,因为这不是解决方案。
解决方案
推荐阅读
- android - 我收到消息“一些错误!” 当通过 PayPal 支付 Google 应用内购买时
- math - 3D Mesh:如何检测 Surface/Mesh 是否根据投影平面折叠
- java - 检测方法执行链中的任何方法是否使用特定注释进行了注释
- java - JOLT JSON 转换未按预期工作
- javascript - 如何以角度动态创建 n 级嵌套展开/折叠组件
- eclipse - 如何在 JBoss AS 7 中关闭本地化日志消息
- python - 数据处理,以便在时间序列数据上绘制季节性模式
- angular - Angular 6 和 AutoValidateAntiforgeryToken
- swift - 使用 FirebaseStorage 关闭(UIImage→URL)
- c# - 使用 C# 在 HTML 文件中搜索值的最佳方法