现在我要下载并安装Android SDK和AVD管理器,然后通过UI安装api、工具。有没有办法使这个过程自动化?
当前回答
要回答所有带有'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
有些部分摘自其他答案。
这对我没用……
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
}
'
要回答所有带有'y'的许可证,您可以在脚本中尝试这样做:
(while :
do
echo 'y'
sleep 2
done) | android update sdk -u .....
在更新的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许可证。
推荐文章
- 警告:API ' variable . getjavacompile()'已过时,已被' variable . getjavacompileprovider()'取代
- 安装APK时出现错误
- 碎片中的onCreateOptionsMenu
- TextView粗体通过XML文件?
- 如何使线性布局的孩子之间的空间?
- DSL元素android.dataBinding。enabled'已过时,已被'android.buildFeatures.dataBinding'取代
- ConstraintLayout:以编程方式更改约束
- PANIC: AVD系统路径损坏。检查ANDROID_SDK_ROOT值
- 如何生成字符串类型的buildConfigField
- Recyclerview不调用onCreateViewHolder
- Android API 21工具栏填充
- Android L中不支持操作栏导航模式
- 如何在TextView中添加一个子弹符号?
- PreferenceManager getDefaultSharedPreferences在Android Q中已弃用
- 在Android Studio中创建aar文件