无法找到哈希字符串为“android-25”的目标。

98

我有Android Studio 2.2。我想要打开一个项目,但是却出现了错误“Failed to find target with hash string 'android-25'” 。在错误信息下方我看到了一个链接:“Install missing platform(s) and sync project”。如果我点击这个链接,我会得到另一个错误提示:

“The following packages are not available: - Package id platforms;android-25”。

在Android SDK工具中,我可以看到已经安装了“Android 7.0”(API级别24)。在检查关于Android版本及其API级别的详细信息后,我发现Android Nougat拥有API级别24-25。我想知道如何将SDK从API24更新到25?


如果在SDK管理器中找不到API级别为25的SDK,则可以将compileSdkVersion,buildToolsVersion和targetSdkVersion设置为API级别24,或立即更新Android Studio 2.2.2。 - kimkevin
将Android Studio更新至2.2.3版本。 - phnmnn
我想知道为什么它强制用户更新?同时,生产代码本身并不是每个人都使用最新版本... - gumuruh
10个回答

125

您不需要更新任何东西。只需从Android SDK管理器中下载API 25的SDK,或者启动独立的Android SDK管理器即可。错误是由于缺少平台而不是缺少工具引起的。Android SDK Manager Android Studio 2.2.2


1
我知道可以通过SDK管理器下载API 25,但是SDK管理器没有显示API 25。我在SDK管理器中没有看到API 25被列出,也无法选择新的API。 - KurioZ7
2
我在Ubuntu中遇到了相同的问题。我该如何使用命令行安装? - Moses Liao GZ
1
在Android Studio 2.3中,“启动独立SDK管理器”链接已被删除。我无法通过Android SDK管理器安装25。我该怎么办? - Zolbayar
我该如何将Android更改为使用其他API级别而不是25? - Ashok R
1
这对大多数人来说可能很明显,但Failed to find target with hash string 'android-25'中的“25”是指API级别,而不是“Android 2.x(Blah)”包版本名称。这让我困惑了一段时间。 - Richard Dingwall
显示剩余6条评论

29

嗯,我曾经遇到这个问题,但最终我找到了解决方法。

问题出在这里:
["安装缺失平台并同步项目"(链接)无法使用且gradle同步失败]

问题来源:只需查看app -> src-build.gradle文件,您将找到以下参数:

  1. compileSdkVersion 25

  2. buildToolsVersion "25.0.1"

  3. targetSdkVersion 25

注意:您可能会发现这些参数具有不同的值,例如compileSdkVersion 23等。

build.gradle中的这些参数会创建错误,因为它们的值与您当前的SDK版本不兼容。

解决此错误的方法很简单,请在Android Studio中打开一个新项目,在该新项目中转到应用程序 -> src-build.gradle

在新项目的build.gradle文件中找到这些参数:

enter image description here

在我的情况下,它们是:
compileSdkVersion "26"    
buildToolsVersion "26.0.1"
targetSdkVersion 26

现在从您的新项目build.gradle文件中复制这些参数,并将它们发布到具有错误的另一个项目的同一文件中。

如果问题仍然存在,请尝试查找是否存在其他build.gradle文件。您还可以在搜索中查找25(Ctrl + Shift + F,显示整个单词)。 - CoolMind

4

我遇到了类似的问题

1:我尝试使用上面标记为正确答案的方法进行解决,但是我无法找到系统设置,这真是很奇怪(在MacBook上)。

大多数情况下,这种错误和问题是由于将您的旧gradle文件替换为其他gradle文件而导致的,因此gradle无法正确同步,构建项目时就会出现问题。该问题基本上与平台工具的不同步有关。

解决方案a:转到“文件”,然后到您的项目结构-模块-app-属性-build tool version-点击所需选项(如果所需的build tool version不在,请选择其他版本)。这将同步grade文件,现在您可以转到gradle并根据需要更改目标版本和build tool version,系统会提示您下载所需的平台工具进行同步,然后单击“安装工具版本”并让项目构建。

解决方案b:如果您能获得系统设置选项并安装平台工具,请尝试Anuja Ans的建议。


2

在运行我的Android项目的gradle build时,我遇到了相同的异常。

原因:java.lang.IllegalStateException: 无法找到哈希字符串为“android-27”的目标

这个问题与您为Android Studio启用的Android SDK版本有关。请从附加的屏幕中找到此问题的解决方案。 enter image description here


非常清晰的解释。这帮助我解决了我的问题。 - James Selvakumar

2

确保您的计算机已连接到互联网,然后单击附带错误消息的链接,例如“安装缺少的平台并同步项目”。如果您的计算机配置较低,请等待几秒钟,它将弹出一个名为SDK快速修复安装的窗口,从那里一切都很简单。


1

默认的Gradle版本3.3可能存在一些错误,我切换到Gradle 3.5后一切都正常了。


1

您可以打开SDK独立版,方法是进入安装目录,右键单击SDK Manager.exe文件,然后选择以管理员身份运行。希望这能帮到您。


1
我在Android-28上遇到了相同的错误。在SDK管理器 - SDK平台中,它向我显示Android API 28已部分安装且没有更多更新可用。所以我从SDK工具中更新了ANDROID-SDK-BUILD-TOOLS,并重新启动项目。这将起作用。这可能对其他遇到相同问题的人有所帮助。

1
似乎只有我这么笨拙,因为我还没有找到我需要的解决方案。
我正在开发一个多模块项目,因此基本的Android模块配置被提取到单个Gradle脚本中。所有具体版本的SDK和库也都在一个脚本中提取出来。
一个包含版本信息的脚本看起来像这样:
...

ext.androidVersions = [
    compile_sdk_version     : '27',
    min_sdk_version         : '19',
    target_sdk_version      : '27',
    build_tool_version      : '27.0.3',
    application_id          : 'com.test.test',
]

...

由于我不习惯Groovy语法,我的眼睛没有注意到编译、最小化和目标SDK的值不是整数,而是字符串!因此,编译器正确地抱怨无法找到匹配哈希字符串“27”的SDK版本。

因此,解决方案是将SDK版本更改为整数: ...

ext.androidVersions = [
    compile_sdk_version     : 27,
    min_sdk_version         : 19,
    target_sdk_version      : 27,
    build_tool_version      : '27.0.3',
    application_id          : 'com.test.test',
]

...

0

我在使用android-29时遇到了类似的问题。我的问题是因为当AS解压缩一个已下载的SDK时,我停止了它。为了解决这个问题,需要禁用gradle离线模式,然后与gradle文件同步。您可能需要设置代理并启用它。


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