虽然实际安装了android-25,但无法找到带有哈希字符串'android-25'的目标

Jin*_* Li 5 android android-sdk-tools

我有一个在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.
Run Code Online (Sandbox Code Playgroud)

实际上,正如错误日志所提到的,我已经安装了所需的工具.运行$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/
Run Code Online (Sandbox Code Playgroud)

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

Jin*_* Li 8

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

感谢上帝,我们有一台时间机器,以便我们可以回去看看究竟发生了什么(无法​​从SDK工具发行说明中找到任何提示).

让我们看一下ANDROID_HOME更改前后的文件结构.

之前:

android-sdk-linux
??? SDK Readme.txt
??? add-ons (empty)
??? platforms (empty)
??? tools
    ??? a bunch of preloaded tools
    ??? ...
    ??? ...
Run Code Online (Sandbox Code Playgroud)

之后:

tools
??? a bunch of preloaded tools
??? ...
??? ...
Run Code Online (Sandbox Code Playgroud)

不再add-onsplatformstools作为新的根目录.

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

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

ANDROID_HOME=/android-sdk
PATH=${PATH}:${ANDROID_HOME}/tools
Run Code Online (Sandbox Code Playgroud)

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