有没有办法自动安装Android SDK?

2023-12-02

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


UPDATE

最新版本介绍sdkmanager,一个命令行工具,允许您查看、安装、更新和卸载 Android SDK 的包。

The sdkmanagerAndroid SDK 工具包中提供了该工具(25.2.3 及更高版本)并且位于android_sdk/tools/bin/.

  sdkmanager [--uninstall] [<common args>] [--package_file <file>] [<packages>...]
  sdkmanager --update [<common args>]
  sdkmanager --list [<common args>]
  sdkmanager --licenses [<common args>]

In its first form, installs, or uninstalls, or updates packages.
    By default, the listed packages are installed or (if already installed)
    updated to the latest version.

    --uninstall: uninstalled listed packages.

    <package> is a sdk-style path (e.g. "build-tools;23.0.0" or
             "platforms;android-23").
    <package-file> is a text file where each line is a sdk-style path
                   of a package to install or uninstall.
    Multiple --package_file arguments may be specified in combination
    with explicit paths.

In its second form (with --update), all installed packages are
    updated to the latest version.

In its third form, all installed and available packages are printed
    out.

In its fourth form (with --licenses), show and offer the option to
     accept licenses for all available packages that have not already been
     accepted.

Common Arguments:
    --sdk_root=<sdkRootPath>: Use the specified SDK root instead of the SDK
                              containing this tool

    --channel=<channelId>: Include packages in channels up to <channelId>.
                           Common channels are:
                           0 (Stable), 1 (Beta), 2 (Dev), and 3 (Canary).

    --include_obsolete: With --list, show obsolete packages in the
                        package listing. With --update, update obsolete
                        packages as well as non-obsolete.

    --no_https: Force all connections to use http rather than https.

    --proxy=<http | socks>: Connect via a proxy of the given type.

    --proxy_host=<IP or DNS address>: IP or DNS address of the proxy to use.

    --proxy_port=<port #>: Proxy port to connect to.

* If the env var REPO_OS_OVERRIDE is set to "windows",
  "macosx", or "linux", packages will be downloaded for that OS.

因此,要更新软件包,请运行

sdkmanager --update

要接受许可证,

yes | sdkmanager --licenses

旧答案

(请注意:android命令已弃用!)

距离自动化越近的可能是:

android update sdk --no-ui

android提供以下自动更新选项:

Action "update sdk":
  Updates the SDK by suggesting new platforms to install if available.
Options:
  -f --force    Forces replacement of a package or its parts, even if something has been modified
  -u --no-ui    Updates from command-line (does not display the GUI)
  -o --obsolete Installs obsolete packages
  -t --filter   A filter that limits the update to the specified types of packages in the form of
                a comma-separated list of [platform, tool, platform-tool, doc, sample, extra]
  -s --no-https Uses HTTP instead of HTTPS (the default) for downloads
  -n --dry-mode Simulates the update but does not download or install anything

如果您想列出哪些软件包可供安装,您可以使用

android list sdk

您将获得一个有序的软件包列表,例如

Packages available for installation or update: 9
   1- ARM EABI v7a System Image, Android API 15, revision 2
   2- Intel x86 Atom System Image, Android API 15, revision 1
   3- Android Support, revision 8
   4- Google AdMob Ads SDK, revision 6
   5- Google Analytics SDK, revision 2
   6- Google Play APK Expansion Library, revision 1
   7- Google Play Billing Library, revision 2
   8- Google Play Licensing Library, revision 2
   9- Google Web Driver, revision 2

此外,如果您使用--filter option

android update sdk --filter <component> --no-ui

其中组件是以下一项或多项

  • 返回的数字android list sdk (i.e. 1, 也叫作封装索引)
  • add-on
  • doc
  • extra
  • platform
  • 平台工具
  • sample
  • source
  • 系统映像
  • tool

或者可以是一个或多个特定标识符。例如,如果您只想下载一小组特定的软件包,您可以这样做:

android update sdk -u --filter platform-tools,android-16,extra-android-support

您只需获得平台工具、API 级别 16 和支持包 JAR 文件。如果您仅构建构建机器并且必须付费下载所有您永远不会使用的额外内容,那么这非常方便。

要查看可用选项,您可以使用 --help,例如

