Zhe*_*ang 285 sdk android build-tools android-build aapt
我想从命令行设置Android dev环境,遇到以下问题:
wget http://dl.google.com/android/android-sdk_r22.0.5-linux.tgz
Run Code Online (Sandbox Code Playgroud)
解压缩文件后,运行
tools/android update sdk --no-ui
Run Code Online (Sandbox Code Playgroud)
但是,跑步太慢了
Fetching https://dl-ssl.google.com/android/repository/addons_list-2.xml
Run Code Online (Sandbox Code Playgroud)
结果是文件夹构建工具中没有任何内容,我想要的是aapt和apkbuilder,因为我想在没有ant的情况下从命令行构建apk.
nsg*_*nsg 474
默认情况下,命令行中的SDK Manager不包含列表中的构建工具.他们处于"过时"类别.要查看所有可用下载,请使用
android list sdk --all
Run Code Online (Sandbox Code Playgroud)
然后从命令行获取该列表中的一个包,使用:
android update sdk -u -a -t <package no.>
Run Code Online (Sandbox Code Playgroud)
其中-u代表--no-ui,-a代表--all,-t代表--filter.
如果需要安装多个包,请执行以下操作:
android update sdk -u -a -t 1,2,3,4,..,n
其中1,2,..,n是上面列出命令列出的包号
rob*_*obd 139
如其他答案中所述,您可以使用该--filter
选项来限制已安装的软件包:
android update sdk --filter ...
其他答案没有提到您可以使用常量字符串标识符而不是过滤器选项的索引(将更改).这对无人参与或脚本安装很有帮助.男人的--filter
选择:
...这也接受'list sdk --extended'返回的标识符.
android list sdk --all --extended
:
Packages available for installation or update: 97
----------
id: 1 or "tools"
Type: Tool
Desc: Android SDK Tools, revision 22.6.2
----------
id: 2 or "platform-tools"
Type: PlatformTool
Desc: Android SDK Platform-tools, revision 19.0.1
----------
id: 3 or "build-tools-19.0.3"
Type: BuildTool
Desc: Android SDK Build-tools, revision 19.0.3
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用字符串ID作为过滤器选项来精确指定所需的版本:
android update sdk --filter tools,platform-tools,build-tools-19.0.3
等等
Ale*_*pov 67
Android SDK Tools
包的25.2.3(及更高版本)包含新工具 - sdkmanager - 它简化了从命令行安装构建工具的任务.
它位于android_sdk/tools/bin
文件夹中.
用法(来自文档):
Run Code Online (Sandbox Code Playgroud)sdkmanager packages [options]
所述
packages
参数是一个SDK风格的路径,包在引号(例如,"build-tools;25.0.0"
或"platforms;android-25"
).您可以传递多个包路径,用空格分隔,但每个包必须用自己的引号括起来.
示例用法(在我的Mac上):
alex@mbpro:~/sdk/tools/bin$ ls ../../build-tools/
25.0.0/
alex@mbpro:~/sdk/tools/bin$ ./sdkmanager "build-tools;25.0.2"
done
alex@mbpro:~/sdk/tools/bin$ ls ../../build-tools/
25.0.0/ 25.0.2/
Run Code Online (Sandbox Code Playgroud)
您还可以指定各种选项,例如强制所有连接使用HTTP(--no_https
),或者使用代理服务器(--proxy_host=address
和--proxy_port=port
).
要检查可用选项,请使用--help
标志.在我的机器(Mac)上,输出如下:
alex@mbpro:~/sdk/tools/bin$ ./sdkmanager --help
Usage:
sdkmanager [--uninstall] [<common args>] \
[--package_file <package-file>] [<packages>...]
sdkmanager --update [<common args>]
sdkmanager --list [<common args>]
In its first form, installs, or uninstalls, or updates 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), currently installed packages are
updated to the latest version.
In its third form, all installed and available packages are printed out.
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.
Run Code Online (Sandbox Code Playgroud)
Fli*_*bor 54
ADB Build-Tools不会通过命令android update sdk --no-ui自动下载
所以安装Buil-Tool类型(在控制台中):
android list sdk --all
Run Code Online (Sandbox Code Playgroud)
记住在项目之前列出的数字并执行以下操作:
android update sdk -u --all --filter <number>
Run Code Online (Sandbox Code Playgroud)
命令应该输入/ YourFolder/android-sdk-linux/tools
也适用于远程文件夹(例如由ssh打开的服务器)类型:
**./android** list sdk --all
**./android** update sdk -u --all --filter <number>
Run Code Online (Sandbox Code Playgroud)
对于简单的ADB包列表,请在终端中输入:
android list sdk
Run Code Online (Sandbox Code Playgroud)
安装所有包:
android update sdk --no-ui
Run Code Online (Sandbox Code Playgroud)
或者使用过滤器(逗号是分隔符):
android update sdk --no-ui --filter 3,5,8,14
Run Code Online (Sandbox Code Playgroud)
geo*_*and 32
我尝试从命令行安装所有Android SDK时遇到的一个很好的信息来源是这个 Dockerfile.在Dockerfile里面你可以看到作者执行一个命令来安装platform tools
,并build tools
没有任何其他作用.在OP提出的情况下,该命令将适用于:
echo y | $ANDROID_HOME/tools/android update sdk --all --filter build-tools-21.1.0 --no-ui
Run Code Online (Sandbox Code Playgroud)
lps*_*lps 21
我刚刚通过命令行安装了android sdk依赖项,因为工具和网络附带的文档非常缺乏,我想我会发布我在这里发现的内容.
我工作android sdk r24.4.1
了linux
.您可以运行两个命令来列出可用的包:
android list sdk
而且更详尽:
android list sdk --all
上面的每个命令的特定包的包装编号都不同!例如,前者将包 API 23.1 revision 3
列为包#3
,后者将其列为包#29
.
现在,使用android命令有两种不同的安装方式.
tools/android update sdk --no-ui --filter <package number>
和
tools/android update sdk -u -a -t <package number>
鉴于每个安装命令都可以将包#作为参数,您使用哪个包号?经过多次在线搜索和反复试验,我发现了这一点
android update sdk --no-ui --filter
使用来自的包裹编号 android list sdk
和
android update sdk -u -a -t
使用来自的包裹编号 android list sdk --all
换句话说 - 安装API 23.1 revision 3
你可以做到:
android update sdk --no-ui --filter 3
要么
android update sdk -u -a -t 29
疯了,但它的确有效.
i4n*_*iac 20
大多数答案似乎忽略了这样一个事实:您可能需要在没有超级用户权限的无头环境中运行更新,这意味着脚本必须y/n
自动回答所有许可证提示.
这是诀窍的例子.
FILTER=tool,platform,android-20,build-tools-20.0.0,android-19,android-19.0.1
( sleep 5 && while [ 1 ]; do sleep 1; echo y; done ) \
| android update sdk --no-ui --all \
--filter ${FILTER}
Run Code Online (Sandbox Code Playgroud)
无论你得到多少提示,所有这些都会得到回答.这个while/sleep
循环看起来像yes命令的模拟,实际上它几乎是.问题yes
在于它泛滥stdout 'y'
并且在发送这些字符之间几乎没有延迟,而我必须处理的版本没有任何类型的超时选项.它将"污染"stdout并且脚本将失败抱怨输入错误.解决方案是在发送'y'
到stdout 之间延迟,这正是while/sleep
组合所做的.
expect
在某些Linux发行版上默认不可用,我无法将其作为我的CI脚本的一部分安装,因此不得不使用最通用的解决方案,没有什么比简单的bash脚本更通用,对吧?
事实上,我在博客上写了这篇文章(NSBogan),如果你有兴趣,可以在这里查看更多细节.
Мак*_*тов 16
不推荐使用“android”命令。
对于命令行工具,请使用tools/bin/sdkmanager和tools/bin/avdmanager
如果您不需要 Android Studio,您可以从developer.android.com 的仅命令行工具部分下载基本的 Android 命令行工具。
从 CLI 来看,它应该是这样的:
curl --output sdk-tools-linux.zip https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
Run Code Online (Sandbox Code Playgroud)
或者
wget --output-document sdk-tools-linux.zip https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
Run Code Online (Sandbox Code Playgroud)
之后只需将存档解压缩到目标文件夹
unzip sdk-tools-linux.zip
Run Code Online (Sandbox Code Playgroud)
现在我们可以安装您需要的一切...
./tools/bin/sdkmanager --install 'build-tools;29.0.2' 'platform-tools' 'platforms;android-29' 'tools'
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令获取完整的软件包列表 ./tools/bin/sdkmanager --list
某些软件包需要接受许可协议。您可以以交互方式接受它,也可以将“y”传递给输入流,如下所示(以防万一):
echo -ne "y\ny" | ./tools/bin/sdkmanager --install 'system-images;android-29;default;x86_64'
Run Code Online (Sandbox Code Playgroud)
当然,为了您的方便,您可以导出ANDROID_HOME或ANDROID_SDK_ROOT等变量(包括在 ~/.profile 或 ~/.bash_profile 中执行)或修补PATH变量 - 所有这些都由您自行决定。
脚本示例:
mkdir /opt/android-sdk
cd /opt/android-sdk
curl --output sdk-tools-linux.zip https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
unzip sdk-tools-linux.zip
echo -ne "y" | ./tools/bin/sdkmanager --install 'build-tools;29.0.2' 'platform-tools' 'platforms;android-29' 'tools'
Run Code Online (Sandbox Code Playgroud)
要求: curl(或 wget)和解压
故障排除:
如果看到Warning: Could not create settings
,则需要在 ANDROID_HOMEtools
内的cmdline-tools
目录中创建目录(如果需要,请使用此确切名称创建它),请参阅Android 命令行工具 sdkmanager 始终显示:警告:无法创建设置
Las*_*hds 13
如果你已经sdkmanager
安装(我正在使用MAC)
运行sdkmanager --list
以列出可用的包.
如果要安装构建工具,请从可用软件包列表中复制首选版本.
安装首选版本运行
sdkmanager "build-tools;27.0.3"
Run Code Online (Sandbox Code Playgroud)
但是,跑步太慢了
是的,我遇到了同样的问题.一些文件下载非常慢(或者至少它们已经过去几天).如果你想下载所有内容,你可以做很多事情.
结果是文件夹构建工具中没有任何内容,我想要的是aapt和apkbuilder,因为我想在没有ant的情况下从命令行构建apk.
你让它完成了吗?
您可以做的一件事是使用-t
交换机过滤正在下载的软件包.
例如:
tools/android update sdk --no-ui -t platform-tool
Run Code Online (Sandbox Code Playgroud)
前几天我尝试了这个版本,我安装了18.0.0版本的构建工具.由于某种原因,此过滤器不包含最新版本18.0.1,获得它的唯一方法是使用--all
交换机安装所有内容.
我更喜欢放一个脚本来安装我的依赖项
就像是:
#!/usr/bin/env bash
#
# Install JUST the required dependencies for the project.
# May be used for ci or other team members.
#
for I in android-25 \
build-tools-25.0.2 \
tool \
extra-android-m2repository \
extra-android-support \
extra-google-google_play_services \
extra-google-m2repository;
do echo y | android update sdk --no-ui --all --filter $I ; done
Run Code Online (Sandbox Code Playgroud)
https://github.com/caipivara/android-scripts/blob/master/install-android-dependencies.sh
归档时间: |
|
查看次数: |
265210 次 |
最近记录: |