我似乎无法在Android Studio 3.0.1上为我的应用构建gradle(生成apk作品)。下面是构建输出。
Error:FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:preDebugAndroidTestBuild'.
> Conflict with dependency 'com.google.firebase:firebase-messaging' in project ':app'.
Resolved versions for app (15.0.2) and test app (12.0.1) differ. See https://d.android.com/r/tools/test-apk-dependency-conflicts.html for details.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 23s
Here是build.gradle文件的内容。
更新21.8.2018:
我注意到在外部库中,我有冲突
我发现,即使gradle产生冲突错误,我也可以生成apk(构建APK)。删除gradle错误的方法是删除/注释此行:
implementation 'com.google.android.gms:play-services-places:15.0.1'
,但APK无法编译。它曾经可以正常工作,但我意识到在将Firebase包含在使用同一Android Studio的另一个项目(基于cordova的Android应用程序)中之后,可能会发生此问题。我的其他同事的机器上不会发生此问题。我该如何解决呢?谢谢
答案 0 :(得分:0)
请发布您的build.gradle文件。但是我没有看到是因为您有implementation
和testImplementation
的{{1}}
答案 1 :(得分:0)
尝试使用以下配置强制您的Firebase依赖版本
std::vector<int *>intList;
int *a = new int;
*a = 3;
int *b = new int;
*b = 2;
int *c = new int;
*c = 1;
intList.push_back(a);
intList.push_back(b);
intList.push_back(c);
std::vector<int *>::iterator it;
for (it = intList.begin(); it != intList.end();)
{
int *a = (int*)*it;
if ((*a) == 2)
{
delete a;
intList.erase(it);
}
else
{
++it;
}
}
答案 2 :(得分:0)
它看起来像是传递依赖问题。 com.google.android.gms:play-services
和com.onesignal:OneSignal
都使用com.google.firebase:firebase-messaging
,但是它们可能正在导入不同的版本。我建议升级以使用这些库的最新版本。
答案 3 :(得分:0)
似乎有两个库依赖于firebase消息传递库,并且它们依赖于不同的版本。要找出它们是什么,请转到Android Studio中的“终端”窗口,然后运行以下命令:
./ gradlew app:依赖项
这将以树状结构显示项目中的所有依赖项。一旦检测到哪些库添加了重复的库,就可以尝试以下方法之一:
1)检查build.gradle中其他版本的父依赖项,它们是否都使用相同版本的可传递重复依赖项。
2)从父依赖项中排除具有较低版本的依赖项。示例:
implementation('com.example.abc:def:1.0.0') {
exclude group: 'com.google.firebase', module: 'firebase-messaging'
}
3)实施带有解决方案策略的固定版本:
configurations.all {
resolutionStrategy {
force com.google.firebase:firebase-messaging:15.0.2
}
}
答案 4 :(得分:0)
依赖项 OneSignal 正在使用play-service
的旧版本。
您可以通过以下方式解决此问题。
play-service
,并强制使用您正在使用的最新版本。 (如@gizembrh answer)。 (我不建议,因为OneSignal的代码可能会因新的播放服务而崩溃)play-service
版本降级为与OneSignal相同的版本。 (我认为最简单的)我认为第三种选择最适合您。因为您只需要降级播放服务版本。参见 OneSignal build.gradle
play-service version
def playServicesVersion = '12.0.0'
implementation "com.google.android.gms:play-services-places:$playServicesVersion"
implementation "com.google.android.gms:play-services-maps:$playServicesVersion"
也请在您的项目级别 build.gradle 中使用以下版本的google-services
。请参见 OneSignal build.gradle
google-services version。
classpath 'com.google.gms:google-services:4.0.1'
如果您在gradle的两项更改中都做到了这一点,您将再也不会遇到此错误。