android --help list sdk

       Usage:
       android [global options] list sdk [action options]
       Global options:
  -h --help       : Help on a specific command.
  -v --verbose    : Verbose mode, shows errors, warnings and all messages.
     --clear-cache: Clear the SDK Manager repository manifest cache.
  -s --silent     : Silent mode, shows errors only.

                   Action "list sdk":
  Lists remote SDK repository.
Options:
  -o --obsolete  : Deprecated. Please use --all instead.
  -a --all       : Lists all available packages (including obsolete and
                   installed ones)
     --proxy-host: HTTP/HTTPS proxy host (overrides settings if defined)
     --proxy-port: HTTP/HTTPS proxy port (overrides settings if defined)
  -s --no-https  : Uses HTTP instead of HTTPS (the default) for downloads.
  -e --extended  : Displays extended details on each package
  -u --no-ui     : Displays list result on console (no GUI) [Default: true]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法自动安装Android SDK? 的相关文章

  • 如何获取存储在MySQL中的经纬度位置并在Android地图应用程序中使用它

    我试图获取存储在 MySQL 中的纬度和经度位置 我想将这些值用于我的 Android 地图应用程序 这是我的代码 Java脚本 Button direction Button findViewById R id btnDir direct
  • 两个 ListView 和 ScrollView

    我离这里很近 我已经尝试了很多东西 但无法让它发挥作用 我这里有两个列表视图 我想要的是每个列表视图显示其全部内容 我不希望列表视图可滚动 我想要保持列表视图可滚动的滚动视图 我能得到的最接近的结果 这是错误的 是每个列表视图都是可滚动的
  • 使用动画更新布局

    我有一个继承自 LinearLayout 的自定义视图 它包含一个按钮 和一个编辑文本 EditText 的初始可见性设置为 GONE 什么时候 按下按钮我希望 EditText 出现动画效果 所以 我制作了一个 ScaleAnimatio
  • ScrollView 与relativelayout 不能很好地配合

    所以我有一个 ScrollView 作为布局中的最高级别 在我的 ScrollView 中我有一个包含其他视图的相对布局 问题在于 RelativeLayout 没有按应有的方式覆盖整个布局 它会在大约一半的屏幕处被截断 它的宽度是屏幕的整
  • 在模拟器中观察短信发送应用程序

    有没有办法从模拟器读取传出的短信 在 logcat 中我看到这条消息 D SmsStorageMonitor 738 SMS send size 0 time 1327423357467 有没有办法获取接收者和内容 发出的短信似乎没有保存在
  • 无法将 LocalBroadcastManager 添加到 Android Studio 中的项目

    我想我现在已经尝试了一切 我一直在堆栈溢出 我什至咨询过android文档 这里的大多数帖子都展示了如何在 Eclipse 中添加 jar 文件 android 工具 gt 添加支持库 或其他内容 所以我尝试按照文档告诉我的方式进行操作 方
  • 如何在 Google Analytics v4 崩溃报告中为未捕获的异常创建详细的堆栈跟踪?

    默认情况下 Google Analytics 仅在其崩溃报告中报告未捕获异常的顶行 请参阅此中的第一张图片 博客文章 http dandar3 blogspot nl 2013 03 google analytics easytracker
  • 为什么升级到jetpack compose 1.0.0-beta01后没有隐式导入kotlin.collections?

    升级到 jetpack compose 1 0 0 beta01 后 我尝试使用 kotlin collections 中的 arrayListOf listOf 但它们似乎没有隐式导入 您的问题可能与以下内容有关科特林版本您正在使用 我想
  • 在 Android 中以高音量录制

    我正在使用 MediaRecorder 进行音频录制 但不幸的是 当我播放录制的音频时 我的媒体音量非常低 我什么也没听到 几乎什么也没听到 有没有办法提高录音音量 就像我们录音时的 setVolume 一样 我尝试在 MediaRecor
  • 将 Cordova console.log 写入文件

    有谁知道是否有可能console log写入文件或类似的东西 我已经记录了我的应用程序 但它仅写在控制台上 出于远程目的debugging我也需要将现有日志写入文件 我想创建一个文件并将日志写入该文件中 但这将使我复制现有的日志代码 因此
  • 尝试使用 FileProvider(Android) 获取 URI 时出现 NullPointerException [重复]

    这个问题在这里已经有答案了 我想在单击按钮后拍照 但我越来越NullPointerException当试图得到URI with FileProvider 这是我的错误代码 Caused by java lang NullPointerExc
  • 如何以编程方式在 Android 中的特定 firebase FCM 注册令牌上发送推送通知

    我想知道有什么方法可以在特定的 FCM 注册令牌 设备令牌 上以编程方式发送推送通知 我已经实现了群聊 但陷入了一对一的聊天 我根本不想使用任何网络服务或任何后端 因为我在我的应用程序中使用 Firebase 数据库和存储作为后端 我想将上
  • 如何停止和重新启动 Android 仪器测试中的活动?

    我正在尝试编写一个停止的 Android 活动仪器测试 onPause then onStop 并重新启动当前活动 我试过 activity finish activity getActivity 但这似乎不能正常工作 测试的目的是断言表单
  • Android Studio 无法识别 GSON 库

    我正在 Android Studio 中制作一个应用程序 我需要使用GSON图书馆 我已经下载了gson 2 8 2 javadoc 然后我就这样走了 文件 gt 新建 gt 新模块 gt 导入 JAR AAR 打包 gt gson 2 8
  • Android studio SDK 管理器丢失

    我正在关注这个离子教程 https ionicacademy com get started with ionic 在 Android Studio 中设置 SDK 来测试我的 ionic 项目时遇到了一些问题 我正在寻找 SDK 管理器
  • 如何使用 Android Studio 在真实设备中测试 Android 应用?

    我开始在android中开发Android Studio IDE 我在上测试了我的应用程序emulator并且工作正常 但是当我尝试直接在我的设备中测试应用程序时 无法识别它并且控制台显示下一条消息 等待设备 未找到 USB 设备 我在运行
  • 我的应用程序未列出用于平板电脑

    我已将一个新应用程序上传到 play google com https play google com store apps details id development nk anguide https play google com s
  • Android Studio Gradle 出现本机库错误

    对不起我的英语不好 我有最后一个 android studio 2013 年 6 月 14 日 创建新的 Android 项目 将 so 文件添加到 libs armeabi 编辑 build gradle 为 buildscript re
  • Spotify API:INVALID_APP_ID

    我目前正在开发一个实现 Spotify API 的 Android 应用程序 我已经使用教程将我的应用程序连接到 Spotify 的所有代码 并且已经在我的应用程序上工作了一段时间了 当我在验证用户身份后通过我的应用程序播放歌曲时 它在我的
  • 在 Android 上使用 pocketsphinx 未检测到关键字

    谁能解释一下如何使用 pocketsphinx 将语音转换为文本 我试试这个 import com example speechtutor SpeechRecognizerRecorder import com example speech

