前言(废话)
为什么要写博客?
这个……主要还是因为个人感受吧,不知道你们有没有经历过,但是我感受过,遇到问题各种尝试找不到解决方法,最后不得不依赖网络,但是网络上也没有关于这个问题的解决方法,身边也没有懂这个的人,网上问了也没有想要的回答……这个确实是挺自闭的。
我觉得写这个博客不止是为了给自己看,更应该是给别人看,给需要的人看。既然我有幸知道解决方法,就应该分享出来。
为什么要写这个指南?
sdkmanager的gui版不知道大家使用的如何,反正我是无论怎么尝试,镜像啊改hosts那些方法都试过了,死活就是获取不了新版本,网上查嘛,那些方法都没用,自己也就放弃了(果然还是我比较菜吧)。
但幸运的是,我本来从一开始就是用的命令行版本,后来才拿到的gui版,我的gui版死活用不了我还能继续使用命令行,但是问题来了……我是本来就会命令行,但是其他人不一定会啊……所以我决定写这么一篇文章,帮助那些跟我一样用不了gui版的人,找到一个新的方向。
介绍
官网对sdkmanager的介绍是这样的,我觉得已经足够详细了,所以这里不多阐述。
sdkmanager 是一个命令行工具,您可以用它来查看、安装、更新和卸载 Android SDK 的软件包。如果您使用 Android Studio,则无需使用此工具,而可以从 IDE 管理 SDK 软件包。
sdkmanager 工具在 Android SDK Tools 软件包(25.2.3 及更高版本)中提供,并位于 android_sdk/tools/bin/ 下。
下载
sdkmanager是免费的,可以直接在官网下载
我们进去后往下翻,可以看到Command line tools only一栏。
在这里选择自己的系统,例如我这里是Windows,后文也将以Windows的命令行来作介绍。
点击下载后,会弹出这样一个弹窗,我们点击选择“我已阅读并同意上述条款及条件”前面的方框。
选中之后,可以看到下载按钮亮起。
再次核对自己的系统,然后就可以点击下载。
下载下来的文件是个.zip压缩文件,我们直接解压,我这边解压在了D:\AndroidSDK,推荐找一个内存较多的磁盘,专门新建一个文件夹来放置我们的sdk(其实sdk的内存并不大,这样方便管理),路径里最好不要有中文。
解压后里面会有一个tools文件夹,tools文件夹里面是这样的:
这里对其他的文件不过多介绍了,我们所需要的sdkmanager就在“你的解压路径/tools/bin”下:
命令行的使用不需要我多说吧?Win+R输入cmd,然后cd到bin下。不过这边我比较喜欢在文件夹下Shift+右键空白处,选择在此处打开命令窗口,这能快捷打开命令行,不过不是管理员,但是我们安装sdk是不需要管理员哒。
用法
列出已安装和可用列表
sdkmanager --list
其实这个命令好像没什么作用,因为通常会显示不全,但是有时候还是能用到的
安装
sdkmanager [packages]
这个就是我们最重要的命令之一,官网对这条命令的介绍:
packages 参数是 --list 命令列出的 SDK 式的路径,这些路径括在引号中(例如 “build-tools;29.0.0” 或 “platforms;android-28”)。您可以传递多个软件包路径(用空格分隔),但各个路径必须括在各自的一组引号中。
我们开发需要的工具有build-tools、platforms、platforms-tools,但是在–list列出的表格里只会列出platforms的版本,剩余的版本大家可以在版本说明里看到:
例如下面的命令将下载所有工具的最新版:
sdkmanager "platform-tools" "platforms;android-29" "build-tools;29.0.2"
下载的sdk将会安装到你的解压目录,也就是跟tools同一目录。
另外,platform-tools似乎不分版本,只会下载最新版,下载一次偶尔更新就行了。
下载过程中可能会询问是否同意协议,我们输入y然后回车即可继续安装:
下载之后,可以看到在tools同级多了一些文件(我这里作演示只下了一个)
更新
更新就很简单了,使用下面的命令,会自动更新所有已安装的软件包
sdkmanager --update
卸载
卸载与安装差不多,添加一个--uninstall
参数即可
sdkmanager --uninstall packages
我是比较推荐用命令行卸载而不是用直接删除文件夹,如果直接删除不知道会有什么问题。
例如,我这边有API29的SDK了,想要卸载之前的API28,我就可以输入下面的命令:
sdkmanager --uninstall "platforms;android-28"
然后就可以看到API28的文件夹消失了
附加参数
这个我用不上,但是顺便就写一下吧
选项 | 说明 |
---|---|
–sdk_root=path | 使用指定的 SDK 路径而不是包含此工具的 SDK |
–channel=channel_id | 包含从 channel_0 到 channel_id 所有渠道中的软件包。可用的渠道包括:0(稳定版)、1(测试版)、2(开发版)和 3(Canary 版)。 |
–include_obsolete | 在列出或更新软件包时纳入那些已过时的软件包。仅适用于 --list 和 --update。 |
–no_https | 强制所有连接使用 HTTP 而不是 HTTPS。 |
–verbose | 详细输出模式。该模式会输出错误、警告和参考性消息。 |
–proxy={http | socks} | 通过给定类型的代理建立连接:用 http 指定一个高层级协议(如 HTTP 或 FTP)的代理,或用 socks 指定一个 SOCKS(V4 或 V5)代理。 |
–proxy_host={IP_address | DNS_address} | 要使用的代理的 IP 或 DNS 地址。 |
–proxy_port=port_number | 要连接到的代理端口号。 |
注意:如果要为与当前计算机不同的操作系统安装软件包,请将 REPO_OS_OVERRIDE 环境变量设置为“windows”、“macosx”或“linux”。
总结
这篇文章其实没什么好总结的吧
另外有事没事可以翻翻官网
希望能帮到大家