【问题标题】:Failed to find target with hash string 'android-25', though android-25 is actually installed尽管实际安装了 android-25,但无法找到带有哈希字符串“android-25”的目标
【发布时间】:2017-05-02 17:14:30
【问题描述】:

我有一个在 OpenStack 中运行的 Ubuntu Xenial VM,我已经从 https://developer.android.com/studio/index.html 下载了最新的 Android SDK 工具 (tools_r25.2.3-linux.zip)。一切都配置得很好:

  • JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
  • ANDROID_HOME=<ANDROID_SDK_PATH>
  • PATH=${PATH}:${ANDROID_HOME}
  • echo "sdk.dir=<ANDROID_SDK_PATH>" > <MY_ANDROID_PROJECT_PATH>/local.properties

但是当尝试执行任务时:./gradlew clean,出现错误:

Preparing "Install Android SDK Build-Tools 25".
Warning: Trying to install into ${ANDROID_HOME}/build-tools/25.0.0/ but package "Android SDK Tools 25.2.4" already exists at ${ANDROID_HOME}. It must be deleted or moved away before installing into a child directory.
Preparing "Install Android SDK Platform 25".
Warning: Trying to install into ${ANDROID_HOME}/platforms/android-25/ but package "Android SDK Tools 25.2.4" already exists at ${ANDROID_HOME}. It must be deleted or moved away before installing into a child directory.

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':demo'.
> Failed to install the following SDK components:
  [Android SDK Build-Tools 25, Android SDK Platform 25]
  Please install the missing components using the SDK manager in Android Studio.

实际上,正如错误日志所述,我已经安装了所需的工具。运行$ANDROID_HOME/bin/sdkmanager --list 显示我安装的包:

Installed packages:
  Path                        | Version | Description                       | Location
  -------                     | ------- | -------                           | -------
  build-tools;25.0.0          | 25.0.0  | Android SDK Build-Tools 25        | build-tools/25.0.0/
  extras;android;m2repository | 41.0.0  | Android Support Repository, re... | extras/android/m2repository/
  platform-tools              | 25.0.2  | Android SDK Platform-Tools 25.0.2 | platform-tools/
  platforms;android-25        | 3       | Android SDK Platform 25, rev 3    | platforms/android-25/
  tools                       | 25.2.4  | Android SDK Tools 25.2.4          | tools/

这里可能有什么问题?我对这里的SDK路径有点怀疑。

【问题讨论】:

    标签: android android-sdk-tools


    【解决方案1】:

    刚刚证实了我的猜测 - 这是由于最新 Android SDK 版本中的新变化。

    感谢上帝,我们有一台时间机器,这样我们就可以回去看看到底发生了什么(从SDK Tools Release Notes 找不到任何线索)。

    我们来看看ANDROID_HOME修改前后的文件结构。

    之前

    android-sdk-linux
    ├── SDK Readme.txt
    ├── add-ons (empty)
    ├── platforms (empty)
    └── tools
        ├── a bunch of preloaded tools
        ├── ...
        └── ...
    

    之后

    tools
    ├── a bunch of preloaded tools
    ├── ...
    └── ...
    

    不再有add-onsplatforms,只有tools 作为新的根目录。

    问题:如果将$ANDROID_HOME 直接设置为解压后的最顶层tools 目录,Gradle 会混淆。

    解决方案:解压新的 SDK 文件后(你会得到一个tools 目录),创建另一个目录(例如android-sdk),并将tools 目录完全移动到清空android-sdk,然后设置环境变量为:

    ANDROID_HOME=/android-sdk
    PATH=${PATH}:${ANDROID_HOME}/tools
    

    简而言之:不要$ANDROID_HOME 直接设置为新的tools 父目录,将其包装在另一个父目录中!

    【讨论】:

    • 换句话说,除非您手动执行一些清理,否则最新的更新会破坏事情?这似乎不是一个会持续很长时间的问题……而且移动东西只会让下一次更新更加混乱。不幸的是,这也发生在 Windows 上。 :(
    • 是的,他们在发行说明中没有提到这种文件结构更改。而当用户下载 SDK 并进行全新设置(使用通常的配置 $ANDROID_HOME 的方式)时,它就会一团糟。对于已经拥有 SDK 的其他用户,只需执行更新,它就不会中断。我有这个问题只是因为我有一个 docker 镜像,它在构建它时会下载 SDK。
    • 现在是 2017 年 5 月 16 日,随着新项目的创建,这些同样愚蠢的问题仍然存在。 Google 的幼儿园软件团队不会像我们其他人一样阅读 Stackoverflow 吗?负责的程序员叫什么名字?平台:在基于 win10 的系统上尝试 A25,并完成所有可能的更新。太蠢了。
    • @carl 这是票:issuetracker.google.com/issues/37130500 实际上,一些 Google 工作人员将票标记为“状态:无法修复(预期行为)”
    • 是的,这为我解决了问题!
    【解决方案2】:

    我刚刚在我的 android 工作室中使用了 Invalidate catches / Restart。它对我有用。

    【讨论】:

      猜你喜欢
      • 2017-03-20
      • 1970-01-01
      • 2018-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 2018-11-23
      • 1970-01-01
      相关资源
      最近更新 更多