随机推荐

  • 需要基于网络的 AR 解决方案进行平面检测[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在寻找基于网络的 AR 解决方案 使用无标记检测 即使用平面检测或物体检测 尝试使用 a frame 框架和 Three js 但它们只是基于标
  • 采用 ISO8601 日期格式的两个日期之间的天数

    我想做同样的事情如何在 JavaScript 中获取两个日期之间的天数 但我想对这个日期格式做同样的事情 2000 12 31 function daysBetween date1String date2String var d1 new
  • 如何过滤多索引数据帧上的日期

    我正在寻找一种方法来过滤多索引数据框 如下所示按星期几和 或选定的日期 假设我需要 查询select only mondays 我想要的另一个查询select all days except monday and friday 第三个查询用
  • Javascript正则表达式返回true..然后false..然后true..等等[重复]

    这个问题在这里已经有答案了 我在表单上编写的验证有一个奇怪的问题 它是输入旁边的 检查用户名 按钮 输入默认值是用户名 例如 betamax 当我按 检查用户名 时 它会传递正则表达式并将用户名发送到服务器 服务器按预期运行并返回 2 以告
  • 公司如何邀请我参加 TestFlight?

    与编程略有相关 但我似乎无法弄清楚 我有一个 Apple 开发者帐户和一个 iTunes Connect 帐户 当公司邀请我时 我得到的只是 XY Ltd 邀请您加入 iTunes Connect 如果我通过链接登录没有任何反应 我将获得自
  • 如何在 iPhone 项目中使用 DCMTK

    我已经成功使用CCmake编译dcmtk3 6并在ios环境中构建它 但我不知道如何将这些编译文件包含在新的ios项目中 编译到新的 iphone 项目后我已经移动了 dcmtk 并使用 include dcm2xml h 但路径有错误 尝
  • 如何使用自动字段反序列化在 Rust Rocket 中返回 JSON 作为响应?

    我正在尝试使用 Rust 创建打印服务器 并在尝试发送 JSON 作为响应时遇到问题 我在 Rocket 文档中发现发送 JSON 作为响应非常容易 您只需使用 Serde 库即可 不幸的是 这对我来说并不是那么简单 这是我当前的代码 de
  • 升级到 OS X Mavericks 后 OpenCV 架构 x86_64 未定义符号

    我有一个运行良好的 opencv 项目 今天 我已将 OS X lion 升级到 Maverick 但 imwrite 函数出现以下错误 Undefined symbols for architecture x86 64 cv imwrit
  • 用R代码确定斜率[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我有许多熔化曲线 我想使用 R 代码确定最小值 谷 和最大值 峰 之间最陡部分的斜率 拐点中的斜率对应于熔点 我能想到的解决方案要么是确定每个点的斜率 然后找到最大正值 要么通过使用
  • 值对象如何存储在数据库中?

    我还没有真正看到任何示例 但我假设它们保存在数据库内的包含实体表中 IE 如果我有一个 Person 实体 聚合根和一个相应的 Person 表 如果它有一个名为 Address 的值对象 则地址值将保存在该 Person 表中 对于我拥有
  • 使用 JQuery UI 对话框时提交操作被击中两次

    我正在使用 JQuery 和 bootstrap 编写 ASP NET MVC 4 应用程序 我的网站中有一个模式对话框功能 该功能过去一直运行顺利 直到最近另一位开发人员在网站中进行了一些与样式相关的更改 以下是我在部分视图之一中编写的代
  • jQuery 和边距:0 自动

    所以 这是一个以前被问过的问题 但我希望我们可以解决这个问题 我正在使用 jQuery 1 4 如果我定义样式 obj margin 0 auto 然后做 obj css marginLeft 结果是以像素为单位的计算值 有什么方法可以判断
  • 将列名传递给函数

    我怎样才能把这个ggplot 调用一个函数 我不知道如何让 R 识别我想要传递给函数的列名称 我遇到过几个听起来类似的问题 但我没有成功地调整想法 看here for substitute setup library dplyr libra
  • PHP中类似smarty的字符串的参数和值的解析

    我正在尝试创建类似 smarty 的解析器 对于非常小的代码部分 并且不想实现巨大的类似 smarty 的解析器 我想出的是 a zA Z0 9 v a zA Z0 9 On https regex101 com r l5FI5f 2 看起
  • 使用 spring-data-redis 更新 redis 中的实体

    我目前正在将 Redis 3 2 100 与 Spring data redis 1 8 9 和 Jedis 连接器一起使用 当我对现有实体使用 save 函数时 Redis 会删除我的实体并重新创建该实体 就我而言 我需要保留这个现有实体
  • 在 MS Edge 中,在输入类型=“数字”中输入文本后,占位符文本不会消失

    要查看该问题 请尝试以下代码片段 div span A number input span div
  • 如何自动创建目录中每个类的实例?

    如何在 ruby 中创建目录中每个文件中每个类的实例 将其作为数组提供 先感谢您 您可以使用ObjectSpace找到新的类然后实例化它们 def load and instantiate class files Find all the
  • Python Flask 故意空响应

    有没有办法返回响应 来自make response 对象或类似的对象 具有某些属性 这样它就不会再次渲染页面 也不会执行任何其他操作 我试图在服务器上运行代码而不生成任何输出 一个简单的 return None 会产生 ValueError
  • 使用“use”时,剪辑路径无法在 SVG 精灵中正确显示

    我正在尝试将一组图标拼凑成一个精灵表 我对 SVG 几乎一无所知 我可以使用简单的图标 但带有剪辑路径的图标无法正确显示 据我所知 它似乎没有使用剪辑路径 精灵在 jsfilddle 中工作 如果我只加载它自己的 svg 并在 SVG 中包
  • 有没有办法自动安装Android SDK?

    现在我必须下载并安装 Android SDK 并AVD管理器 然后通过UI安装API 工具 有没有办法自动化这个过程 UPDATE 最新版本介绍sdkmanager 一个命令行工具 允许您查看 安装 更新和卸载 Android SDK 的包