Unity Gradle构建失败,找不到Build Tools版本28.0.0。

6

我已经为此问题苦苦挣扎了好几天,但似乎找不到解决方法,下面是完整的错误信息:

CommandInvokationFailure: Gradle build failed. 
C:/Program Files/Java/jdk1.8.0_131\bin\java.exe -classpath "C:\Program Files\Unity2017.2\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\gradle\lib\gradle-launcher-2.14.jar" org.gradle.launcher.GradleMain "assembleDebug"

stderr[

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring root project 'gradleOut'.
> failed to find Build Tools revision 28.0.0

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
]
stdout[

BUILD FAILED

Total time: 2.877 secs
]
exit code: 1
UnityEditor.Android.Command.WaitForProgramToRun (UnityEditor.Utils.Program p, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.GradleWrapper.RunJava (System.String args, System.String workingdir, UnityEditor.Android.Progress progress)
Rethrow as GradleInvokationException: Gradle build failed
UnityEditor.Android.GradleWrapper.RunJava (System.String args, System.String workingdir, UnityEditor.Android.Progress progress)
UnityEditor.Android.GradleWrapper.Run (System.String workingdir, System.String task, UnityEditor.Android.Progress progress)
UnityEditor.Android.PostProcessor.Tasks.BuildGradleProject.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

这是我的gradle.build内容:

// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN
buildscript {
    repositories {
        jcenter()
    }

    dependencies {

        classpath 'com.android.tools.build:gradle:2.1.0'
    }
}

allprojects {
   repositories {
      flatDir {
        dirs 'libs'
      }
   }
}

apply plugin: 'com.android.application'

dependencies {
    compile 'com.android.support:multidex:1.0.1'
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile(name: 'android.arch.core.runtime-1.1.0', ext:'aar')
    compile(name: 'android.arch.lifecycle.livedata-core-1.1.0', ext:'aar')
    compile(name: 'android.arch.lifecycle.runtime-1.1.0', ext:'aar')
    compile(name: 'android.arch.lifecycle.viewmodel-1.1.0', ext:'aar')
    compile(name: 'cardview-v7-25.3.1', ext:'aar')
    compile(name: 'com.android.support.animated-vector-drawable-28.0.0-alpha1', ext:'aar')
    compile(name: 'com.android.support.appcompat-v7-28.0.0-alpha1', ext:'aar')
    compile(name: 'com.android.support.asynclayoutinflater-28.0.0-alpha1', ext:'aar')
    compile(name: 'com.android.support.cardview-v7-28.0.0-alpha1', ext:'aar')
    compile(name: 'com.android.support.coordinatorlayout-28.0.0-alpha1', ext:'aar')
    compile(name: 'com.android.support.cursoradapter-28.0.0-alpha1', ext:'aar')
    compile(name: 'com.android.support.customtabs-28.0.0-alpha1', ext:'aar')
    compile(name: 'com.android.support.customview-28.0.0-alpha1', ext:'aar')
    compile(name: 'com.android.support.documentfile-28.0.0-alpha1', ext:'aar')
    compile(name: 'com.android.support.drawerlayout-28.0.0-alpha1', ext:'aar')
    compile(name: 'com.android.support.interpolator-28.0.0-alpha1', ext:'aar')
    compile(name: 'com.android.support.loader-28.0.0-alpha1', ext:'aar')
    compile(name: 'com.android.support.localbroadcastmanager-28.0.0-alpha1', ext:'aar')
    compile(name: 'com.android.support.percent-28.0.0-alpha1', ext:'aar')
    compile(name: 'com.android.support.print-28.0.0-alpha1', ext:'aar')
    compile(name: 'com.android.support.recyclerview-v7-28.0.0-alpha1', ext:'aar')
    compile(name: 'com.android.support.slidingpanelayout-28.0.0-alpha1', ext:'aar')
    compile(name: 'com.android.support.support-compat-28.0.0-alpha1', ext:'aar')
    compile(name: 'com.android.support.support-core-ui-28.0.0-alpha1', ext:'aar')
    compile(name: 'com.android.support.support-core-utils-28.0.0-alpha1', ext:'aar')
    compile(name: 'com.android.support.support-fragment-28.0.0-alpha1', ext:'aar')
    compile(name: 'com.android.support.support-media-compat-28.0.0-alpha1', ext:'aar')
    compile(name: 'com.android.support.support-v4-28.0.0-alpha1', ext:'aar')
    compile(name: 'com.android.support.support-vector-drawable-28.0.0-alpha1', ext:'aar')
    compile(name: 'com.android.support.swiperefreshlayout-28.0.0-alpha1', ext:'aar')
    compile(name: 'com.android.support.viewpager-28.0.0-alpha1', ext:'aar')
    compile(name: 'com.github.vungle.vungle-android-sdk-5.3.0', ext:'aar')
    compile(name: 'com.google.ads.mediation.unity-2.1.2.0', ext:'aar')
    compile(name: 'com.google.ads.mediation.vungle-5.3.0.0', ext:'aar')
    compile(name: 'com.google.android.gms.play-services-ads-11.8.0', ext:'aar')
    compile(name: 'com.google.android.gms.play-services-ads-license-11.8.0', ext:'aar')
    compile(name: 'com.google.android.gms.play-services-ads-lite-11.8.0', ext:'aar')
    compile(name: 'com.google.android.gms.play-services-ads-lite-license-11.8.0', ext:'aar')
    compile(name: 'com.google.android.gms.play-services-base-11.8.0', ext:'aar')
    compile(name: 'com.google.android.gms.play-services-base-license-11.8.0', ext:'aar')
    compile(name: 'com.google.android.gms.play-services-basement-11.8.0', ext:'aar')
    compile(name: 'com.google.android.gms.play-services-basement-license-11.8.0', ext:'aar')
    compile(name: 'com.google.android.gms.play-services-gass-11.8.0', ext:'aar')
    compile(name: 'com.google.android.gms.play-services-gass-license-11.8.0', ext:'aar')
    compile(name: 'com.google.android.gms.play-services-gcm-11.8.0', ext:'aar')
    compile(name: 'com.google.android.gms.play-services-gcm-license-11.8.0', ext:'aar')
    compile(name: 'com.google.android.gms.play-services-iid-11.8.0', ext:'aar')
    compile(name: 'com.google.android.gms.play-services-iid-license-11.8.0', ext:'aar')
    compile(name: 'com.google.android.gms.play-services-location-11.8.0', ext:'aar')
    compile(name: 'com.google.android.gms.play-services-location-license-11.8.0', ext:'aar')
    compile(name: 'com.google.android.gms.play-services-tasks-11.8.0', ext:'aar')
    compile(name: 'com.google.android.gms.play-services-tasks-license-11.8.0', ext:'aar')
    compile(name: 'com.sglib.easymobile.easy-mobile-1.0.2', ext:'aar')
    compile(name: 'com.unity3d.ads.unity-ads-2.1.2', ext:'aar')
    compile(name: 'common', ext:'aar')
    compile(name: 'constraint-layout-1.0.2', ext:'aar')
    compile(name: 'GoogleAIDL', ext:'aar')
    compile(name: 'GooglePlay', ext:'aar')
    compile(name: 'onesignal-unity', ext:'aar')
    compile(name: 'percent-25.3.1', ext:'aar')
    compile(name: 'unity-ads', ext:'aar')
    compile project(':answers')
    compile project(':beta')
    compile project(':crashlytics')
    compile project(':crashlytics-wrapper')
    compile project(':fabric')
    compile project(':fabric-init')
    compile project(':GoogleMobileAdsPlugin')
    compile project(':OneSignalConfig')
}

android {
    compileSdkVersion 21
    buildToolsVersion '28.0.0'

    defaultConfig {
        multiDexEnabled true
        targetSdkVersion 21
        applicationId 'com.chorusworldwide.upjump'
    }

    lintOptions {
        abortOnError false
    }

    aaptOptions {
        noCompress '.unity3d', '.ress', '.resource', '.obb'
    }


    buildTypes {
        debug {
            minifyEnabled false
            useProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'
            jniDebuggable true
        }
        release {
            minifyEnabled true
            useProguard true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'

        }
    }

}

出于某种原因,它一直将buildToolsVersion覆盖为“'28.0.0'”,即使我特别将构建设置设置为此值:
我还添加了自己的gradle.build文件到Plugin / Android中,该文件与不同的BuildToolsVersion设置为27.0.0的相同文件,但是位于项目内的Temp文件夹中的build.gradle文件仍将其重置为“28”,
最后这是我的SDK管理器的一些截图:
部分安装的Android(P)是因为这个原因(我不必全部安装吧?):
SDK工具:
更新:从构建工具中删除28.0.0-rc1之后,build.gradle开始使用版本27进行构建,但现在我收到一个新错误:
CommandInvokationFailure: Gradle build failed.
C:/Program Files/Java/jdk1.8.0_131\bin\java.exe -classpath "C:\Program Files\Unity2017.2\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\gradle\lib\gradle-launcher-2.14.jar" org.gradle.launcher.GradleMain "assembleDebug"
stderr[
C:\Projects\UpJump\Temp\gradleOut\build\intermediates\exploded-aar\com.android.support.appcompat-v7-28.0.0-alpha1\res\values-v28\values-v28.xml:5:5-8:13: AAPT: No resource found that matches the given name (at 'dialogCornerRadius' with value '?android:attr/dialogCornerRadius').

FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':processDebugResources'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'D:\DevTools\New_SDK\build-tools\27.0.0\aapt.exe'' finished with non-zero exit value 1
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
]

1
尝试从Android SDK中删除构建工具28.0.0-rc1。 - Hamid Yusifli
@Shaman 刚刚完成了,请查看 OP 更新。谢谢! - alaslipknot
请查看类似的问题。https://dev59.com/JKnka4cB1Zd3GeqPPop8#49125433 - Saw Thinkar Nay Htoo
1
这是我解决问题的步骤之一,但我还需要一个: 1)在您的项目中,转到“编辑”>“查找”>“路径中查找...” 2)搜索“buildToolsVersion”(不带引号)。 3)将所有版本“buildToolsVersion'28”的实例替换为“buildToolsVersion'27”。 4)获得利润。 - AWrightIV
1
@AWrightIV 抱歉回复晚了,但是在Unity中“find”对我来说没有任何作用,当我选择它时什么也没有显示出来,我错过了什么吗? - alaslipknot
1
@alasipknot 对不起,我应该明确说明:我是指在Android Studio中使用“查找”功能。这假定您已经导出了项目,但如果您在文件系统中搜索“buildToolsVersion”以查找项目目录,则仍然可以编辑文件而无需导出。您应该会找到build.gradle文件。按照上述方法进行编辑。我应该先将其拆分为答案,所以现在我会这样做。 - AWrightIV
4个回答

