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-amd64ANDROID_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路径有点怀疑.
刚刚证实了我的推测 - 这是由于最新的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-ons或platforms仅tools作为新的根目录.
问题:如果将$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父目录,将其包装在另一个父目录中!
| 归档时间: |
|
| 查看次数: |
6867 次 |
| 最近记录: |