Build Tools & Platform Tools & Tools & platform & Gradle 貌似复杂的依赖关系

写在前面

这篇博客的主题不是很明显,但是等你看完,可以明白两个问题:

  • Build Tools & Platform Tools & Tools 的区别。
  • Build Tools & Platform Tools & Tools & Platform & Gradle 这几个货版本到底是怎么相互依赖对应的。

开篇

在安装和配置 Android Studio 的时候,有一个很重要的步骤,就是配置 SDK 路径,那么 SDK 是什么呢?

SDK(Soft Develop Kit),按照我硬翻的风格是是软件开发工具箱,其实,正确的理解是一整套开发工具。例如 Android SDK,就是 Google 提供的和 Android 开发相关的一整套开发工具,不仅包括编译,运行,打包这些必须的,还有很多其他小工具。了解和学习它们,对开发工作很有帮助。

然后就说到这三个文件夹,tools,build-tools,platform tools,首先它们仨都是 Android SDK 提供的文件夹,名字都像,常常傻傻分不清楚。

其实我也不知道弄懂它们有什么意义,但是我不想每次都一脸懵逼,于是就有了这篇博客。

Build Tools

Build-Tools 的内部结构如图。

在这里插入图片描述

没想到的是,我目前使用的 SDK 中有这么多版本的 Build-Tools。那么问题就来了,

  • Build-Tools 是干嘛的?为什么要专门放一个文件夹?
  • Build-Tools 为什么需要这么多版本的?只有一个行不行?

这个时候,就要去看谷爹的官方介绍说明了,我认为那里是最准确的描述。

上面说,Build-Tools 是 Android 应用编译和创建过程中所必须的一套工具集合。

开发的时候,我们应该时刻保证我们的 Build-Tools 是最新版的。而且从 Android Studio 3.0.0 开始,创建项目的时候,会根据 Gradle 插件的版本,默认使用版本支持范围中最低版本的 Build-Tools。当然,如果需要更改的话,通过 build.gradle 中修改 buildToolsVersion 参数可以修改。

android {
    buildToolsVersion "26.0.2"
    ...
}

以上是官方说明。从中,我们可以找到之前问题的答案:

  • build Tools 是干嘛的?为什么要专门放一个文件夹?
    build tools 是 Android 应用编译和创建过程中所必须的一套工具集合,放一个文件夹的意义,就是我猜是为了好分类吧。

  • build Tools 为什么会有这么多版本的?只有一个行不行?
    官方建议是最好及时更新,保持最新版本。从这句话可以看出,build tools 只需要保持一个最新版本就好。从 Android 系统整体都是向后兼容的特性考虑,一个最新版本也是足够的。

    至于问什么会有这么多版本,是因为我使用的时候,不是最新版,然后用了不同的版本的 SDK,每个 SDK 有对应的 Build-Tools 版本范围,所以下了很多。

Gradle plugin & Build Tools

而且 从我们谷爹说的话中,可以知道 Gradle plugin 和 Build-Tools 版本之间有着不同寻常的关系。

Gradle 是目前比较流行的构建工具之一,Android Studio 中集成的就是 Gradle,并针对 Android 应用开发了插件 Gradle plugin 。在我看来,编译和构建环节本就密不可分,由此猜测二者之间会不会有版本兼容的考虑,查看文档果然如此。

Gradle Plugin 的版本说明中,对 Gradle 和 Build Tools 的版本都要最低要求。

在这里插入图片描述

把最新的几个版本总结了如下表格:

Android Gradle PluginGradleBuild Tools
3.0.04.1+26.0.2+
2.3.0+3.3+25.0.0+
2.2.0+2.14.1+23.0.2+

Android Plugin for Gradle Release Notes

Platform Tools

Platform Tools 的内部结构如图。

本来我以为会像 Build-Tools 一样有很多版本,然而并不是,只有一个。

看一下谷爹的说明:

Platform-Tools 是 Android SDK 的一个组件 。内容主要包含与 Android 移动平台交互的工具,例如 adb(android 调试桥,用来和应用通信的),fastboot(线刷,一种刷机模式) 和 systrace(通过这个,可以查看分析系统运行中的所有数据)等。 这些工具堪称 Android 应用开发之必备工具。如果想解锁手机开机程序或者刷机的话,也需要它们。

尽管这些工具中的一些新功能仅适用于最新版本的 Android,但是因为这些工具也是向后兼容的,然后只需要一个版本 Platform-Tools 的就好了。

我们应该尽量保证是最新版本,前几天我的 adb 总是连接出错,升级了版本就好了,应该是新版本已经发现问题并修复了。