5
AWrightIV的回答让我有了很大的帮助,但对于我来说,解决方案并不复杂。当你在播放器设置中打开“使用自定义gradle文件”时,Unity会创建一个名为mainTemplate.gradle的文件,我生成了这个文件并更改了buildToolsVersion行。

Assets/Plugins/Android/mainTemplate.gradle中的原始行:

buildToolsVersion '**BUILDTOOLS**'

新的行:

buildToolsVersion '27'


3

解决了!

我的主要问题在这里:

enter image description here

看到这些28.0.0-alpha文件,问题是由它们引起的,我非常确定,因为当我回滚(幸好我在使用版本控制)时,主要区别之一是这些库不在那里,我删除了它们,但由于“Play服务解析器”,它们仍然会回来,所以我认为它与我在Android SDK中安装的任何版本无关,而且它与一个插件100%相关。
我创建了一个新项目,导入了Unity的GoogleAdsMediation(这是最重要的插件),并进行了“解决”操作,根本没有“28”个文件,所以不是谷歌插件,我继续使用我们拥有的所有插件进行操作。 导入->删除所有库->强制解决。 直到我找到了罪魁祸首,那就是OneSignal,他们的依赖配置(或其他东西)迫使解析器导入这些“28.0.0-alpha”库,我删除了该版本的OneSignal,导入了旧版本(从我们项目的旧版本),问题解决了:)
希望这可以帮助您。
干杯!

