现在我要下载并安装Android SDK和AVD管理器,然后通过UI安装api、工具。有没有办法使这个过程自动化?


当前回答

我也对此感到沮丧,并建立了一个名为com.quittle的Gradle插件。Setup-android-sdk会检测并安装你需要的东西。它可以在Windows, OS X和Linux上工作,如果你用Gradle构建,它不需要任何额外的依赖。

如果你感兴趣,你可以在这里查看我的文档:https://github.com/quittle/gradle-setup-android-sdk

其他回答

我也对此感到沮丧,并建立了一个名为com.quittle的Gradle插件。Setup-android-sdk会检测并安装你需要的东西。它可以在Windows, OS X和Linux上工作,如果你用Gradle构建,它不需要任何额外的依赖。

如果你感兴趣,你可以在这里查看我的文档:https://github.com/quittle/gradle-setup-android-sdk

要回答所有带有'y'的许可证,您可以在脚本中尝试这样做:

(while :
do
  echo 'y'
  sleep 2
done) | android update sdk -u .....

对于新手Android开发人员和经验丰富的Java开发人员来说,即使您克服了前面回答的所有噩梦,也很难知道哪些依赖项。

我的一个同事建议我使用Android Studio(它是基于IntelliJ IDEA的:-),因为上面的噩梦。

我听从了他的建议。

但我不接受默认安装,并试图将其安装在我的软件驱动器中。结果却是一场噩梦。SDK对话框似乎挂起了,一点也不直观。所以我才会来这里。

在阅读了上面的内容后,我再次尝试Studio,这一次它接受了安装的所有默认设置。

您看……它在几个对话中处理了所有SDK依赖项(我猜是核心的),而没有提示,即Ctrl + Shift + S和SDK。

因此,我向新手推荐它。下面是布丁下载后的证明:

我下载并安装的Studio版本:

windows版本:

在它做了好事之后:

这对我没用……

echo "y" | android ....

所以我在这里结束了:

expect -c '
set timeout -1   ;
spawn sudo /opt/android-sdk/tools/android update sdk -u;
expect {
    "Do you accept the license" { exp_send "y\r" ; exp_continue }
    eof
}
'

一个脚本只下载需要的,非{过时的,source, emultor -image, doc}包:

#!/bin/bash
set -e

# cd into where tools/android can be found
if [[ -d "$ANDROID_HOME" ]]; then
  cd "$ANDROID_HOME"
elif [[ -x "$(dirname "$0")/tools/android" ]]; then
  cd "$(dirname "$0")"
else
  echo "FAILED: Cannot find ANDROID_HOME/tools/android"
  exit 1
fi

android () {
  "$(dirname $0)/tools/android" "$@"
}

needed_packages () {
  android list sdk -u -s -e         \
    | grep '^id:'                   \
    | cut -d'"' -f2                 \
    | grep -v 'source'              \
    | grep -v 'sys-img'             \
    | grep -v 'doc'                 \
    | paste -d, -s -
}

main () {
  (while : ; do
  echo 'y'
  sleep 1
  done) | android update sdk -u -s -a -t "$(needed_packages)"
}

main

有些部分摘自其他答案。