Platform-Tools & Platform

博客最上面的图片中,可以看到 sdk 文件夹内部组成中,有这样两个文件夹,platform tools 和 platform 。从名字上看,就感觉俩货之间肯定是有事。
Platform 内部结构如图。

在这里插入图片描述

很明显,这就是不同版本 Android 系统们,以 API 为序号。用户下载了几个版本,里面就有几个版本。build.gradle 中 compileSdkVersion 参数对应的就是这其中的版本。

android {
    compileSdkVersion 26
    ...
}

查看 Platform 的官方介绍,发现 Platform 的每个版本都对 Platform tools 有最低版本要求。

在这里插入图片描述

从版本号看,基本保持一致,还是比较好记。例如 platform 25 就要求 platform tools 25.0.1+。

同时,我们也可以看到对 Build-Tools 的版本也要求,列出表格如下:

Android VersionAPI LevelPlatform-toolsBuild tools
Android 6.02323+24.3.4+
Android 5.12222+23.0.5+
Android 5.02121+23.0.5+

SDK Platform Release Notes

Tools

Tools 的内部结构如图。

Tools 在我的环境中只有一个版本,所以按照这种规律,很明显,开发环境中应该也只需要一个版本的就足够的。

以下是我们的谷爹对它的一句话介绍:

在这里插入图片描述

Tools 也是 Android SDK 的一个组件,包括一套完整的 Android 开发和调试工具,Tools 也包含在 Android Studio 中。

Tools & Platform-Tools

翻翻 Tools 的版本记录,发现 Tools 和 Platform 之间也有对应关系。例如下图,26.0.0 的 Tools 就依赖 Platform-Tools 24+ 。

在这里插入图片描述

总结如下:

Build ToolsPlatform-tools
24.4.024+
24.3.423+
24.3.319+

SDK Tools Release Notes

总结

写到这里,上面已经出现 Tools,Build-Tools,Platform -Tools,Platform,Gradle,Gradle Plugin,名字大多相似,关系也有点交错,很容易晕,总结如下:

1.Gradle Plugin 基于 Gradle,Build-Tools 生成的。
2.Platform 基于 Platform-Tools,Build-Tools 生成的。
3.Tools 基于 Platform-Tools 生成的。

看图更清晰一点:

在这里插入图片描述

写在最后:

这篇博客的初衷是上篇博客中受启发,想特意学习一下 Tools 文件夹想法的开始的,然而没想到牵扯出来这么多,想来还是因为会的太少了。

写完后,我突然明白了,之前遇到导入一个 Github 上拉取的新项目,然后就各种报错各种需要下载的情况,版本不兼容报错,解决方法是下载对应版本或者改成兼容的版本。

为了避免出现这种情况,要定期更新 Build-Tools ,Platform-Tools 和 Tools,保持较新的版本。

然后,下篇博客见。


欢迎关注个人微信公众号「浅浅同学的开发笔记」,最新的博客,好玩的事情,都会在上面分享,期待与你共同成长。

在这里插入图片描述

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
platform-tools_r31.0.3-windows.zip platform-tools是很多刷机的朋友都会用到的工具包,Android SDK其中的platform-tools包可以对安卓设备进行调试,包括解锁、刷机等操作都可以使用这个工具包来进行,其中包含开发app的平台依赖的开发和调试工具,包括 adb、fastboot等,有需要的赶快下载吧!功能介绍platform-tools包含开发app的平台依赖的开发和调试工具,包括 adb、fastboot等android sdk里的各目录作用AVD Manager.exe:虚拟机管理工具,用于建立和管理虚拟机。SDK Manager.exe:sdk管理工具,用于管理、下载sdksdk工具,能及扩展工具tools目录:包括测试、调试、第三方工具。模拟器、数据管理工具等。build-tools目录:编译工具目录,包含了转化为davlik虚拟机的编译工具。包括aapt(Android Asset Packaging Tool):编译应用程序的资源文件(包括AndroidManifest.xml和你的Activities的xml文件),生成R.java文件,这样你就可以从你的java代码中引用资源。aidl:把.aidl 接口转换成java接口.dx:转化.class中间代码为dvlik中间代码,所有经过java编译的生成.class文件都需要此工具进行转换,最后打包进apk文件中.dexdump:dump devlik中间代码platform-tools目录:包含开发app的平台依赖的开发和调试工具。包括adb:android调试工具fastboot:boot工具platforms/目录:包括android的平台。包含在android.jar库中。你必须指一个平台为你的编译目标。system-images目录:编译好的系统映像。模拟器可以直接加载。sources目录:android sdk的源码目录samples目录:sdk例子

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值