我也遇到了这个问题。我找到了这个链接https://forum.unity.com/threads/2017-3-new-gradle-error.522427/,建议将所有构建工具删除到26。 - CuriousOne
尽管这是一个决定性的决策,但我删除了我的插件文件夹,然后安卓解析器只下载了它所需的内容。问题得到了彻底解决!(在更新谷歌广告和播放服务资产后,我开始遇到这个问题) - Bichodbz

2

在类似问题中,@SawThinkarNayHtoo提到的答案可以帮到你。这是那个链接:将Vufoira场景导入本地android应用

要点就是你需要导出你的Unity项目并针对Android进行目标定位。其他地方有很好的教程来说明如何做到这一点,但是这里是上面回答的链接: 将Unity项目导出到Android Studio

按照以上步骤后,我还需要再添加一步:

  1. 在Android Studio中打开已导出的项目,然后进入“编辑” > “查找” > “路径中查找…”
  2. 搜索“buildToolsVersion”(不加引号)。
  3. 将所有版本为“buildToolsVersion '28”的实例替换为“buildToolsVersion '27”。

如果必要,你也可以在不导出的情况下编辑文件。在文件系统中搜索你的项目目录中的“buildToolsVersion”。你应该会找到build.gradle文件。像上面那样进行编辑即可。


谢谢,自从我发布这个问题以来已经过去了一个星期,现在我不再被强制使用“28”版本,我只是按照你说的做了,我的所有buildToolsVersion(总共有4个)都是27.0.1,compileSdkVersion是27,依赖项是gradle:3.0.1,但是当我构建时仍然会出现类似的错误,我应该将27.0.1更改为27.0.0吗?谢谢。 - alaslipknot
我的疑问在这里的依赖关系:https://pastebin.com/SwmbXNy4。当涉及到本地Android开发时,我完全是个新手,请您检查是否存在任何重复或“未混合”版本?因为现在当我从Android Studio构建时,会出现以下错误:https://pastebin.com/803GkrLy。请注意,multiDexEnabled设置为true。再次感谢! - alaslipknot
这是一个奇怪的问题 https://i.imgur.com/aTPS8qh.png,尽管我的项目根本没有引用v28,但我仍然得到了android.support v28(最后一个链接中的前3个jar)。 - alaslipknot
这里还有一堆:https://i.imgur.com/ak8M2Wm.png 现在我真的很困惑。 - alaslipknot
好的,显然28alpha的使用与我的SDK管理器无关,而是由Unity内部的“Play Services Resolver”引起的。每当发生解析时,它会下载一堆新库,包括这些28alpha库:https://i.imgur.com/dqtl9pX.png - alaslipknot
@alaslipknot 我不熟悉那个插件,但我希望你已经找到了解决构建问题的方法。 - AWrightIV

0

我遇到了同样的问题,直到我下载了最新的29版sdk构建工具后才出现了这个问题。我从我的sdks中删除了构建工具,问题就解决了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接