现在我要下载并安装Android SDK和AVD管理器,然后通过UI安装api、工具。有没有办法使这个过程自动化?
当前回答
对于那些还在寻找下载所有Android软件包的方法的人,我已经写了一个脚本来完成这个任务。它将下载所有未过时的包。
#!/binbash
# Install all non-obsolete Android SDK packages.
# author: Tai Le Tien (letientai299 at gmail.com)
function install_sdk {
android update sdk -u -s -a -t "$1"
}
function fetch_non_obsoled_package_indices {
# Fetch the SDK list using non-https connections
android list sdk -u -s -a |\
# Filter obsoleted packages
sed '/\(Obsolete\)/d' |\
# Filter to take only the index number of package
sed 's/^[ ]*\([0-9]*\).*/\1/' |\
# Remove the empty lines
sed -n 's/^[^ $]/\0/p'
}
for package_index in $(fetch_non_obsoled_package_indices)
do
echo "====================================================================="
echo "Start to install package: ${package_index}"
echo "====================================================================="
# Auto accept license
echo -e "y" | install_sdk "${package_index}"
echo
echo
done
你也可以在我的GitHub存储库中看到它
优点:
不依赖期望。 无头的。
缺点:
你仍然需要手动安装基本的SDK,并将android放到你的路径中。 该脚本只能在Unix上运行。
其他回答
要回答所有带有'y'的许可证,您可以在脚本中尝试这样做:
(while :
do
echo 'y'
sleep 2
done) | android update sdk -u .....
我用这个在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
一个脚本只下载需要的,非{过时的,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
有些部分摘自其他答案。
在更新的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许可证。
对于新手Android开发人员和经验丰富的Java开发人员来说,即使您克服了前面回答的所有噩梦,也很难知道哪些依赖项。
我的一个同事建议我使用Android Studio(它是基于IntelliJ IDEA的:-),因为上面的噩梦。
我听从了他的建议。
但我不接受默认安装,并试图将其安装在我的软件驱动器中。结果却是一场噩梦。SDK对话框似乎挂起了,一点也不直观。所以我才会来这里。
在阅读了上面的内容后,我再次尝试Studio,这一次它接受了安装的所有默认设置。
您看……它在几个对话中处理了所有SDK依赖项(我猜是核心的),而没有提示,即Ctrl + Shift + S和SDK。
因此,我向新手推荐它。下面是布丁下载后的证明:
我下载并安装的Studio版本:
windows版本:
在它做了好事之后:
推荐文章
- 设置TextView文本从html格式的字符串资源在XML
- 如何允许所有网络连接类型HTTP和HTTPS在Android(9)馅饼?
- Android加载JS包失败
- Android Studio, logcat在应用程序关闭后清理
- 在android中从上下文获取活动
- 无法解析主机"<URL here>"没有与主机名关联的地址
- getActivity()在Fragment函数中返回null
- 按钮背景是透明的
- 在Mac OS X上哪里安装Android SDK ?
- 我如何获得图像缩放功能?
- 在Android应用程序中显示当前时间和日期
- BottomSheetDialogFragment的圆角
- 在应用程序启动时出现“无法获得BatchedBridge,请确保您的bundle被正确打包”的错误
- 我如何改变默认对话框按钮的文本颜色在安卓5
- 更改单选按钮的圆圈颜色