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


当前回答

要在Windows上自动化sdkmanager.bat——license提示符(假设您正在通过自动化安装构建基础设施)…不要运行它。不要浪费时间试图弄清楚如何将y插入其中。我试着;可怜的失败。

相反,自己运行一次,并注意它会生成文件到C:\android\android-sdk\licenses(在这里您正在运行C:\android\android-sdk\tools\bin\sdkmanager.bat -您的安装根可能不同)。

获取这些文件,并将它们放在您可以在自动设置脚本中获取它们的地方。就我个人而言,Ansible是我的毒药,所以

# Note to future-us:
# These are magical files generated by running `c:/android/android-sdk/tools/bin/sdkmanager.bat --licenses`
# This, delightfully, is interactive, and wants to _actually_ read the keyboard buffer.
# That's reputedly possible via SendKeys. I elected to not try that.
# So, instead:
# 1) remote to an instance like a cave-dweller
# 2) run `c:/android/android-sdk/tools/bin/sdkmanager.bat --licenses` in a prompt.
# 3) _actually type_ `y` however many godforsaken times you need to.
# 4) meticulously harvest `c:/android/android-sdk/licenses/*` to this task.
#    (you don't need the newline that they thoughtfully put before the hash in each file).
- name: set up android licenses by hand
  win_lineinfile:
    path: c:/android/android-sdk/licenses/{{ item.name }}
    line: "{{ item.line }}"
    create: true
  with_items:
    - {name: "android-googletv-license", line: "SOME HASH"}
    - {name: "android-sdk-license", line: "SOME OTHER HASH"}
    ...

其他回答

我也对此感到沮丧,并建立了一个名为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 .....

这对我没用……

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
}
'

在更新的Android版本(例如25.2.5)中,我们应该使用sdkmanager(而不是Android命令)。

安装包示例:

android-sdk/tools/bin/sdkmanager "extras;android;m2repository"

命令获取所有可用包的列表:

android-sdk/tools/bin/sdkmanager --verbose --list

此网页列出了SDK-tools的下载链接:

这里有一个链接到一个开源存储库Docker -android,它可以在Docker镜像中安装android。

你也可以在这个SO问题中找到答案:自动接受所有有用的SDK许可证。

我用这个在Travis CI上安装和更新SDK:

curl --location http://dl.google.com/android/android-sdk_r22.3-linux.tgz | tar -x -z -C $HOME
export ANDROID_HOME=$HOME/android-sdk-linux
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
( sleep 5 && while [ 1 ]; do sleep 1; echo y; done ) | android update sdk --no-ui --filter platform-tool,android-19,sysimg-19,build-tools-19.0.1