android开发分享如何在命令行上安装Android SDK构build工具?

我想从命令行设置Android开发环境,并遇到以下问题:

wget https://dl.google.com/android/android-sdk_r22.0.5-linux.tgz 

解压后的文件运行

 tools/android update sdk --no-ui 

但是,运行速度太慢

 Fetching https://dl-ssl.google.com/android/repository/addons_list-2.xml 

结果是,没有什么文件夹构build工具,我想是aapt和apkbuilder,因为我想从命令行没有ant构buildapk。

    默认情况下,命令行中的SDKpipe理器不包含列表中的构build工具。 他们处于“过时”类别。 要查看所有可用的下载,请使用

     android list sdk --all 

    然后从命令行获取该列表中的一个包,使用:

     android update sdk -u -a -t <package no.> 

    其中-u代表–no-ui,-a代表–all和-t代表 – filter。

    如果你需要安装多个软件包,请执行:

      android update sdk -u -a -t 1,2,3,4,..,n 

    其中1,2,..,n是上面列表命令列出的软件包号

    正如其他答案中所提到的,您可以使用--filter选项来限制安装的软件包:

    android update sdk --filter ...

    其他答案没有提到你可以使用常量string标识符而不是索引(这将改变)的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 

    然后,您可以使用stringID作为筛选器选项来精确指定所需的版本:

    android update sdk --filter tools,platform-tools,build-tools-19.0.3

    不会自动下载ADB Build-Tools,通过命令android update sdk –no-ui

    因此,安装Buil-Tooltypes(在控制台中):

     android list sdk --all 

    请记住该项目之前列出的号码并执行以下操作:

     android update sdk -u --all --filter <number> 

    命令应该在/ YourFolder / android-sdk-linux / tools中input

    另外对于远程文件夹(例如通过ssh打开的服务器)键入:

     **./android** list sdk --all **./android** update sdk -u --all --filter <number> 

    有关ADB软件包的简单列表,请在terminal中键入:

     android list sdk 

    安装所有软件包:

     android update sdk --no-ui 

    或用filter(逗号是分隔符):

     android update sdk --no-ui --filter 3,5,8,14 

    Android SDK Tools版本25.2.3(及更高版本)包含新工具 – sdkmanager – 它简化了从命令行安装构build工具的这一任务。
    它位于android_sdk/tools/bin文件夹中。

    用法(来自文件 ):

     sdkmanager packages [options] 

    packages参数是用引号(例如"build-tools;25.0.0""platforms;android-25"packages的SDK样式path。 您可以传递多个包path,用一个空格分隔,但是每个包path都必须用自己的引号组合。

    用法示例(在我的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/ 

    您还可以指定各种选项 ,例如强制所有连接使用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 (eg "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. 

    在尝试从命令行安装与Android SDK相关的所有信息时遇到的一个很好的信息来源是Dockerfile。 在Dockerfile里面,你可以看到作者执行一个命令来安装platform toolsbuild tools而没有任何其他的交互。 在任择议定书提出的情况下,指挥官将适应:

     echo y | $ANDROID_HOME/tools/android update sdk --all --filter build-tools-21.1.0 --no-ui 

    大多数答案似乎忽略了这样一个事实,即您可能需要在没有超级用户权限的无头环境中运行更新,这意味着脚本必须自动回答所有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} 

    无论提出多less提示,所有这些都将得到回答。 这个while/sleep循环看起来像yes命令的模拟,事实上,它几乎是 。 问题是,它使用'y'洪泛stdout,发送这些字符之间几乎没有延迟,我必须处理的版本没有任何超时选项。 这将“污染”标准输出,脚本将失败抱怨不正确的input。 解决的办法是在发送'y'到stdout之间加一个延迟,这正是while/sleep组合所做的。

    expect在某些linux发行版中默认是不可用的,我无法将其作为CI脚本的一部分进行安装,所以不得不使用最通用的解决scheme,没有什么比简单的bash脚本更通用的了。

    事实上,我博客( NSBogan ),如果你有兴趣,请在这里查看更多细节。

    我只是有一段时间通过命令行安装android sdk的依赖关系,由于工具和在线的文档是悲哀缺乏,我想我会张贴我在这里发现的。

    我正在使用android sdk r24.4.1 for 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>

    假定每个安装命令都可以将软件包#作为参数,那么您使用哪个软件包号? 经过网上的search和反复试验,我发现了这一点

    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

    疯狂,但它的作品。

    但是,运行速度太慢

    是的,我有同样的问题。 一些文件下载速度非常慢(或者至less在过去的几天里)。 如果你想下载所有东西,你可以做的事情不多。

    结果是,没有什么文件夹构build工具,我想是aapt和apkbuilder,因为我想从命令行没有ant构buildapk。

    你让它完成了吗?

    你可以做的一件事是使用-t开关过滤正在下载的软件包。

    例如:

     tools/android update sdk --no-ui -t platform-tool 

    当我有一天我尝试了这个版本18.0.0版本的安装。 出于某种原因,最新版本18.0.1不包含在这个filter中,唯一的方法就是使用--all开关来安装所有的东西。

    我只是有这个问题,所以我最后通过阅读和parsing可变工具列表,写了一个1行bash脏解决scheme:

      tools/android update sdk -u -t $(android list sdk | grep 'Android SDK Build-tools' | sed 's/ *([0-9]+)-.*/1/') 

    从@ i4niac&@AurélienLambert的答案启发,这就是我想出的

     csv_update_numbers=$(./android list sdk --all | grep 'Android SDK Build-tools' | grep -v 'Obsolete' | sed 's/(.*)- A.*/1/'|sed '/^$/d'|sed -e 's/^[ t]*//'| tr 'n' ',') csv_update_numbers_without_trailing_comma=${csv_update_numbers%?} ( sleep 5 && while [ 1 ]; do sleep 1; echo y; done )  | ./android update sdk --all -u -t $csv_update_numbers_without_trailing_comma 

    说明

    我更喜欢把安装我的依赖的脚本

    就像是:

     #!/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 

    Nate在;

    但是我写了一个小工具,为你做一切

    我在; 你只需要android-sdk和python27expect

    该脚本将安装所有构build工具,所有sdks以及自动构build所需的所有内容:

     import subprocess,re,sys w = subprocess.check_output(["android", "list", "sdk", "--all"]) lines = w.split("n") tools = filter(lambda x: "Build-tools" in x, lines) filters = [] for tool in tools: m = re.search("^s+([0-9]+)-", tool) tool_no = m.group(1) filters.append(tool_no) if len(filters) == 0: raise Exception("Not found build tools") filters.extend(['extra', 'platform', 'platform-tool', 'tool']) filter = ",".join(filters) expect= '''set timeout -1; spawn android update sdk --no-ui --all --filter %s; expect { "Do you accept the license" { exp_send "y\r" ; exp_continue } eof }''' % (filter) print expect ret = subprocess.call(["expect", "-c", expect]) sys.exit(ret) 

    正如其他答复中所述,构build工具需要安装--all标志。 你最好使用-tfilter标志来避免安装所有的软件包,但是没有办法过滤所有的构build工具。

    在AOSP bug跟踪器中已经有了这两点的function请求。 随意为他们投票,这可能会使他们有一天发生:

    我试图更新所有,它的工作!

     echo y | $ANDROID_HOME/tools/android update sdk --no-ui 

    尝试

    1.列出所有软件包

     android list sdk --all 

    2.使用以下命令安装软件包

     android update sdk -u -a -t package1, package2, package3 //comma seperated packages obtained using list command 

    android更新sdk

    此命令将更新并安装SDK Tools,Build Tools,SDK平台工具的所有最新版本。

    这对我有用。

      以上就是android开发分享如何在命令行上安装Android SDK构build工具?相关内容,想了解更多android开发(异常处理)及android游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/addevelopment/517889.html

      (0)
      上一篇 2020年12月5日
      下一篇 2020年12月5日

      精彩推荐