前言
整理Android Studio历史版本信息时发现有点多,于是想一劳永逸写一个简单的爬虫抓取一下数据并生成我想要的格式,又刚好还没用Dart写过爬虫,所以尝试用Dart开发一个。
开发环境
- Dart: 2.19.6
开发过程
1. 遵循robots协议
准备爬取的地址:https://developer.android.com/studio/archive。robots.txt
文件地址:https://developer.android.com/robots.txt,文件内容:
User-Agent: *
Disallow: /assets/css/
Disallow: /assets/images/
Disallow: /assets/js/
Disallow: /guide/samples/
Disallow: /images/
Disallow: /partners/
Disallow: /sdk/OLD_RELEASENOTES
Disallow: /sdk/RELEASENOTES
Disallow: /sdk/older_releases
Disallow: /shareables/
Allow: /images/social/
Allow: /images/cards/distribute/stories/
User-agent: Google-DevRel
Allow: /
Sitemap: https://developer.android.com/sitemap.xml
由robots.txt
文件内容可知,并没有禁止我们抓取/studio/archive
路径页面。如果不清楚robots协议中规则的含义,请看Google 如何解读 robots.txt 规范。
2. 页面结构分析
通过浏览器的开发工具获取/studio/archive
路径页面源码,页面结构如下:
关键源码:
<iframe src="https://developer.android.com/frame/studio/archive_c7422450e31f348e868f1f64f6e846d8cd0410f9d9227a1b6b3c4d4432813f8f.frame"
class="framebox inherit-locale scroll"
allow="clipboard-write https://android-dot-devsite-v2-prod.appspot.com"
allowfullscreen is-upgraded>
</iframe>
通过iframe
标签加载历史版本信息页面,当然这个/frame/studio/archive_xxx.frame
路径也还不是最终的路径,最终会被重定向到:
https://android-dot-devsite-v2-prod.appspot.com/studio/archive_c7422450e31f348e868f1f64f6e846d8cd0410f9d9227a1b6b3c4d4432813f8f.frame
获取/frame/studio/archive_xxx.frame
路径页面源码,页面结构如下:
devsite-expandable
标签源码:
<devsite-expandable is-upgraded="" id="expandable-1">
<p class="expand-control" aria-controls="expandable-1" aria-expanded="false" tabindex="0"
role="button">Android Studio Giraffe | 2022.3.1 Beta 1
<span>April 20, 2023</span>
</p>
<div class="downloads">
Installers
Chrome OS: <a
href="https://redirector.gvt1.com/edgedl/android/studio/install/2022.3.1.12/android-studio-2022.3.1.12-cros.deb">android-studio-2022.3.1.12-cros.deb</a>
(928.9 MB)
Mac (Apple Silicon): <a
href="https://redirector.gvt1.com/edgedl/android/studio/install/2022.3.1.12/android-studio-2022.3.1.12-mac_arm.dmg">android-studio-2022.3.1.12-mac_arm.dmg</a>
(1.2 GB)
Mac (Intel): <a
href="https://redirector.gvt1.com/edgedl/android/studio/install/2022.3.1.12/android-studio-2022.3.1.12-mac.dmg">android-studio-2022.3.1.12-mac.dmg</a>
(1.2 GB)
Windows (64-bit): <a
href="https://redirector.gvt1.com/edgedl/android/studio/install/2022.3.1.12/android-studio-2022.3.1.12-windows.exe">android-studio-2022.3.1.12-windows.exe</a>
(1.1 GB)
SHA-256 checksums
1960acdb21f2327bf13ea2c830ab6ae42e6ca1074edd4a072eaf37ae61eea220
android-studio-2022.3.1.12-cros.deb
b71be41ab6f1e07bb06167876e82bb8a92e109b9d0e719622e72f0beeabfc593
android-studio-2022.3.1.12-mac_arm.dmg
80b70dc2cb9c64f47b706195be210615dfacf8f0d7da6f3cfe3566c9e7ed0a8e
android-studio-2022.3.1.12-mac.dmg
bb32d89edeb20124041aec8ae4bee1b1889be8dcfec595846bd67f75b2fa1a52
android-studio-2022.3.1.12-windows.exe
Zip files
Linux: <a
href="https://redirector.gvt1.com/edgedl/android/studio/ide-zips/2022.3.1.12/android-studio-2022.3.1.12-linux.tar.gz">android-studio-2022.3.1.12-linux.tar.gz</a>
(1.2 GB)
Mac (Apple Silicon): <a
href="https://redirector.gvt1.com/edgedl/android/studio/ide-zips/2022.3.1.12/android-studio-2022.3.1.12-mac_arm.zip">android-studio-2022.3.1.12-mac_arm.zip</a>
(1.2 GB)
Mac (Intel): <a
href="https://redirector.gvt1.com/edgedl/android/studio/ide-zips/2022.3.1.12/android-studio-2022.3.1.12-mac.zip">android-studio-2022.3.1.12-mac.zip</a>
(1.2 GB)
Windows (64-bit): <a
href="https://redirector.gvt1.com/edgedl/android/studio/ide-zips/2022.3.1.12/android-studio-2022.3.1.12-windows.zip">android-studio-2022.3.1.12-windows.zip</a>
(1.1 GB)
SHA-256 checksums
5b2e6289fb1c2f52a8ed9227c7fb80bf2272338712e8b7d3616c5d25b664ea9a
android-studio-2022.3.1.12-linux.tar.gz
a89e9a0e7c915ccfd3254e9f7c3f86fd6c94232501b5dee536de9fa191abcb98
android-studio-2022.3.1.12-mac_arm.zip
09f3a5b1204cff143d985f6fdab82d83e957428c31c9fac3d698b2ecf655c1bf
android-studio-2022.3.1.12-mac.zip
b27af90f27cf0be1f3eb1e3b9393234168944b663ca510d7ec4804535e760aca
android-studio-2022.3.1.12-windows.zip
</div>
</devsite-expandable>
从页面结构可知,每一个devsite-expandable
标签都是一个版本,其中p
标签包含版本名称和发布日期,div
标签包含下载信息。
3. Dart项目创建
电脑上安装的Flutter SDK自带有Dart SDK,所以不再需要额外安装Dart SDK。如果电脑上没有,请参考官方文档Get the Dart SDK安装SDK。
- 通过Android Studio创建(需要安装Dart插件)
选择创建命令行/控制台应用(Console Application)即可。如果遇到错误:
Error: the folder specified as the Dart SDK home does not exist.
请检查Dart SDK路径是否正确。
- 通过命令行创建
dart create 项目名称
创建命令的更多使用方法可以通过执行dart create -h
命令查看:
Create a new Dart project.
Usage: dart create [arguments] <directory>
-h, --help Print this usage information.
-t, --template The project template to use.
[console] (default) A command-line application.
[package] A package containing shared Dart libraries.
[server-shelf] A server app using package:shelf.
[web] A web app that uses only core Dart libraries.
--[no-]pub Whether to run 'pub get' after the project has
been created.
(defaults to on)
--force Force project generation, even if the target
directory already exists.
4. Dart项目运行与调试
如果是通过IDE(Android Studio等)开发Dart项目,运行和调试很简单就不再赘述。
- 通过命令行运行Dart项目
cd Dart项目路径
dart run
dart run
命令会默认执行项目内bin
目录下的dart文件。
- 通过命令行调试Dart项目
cd Dart项目路径
dart run --pause-isolates-on-start --observe
执行输出:
The Dart VM service is listening on http://127.0.0.1:8181/zjUsxx99OtA=/
The Dart DevTools debugger and profiler is available at: http://127.0.0.1:8181/zjUsxx99OtA=/devtools/#/?uri=ws%3A%2F%2F127.0.0.1%3A8181%2FzjUsxx99OtA%3D%2Fws
Building package executable...
Built spider:spider.
...
命令行的作用只是运行项目并开启调试,实际是通过在浏览器打开输出结果中的链接进行调试。关键链接:
http://127.0.0.1:8181/zjUsxx99OtA=/devtools/#/?uri=ws%3A%2F%2F127.0.0.1%3A8181%2FzjUsxx99OtA%3D%2Fws
浏览器调试页面:
参考文档:
- Using DevTools with a command-line app
5. 第三库依赖
- 网络请求
Flutter开发中用习惯了dio库,所以这里也继续使用,当然用其他库也行。
- HTML解析
采用Dart官方的html库。
目前只需要依赖这两个库,在Dart项目的pubspec.yaml
文件中加上依赖配置:文章来源:https://www.toymoban.com/news/detail-436532.html
dependencies:
dio: ^5.1.1
html: ^0.15.2
6. 项目完整源码
-
bin/spider.dart
源码:
import 'package:spider/spider.dart' as spider;
void main(List<String> arguments) {
spider.startTask();
}
-
lib/spider.dart
源码:
import 'package:dio/dio.dart';
import 'package:html/dom.dart';
import 'package:html/parser.dart';
import './model/platform.dart';
import './model/version.dart';
const String androidStudioArchiveUrl =
'https://developer.android.com/studio/archive';
final Dio dio = Dio();
/// 开始任务
void startTask() {
loadHtml(androidStudioArchiveUrl).then((value) {
parseHtml(parse(value));
});
}
/// 加载网页
Future<dynamic> loadHtml(String url) async => (await dio.get(url)).data;
/// 解析网页
void parseHtml(Document document) {
// 找到iframe标签
var elements = document.getElementsByTagName('iframe');
if (elements.isNotEmpty) {
var iframe = elements.first;
var src = iframe.attributes['src'];
if (src != null && src.isNotEmpty) {
// 加载版本列表网页
loadHtml(src).then((value) {
parseVersionList(parse(value));
});
}
}
}
/// 解析版本列表
void parseVersionList(Document document) {
var elements = document.getElementsByClassName('all-downloads');
if (elements.isNotEmpty) {
var versions = <Version>[];
var div = elements.first;
for (var child in div.children) {
var version = getVersionInfo(child);
if (version != null) {
versions.add(version);
version.platforms = getDownloadInfo(child);
}
}
// 过滤非稳定版本(Canary/Beta/RC)并返回最新10个版本
versions = versions
.where((element) =>
!element.name.contains(RegExp(r'(Canary)|(Beta)|(RC)')))
.take(10)
.toList(growable: false);
var output = buildOutput(versions);
print(output);
}
}
/// 获取版本信息
Version? getVersionInfo(Element element) {
var versionElements = element.getElementsByClassName('expand-control');
if (versionElements.isNotEmpty) {
var versionInfo = versionElements.first.text.split('\n');
if (versionInfo.length > 1) {
return Version(versionInfo[0], versionInfo[1]);
}
}
return null;
}
/// 获取下载信息
List<Platform> getDownloadInfo(Element element) {
var platforms = <Platform>[];
var downloadElements = element.getElementsByClassName('downloads');
if (downloadElements.isNotEmpty) {
var downloadInfo = downloadElements.first.innerHtml.split('\n\n');
for (var i = 0; i < downloadInfo.length; ++i) {
var lines = downloadInfo[i].split('\n');
for (var line in lines) {
if (downloadInfo[i].contains('SHA-256 checksums')) {
// 解析checksums
if (line.contains('android-studio')) {
var info = line.split(' ');
if (info.length > 1) {
var checksums = info[0];
var fileName = info[1];
for (var platform in platforms) {
if (platform.installerUrl?.contains(fileName) == true) {
platform.installerChecksums = checksums;
break;
} else if (platform.zipFileUrl?.contains(fileName) == true) {
platform.zipFileChecksums = checksums;
break;
}
}
}
}
} else {
// 解析安装包和压缩文件
if (line.contains('<a href=')) {
var info = line.split(': ');
if (info.length > 1) {
Platform? platform;
for (var plat in platforms) {
if (plat.name == info[0]) {
platform = plat;
break;
}
}
if (platform == null) {
platform = Platform(info[0]);
platforms.add(platform);
}
if (downloadInfo[i].contains('Installers')) {
platform.installerUrl = info[1];
} else {
platform.zipFileUrl = info[1];
}
}
}
}
}
}
}
return platforms;
}
/// 构建输出
String buildOutput(List<Version> versions) {
// 创建表格
Element table = Element.tag('table');
// 创建表头
table.children.add(
Element.tag('tr')
..children.addAll([
Element.tag('th')..text = '版本名称',
Element.tag('th')..text = '发布日期',
Element.tag('th')..text = '适用平台',
Element.tag('th')..text = '安装包',
Element.tag('th')..text = '压缩文件'
]),
);
// 创建表格数据
for (var version in versions) {
var length = version.platforms.length;
List<List<Element>> elements =
List.generate(length, (index) => <Element>[], growable: false);
for (var i = 0; i < version.platforms.length; ++i) {
var platform = version.platforms[i];
if (i == 0) {
elements[i].addAll([
Element.tag('td')
..text = version.name
..attributes.addAll({'rowspan': '$length'}),
Element.tag('td')
..text = version.releaseDate
..attributes.addAll({'rowspan': '$length'})
]);
}
elements[i].add(Element.tag('td')..text = platform.name);
if (platform.installerUrl != null) {
elements[i].add(Element.tag('td')
..text =
'${platform.installerUrl}<br/>SHA-256 checksums:<br/>${platform.installerChecksums}');
} else {
elements[i].add(Element.tag('td')..text = '/');
}
if (platform.zipFileUrl != null) {
elements[i].add(Element.tag('td')
..text =
'${platform.zipFileUrl}<br/>SHA-256 checksums:<br/>${platform.zipFileChecksums}');
} else {
elements[i].add(Element.tag('td')..text = '/');
}
}
for (var element in elements) {
table.children.add(Element.tag('tr')..children.addAll(element));
}
}
return table.outerHtml.replaceAll('<', '<').replaceAll('>', '>');
}
-
lib/model/version.dart
源码:
import './platform.dart';
class Version {
String name;
String releaseDate;
List<Platform> platforms;
Version(this.name, this.releaseDate) : platforms = <Platform>[];
}
-
lib/model/platform.dart
源码:
class Platform {
String name;
String? installerUrl;
String? installerChecksums;
String? zipFileUrl;
String? zipFileChecksums;
Platform(this.name);
}
运行结果
版本名称 | 发布日期 | 适用平台 | 安装包 | 压缩文件 |
---|---|---|---|---|
Android Studio Flamingo | 2022.2.1 | April 13, 2023 | Chrome OS | android-studio-2022.2.1.18-cros.deb (844.9 MB) SHA-256 checksums: 8ed5269db85eea539671da2be445d3374efbb99f42106b022c84d102566db60c |
/ |
Mac (Apple Silicon) | android-studio-2022.2.1.18-mac_arm.dmg (1.2 GB) SHA-256 checksums: 745f0fa810c12b775944f6eb09fb5c0fdae79521c3b00d6e42d350e159f909fb |
android-studio-2022.2.1.18-mac_arm.zip (1.2 GB) SHA-256 checksums: 65036554076d76c9cfaf3f7a3a6184747a3f5c5362faf66dbd848fcd4a6cff45 |
||
Mac (Intel) | android-studio-2022.2.1.18-mac.dmg (1.2 GB) SHA-256 checksums: e770d71f3b269f7d8c95510b0a243ff6c467b2577056280885a360df087df5f1 |
android-studio-2022.2.1.18-mac.zip (1.2 GB) SHA-256 checksums: 9f0adcf8d8ba9dab8bd5d13e796c5c0c7a131b9319c60ab87a1af4cc25e07e20 |
||
Windows (64-bit) | android-studio-2022.2.1.18-windows.exe (1.0 GB) SHA-256 checksums: c3811117b4fb8b41f23d060915a9bf020eab037e183b0eb1614ef44ad5103b8a |
android-studio-2022.2.1.18-windows.zip (1.0 GB) SHA-256 checksums: 60c66f50ca155e8befc9ba683d248e5ad152103a7b2bb3211bfdd9e3e78424eb |
||
Linux | / | android-studio-2022.2.1.18-linux.tar.gz (1.1 GB) SHA-256 checksums: cdd852c4499b5f7402df44dfc69e8ca418ffc9a684caab34047476fd2cb24efc |
||
Android Studio Electric Eel | 2022.1.1 Patch 2 | February 27, 2023 | Chrome OS | android-studio-2022.1.1.21-cros.deb (801.3 MB) SHA-256 checksums: 2d522ddf6894eb3999ceb4150cedc701d91cefe1b356edd651d512489b35aa30 |
/ |
Mac (Apple Silicon) | android-studio-2022.1.1.21-mac_arm.dmg (1.1 GB) SHA-256 checksums: 2ced38b172557967109b19730c865e2a2a279969890f4432913a92ac152dcfbb |
android-studio-2022.1.1.21-mac_arm.zip (1.1 GB) SHA-256 checksums: 8171f686d7d9521620b895e89421b45a31cb7b77ffa451236f3ead788da37332 |
||
Mac (Intel) | android-studio-2022.1.1.21-mac.dmg (1.1 GB) SHA-256 checksums: d6a073066178be9d224a49e7d8469f00c21a14e7ffeb17a77f5aa43c31624086 |
android-studio-2022.1.1.21-mac.zip (1.1 GB) SHA-256 checksums: d91af16c2982e1655e6bc3935ea29be3ba4866dd89310c634d858f0766eb18e6 |
||
Windows (64-bit) | android-studio-2022.1.1.21-windows.exe (988.6 MB) SHA-256 checksums: 7f08286effd7c426e36a5dd2d49979d9d461874ca4a6fffe87e0092619b68c98 |
android-studio-2022.1.1.21-windows.zip (991.4 MB) SHA-256 checksums: 45db1f103b1113590e01ce73452ccbe6ca24af83188c51f8cabf57ceb9ae32ce |
||
Linux | / | android-studio-2022.1.1.21-linux.tar.gz (1.0 GB) SHA-256 checksums: 0bca26c45daf5cad79b131c34013b985d146a2526990ea2aa6d88792d51905a1 |
||
Android Studio Electric Eel | 2022.1.1 Patch 1 | January 31, 2023 | Chrome OS | android-studio-2022.1.1.20-cros.deb (805.3 MB) SHA-256 checksums: 5dd13ca2c2471e9bc6eb2d943dddfe30a0f17c2f6c5c3eae08878ab4c02bacef |
/ |
Mac (Apple Silicon) | android-studio-2022.1.1.20-mac_arm.dmg (1.1 GB) SHA-256 checksums: ebb8e842eda3d500adf1aece9eb5b9d9b5963016d0233b42ed12107b2cc952a9 |
android-studio-2022.1.1.20-mac_arm.zip (1.1 GB) SHA-256 checksums: abc4a5f480b2c0bdc2aab13dd1f3cfa2f9274f4a39ffa115cec01afb03052f15 |
||
Mac (Intel) | android-studio-2022.1.1.20-mac.dmg (1.1 GB) SHA-256 checksums: b7ee174891a5d72bf02e026455d992228446b80566dae7cafe1cdc9437a67e0e |
android-studio-2022.1.1.20-mac.zip (1.1 GB) SHA-256 checksums: d361756059d2c6c358d1db35cedf0fcf64abd264c0aee4acf669f8a5c6705356 |
||
Windows (64-bit) | android-studio-2022.1.1.20-windows.exe (988.6 MB) SHA-256 checksums: 5afb440754a8bd752340141b0c77ce9036e640b2932be60e50971b5e705b4d8e |
android-studio-2022.1.1.20-windows.zip (991.4 MB) SHA-256 checksums: 0d8974578d6b8e311b135388070e236bd16cddfd932579f2d719118b3dd022cb |
||
Linux | / | android-studio-2022.1.1.20-linux.tar.gz (1.0 GB) SHA-256 checksums: 517eda3a94ccdb74bb3413cd033fdf284c8afdda96a68934367a57f70724ea9e |
||
Android Studio Electric Eel | 2022.1.1 | January 12, 2023 | Chrome OS | android-studio-2022.1.1.19-cros.deb (806.6 MB) SHA-256 checksums: 8c7f76847a379d38fe475846fd6d8d68176a1fa3b6a5e84ea1a67477ec0549d2 |
/ |
Mac (Apple Silicon) | android-studio-2022.1.1.19-mac_arm.dmg (1.1 GB) SHA-256 checksums: 78c450022fc1a85af90ae64fced4eafbc1ca4149e60bb14085f4f1503ff1cb36 |
android-studio-2022.1.1.19-mac_arm.zip (1.1 GB) SHA-256 checksums: 01f2e05fd0159e37983a7eca9ddb0c41c2bef067230d8a241de483fc194545c0 |
||
Mac (Intel) | android-studio-2022.1.1.19-mac.dmg (1.1 GB) SHA-256 checksums: 3e965f50d7312859b4ea11cf530ca1a6ba0bc476a285fe614a2b2f3cde1fc2d0 |
android-studio-2022.1.1.19-mac.zip (1.1 GB) SHA-256 checksums: 495019dd6e57e1a706ee36e0e6562b5da1a0cb9b0bee1c50bb544625b79d7a51 |
||
Windows (64-bit) | android-studio-2022.1.1.19-windows.exe (992.1 MB) SHA-256 checksums: 1ae29028ef09838a04fffae463e4b008251019a33733dd27aa72ca6b2d9c1029 |
android-studio-2022.1.1.19-windows.zip (994.9 MB) SHA-256 checksums: 12eaad3efce8bdc54024f0c7efc37e4cb29139f855862c49fd0653030a1619af |
||
Linux | / | android-studio-2022.1.1.19-linux.tar.gz (1.0 GB) SHA-256 checksums: 96ec44e9ad82f3a241dbc7b3b88655e3d4f2137d784b545c3574270906a68d40 |
||
Android Studio Dolphin | 2021.3.1 Patch 1 | October 13, 2022 | Chrome OS | android-studio-2021.3.1.17-cros.deb (778.2 MB) SHA-256 checksums: 4d0c442d806fa8651c8e1baade6586c70aa46a61790aac0e91dfb4d5be7a7213 |
/ |
Mac (Apple Silicon) | android-studio-2021.3.1.17-mac_arm.dmg (1.0 GB) SHA-256 checksums: 0adbbddfa1e0e52e7bf21a5b560f60f8982ef82c0677db2d2ff7a2bd73ab156f |
android-studio-2021.3.1.17-mac_arm.zip (1.0 GB) SHA-256 checksums: 0e3923e5a4d7e7255c2e379ad2ab4e2aa5d52e6b2ed092938665c955214f3f05 |
||
Mac (Intel) | android-studio-2021.3.1.17-mac.dmg (1.0 GB) SHA-256 checksums: 4e10799559efc3445d61fb12bbf68e0a9801607a6114c6783bb26a93784d3150 |
android-studio-2021.3.1.17-mac.zip (1.0 GB) SHA-256 checksums: a7695e0aa16404717ebcc018f37e123b7cfa6ef04f3e207f949eb2b9fc2e9c28 |
||
Windows (64-bit) | android-studio-2021.3.1.17-windows.exe (957.3 MB) SHA-256 checksums: dd176791e15e921d4a3b3c9a251c61e5cfd28d75588fd717971dfbac030cd497 |
android-studio-2021.3.1.17-windows.zip (959.6 MB) SHA-256 checksums: bdce14643efee37a4d892994b3329496460062f9c65ed870ff61a80267cb206a |
||
Linux | / | android-studio-2021.3.1.17-linux.tar.gz (982.7 MB) SHA-256 checksums: 89adb0ce0ffa46b7894e7bfedb142b1f5d52c43c171e6a6cb9a95a49f77756ca |
||
Android Studio Dolphin | 2021.3.1 | September 15, 2022 | Chrome OS | android-studio-2021.3.1.16-cros.deb (777.6 MB) SHA-256 checksums: dbd78bbcc0d334f0aeec1849e69877c83bec08bc4db508c391ac11fdfc9ea65c |
/ |
Mac (Apple Silicon) | android-studio-2021.3.1.16-mac_arm.dmg (1.0 GB) SHA-256 checksums: 3c7c32b12644bda70a7845a7b9f2de196614c96a796dfd7d774e4c92a4b1eec0 |
android-studio-2021.3.1.16-mac_arm.zip (1.0 GB) SHA-256 checksums: bdf6bf858b1c017a24a0ce24d6979b00011b5fbe270ea007fc2184de8a4f6f40 |
||
Mac (Intel) | android-studio-2021.3.1.16-mac.dmg (1.0 GB) SHA-256 checksums: 4f1efabf0763ac06accb676790d1b5673f4cd8d995711fd9586d4742ba50ef05 |
android-studio-2021.3.1.16-mac.zip (1.0 GB) SHA-256 checksums: a00c4646e6a0bd2d029f0b22b329246817f31eef57d03e251c4f433f155bd866 |
||
Windows (64-bit) | android-studio-2021.3.1.16-windows.exe (950.7 MB) SHA-256 checksums: 35bcdf04192e31568914931dc6f52e1879763c211321bf5f2f87d70b84516e1e |
android-studio-2021.3.1.16-windows.zip (953.1 MB) SHA-256 checksums: 8235ab7aa34117c7a6c27bf30cea2f2a4043fabacd03b8b988bb689d41e09200 |
||
Linux | / | android-studio-2021.3.1.16-linux.tar.gz (976.2 MB) SHA-256 checksums: 1a725b585786f43b944336caf703360446e3f4b5e6e234057ff121e50ef91d9a |
||
Android Studio Chipmunk | 2021.2.1 Patch 2 | August 3, 2022 | Chrome OS | android-studio-2021.2.1.16-cros.deb (857.0 MB) SHA-256 checksums: b020a9a664d8237711e74198d5d07087858d993c0b7ade1f35cbaff668e8acd5 |
/ |
Mac (Apple Silicon) | android-studio-2021.2.1.16-mac_arm.dmg (1.1 GB) SHA-256 checksums: d4e06bcc6f614cd4b261fc6034529edb205b31b0e56824490a91350c3640806a |
android-studio-2021.2.1.16-mac_arm.zip (1.1 GB) SHA-256 checksums: 5754d3a8e46e5c243651007948601b7118793cbe9bc89e4c63101ee626141d5f |
||
Mac (Intel) | android-studio-2021.2.1.16-mac.dmg (1.1 GB) SHA-256 checksums: df46f2199fcf4c7e6b882ba16151ea1d2dd48a15f5c87d30224f1b5401d2b648 |
android-studio-2021.2.1.16-mac.zip (1.1 GB) SHA-256 checksums: bd5e47536f0de945a0bdec9ea15d720b0dbf692f39592f648614639e2ae543dd |
||
Windows (64-bit) | android-studio-2021.2.1.16-windows.exe (974.5 MB) SHA-256 checksums: 214fc7339060990d615bb02f2576474a3d6c152249fb67b03124162e111da4c7 |
android-studio-2021.2.1.16-windows.zip (986.6 MB) SHA-256 checksums: 78575a5b779d66630b757a32df0a26b8c052995623d649ed31787fb64eef14b1 |
||
Linux | / | android-studio-2021.2.1.16-linux.tar.gz (1.0 GB) SHA-256 checksums: aa5773a9e1da25bdb2367a8bdd2b623dbe0345170ed231a15b3f40e8888447dc |
||
Android Studio Chipmunk | 2021.2.1 Patch 1 | May 25, 2022 | Chrome OS | android-studio-2021.2.1.15-cros.deb (857.0 MB) SHA-256 checksums: 1300f2e48734ad57b9598f1f620ab2c72436b7fa60ced2d96266dadaf3078489 |
/ |
Mac (Apple Silicon) | android-studio-2021.2.1.15-mac_arm.dmg (1.1 GB) SHA-256 checksums: ce1fb8ba48c93e65fca450667786b4b98aa000ff274ca890e3de36efdabcc22b |
android-studio-2021.2.1.15-mac_arm.zip (1.1 GB) SHA-256 checksums: 1b150c65b84dfbe34490d06437b40b6421eb65a06b54c9fc6d9134574020b763 |
||
Mac (Intel) | android-studio-2021.2.1.15-mac.dmg (1.1 GB) SHA-256 checksums: fcaf413951119324ab22a0a4f2634bade90692991e9381cbf4a274e3cd60243a |
android-studio-2021.2.1.15-mac.zip (1.1 GB) SHA-256 checksums: feda0fad3c2c19e3438cc8132f573dad40c2eb2cccef3239757069740b481e63 |
||
Windows (64-bit) | android-studio-2021.2.1.15-windows.exe (974.4 MB) SHA-256 checksums: d99d2b24e232ac869d9c9e64cd19cd2572cfd4512e7df7941b812c4cd39d7b45 |
android-studio-2021.2.1.15-windows.zip (986.5 MB) SHA-256 checksums: a992449e546660fc5f8026f72b0f0e804f8d9c82a5e628d502ab60d1ab2b0f8c |
||
Linux | / | android-studio-2021.2.1.15-linux.tar.gz (1.0 GB) SHA-256 checksums: 0018e0dfc0dd2921700516f7a2c443377c557788da7fb0a45243ecb4300745be |
||
Android Studio Chipmunk | 2021.2.1 | May 9, 2022 | Chrome OS | android-studio-2021.2.1.14-cros.deb (857.0 MB) SHA-256 checksums: a9ed74d7641b32dac6bf4886f288ae9e6bc62f51fa645b7e21b2b999100614d7 |
/ |
Mac (Apple Silicon) | android-studio-2021.2.1.14-mac_arm.dmg (1.1 GB) SHA-256 checksums: eda598ecffd2640083031d81194cbeacf507c06febb8dc69f277f36fe47ba7a8 |
android-studio-2021.2.1.14-mac_arm.zip (1.1 GB) SHA-256 checksums: 1d288d0946d6abd68af45b23ec46610099fc603533803a7738e4c9edcbd2e66d |
||
Mac (Intel) | android-studio-2021.2.1.14-mac.dmg (1.1 GB) SHA-256 checksums: e3c4131cdb92ac3b2a8f287f7989528dd7a413477adc90f008748371921e80ee |
android-studio-2021.2.1.14-mac.zip (1.1 GB) SHA-256 checksums: 5952717cb21e0bbfbaa25ea6ee2053c7bf8ba849430065f9e26d2c655a6af757 |
||
Windows (64-bit) | android-studio-2021.2.1.14-windows.exe (974.4 MB) SHA-256 checksums: de733bcd1cd4fd23d474c76889db0ba9af0a5ae5ba7171fb9aa8e27311cf950b |
android-studio-2021.2.1.14-windows.zip (986.5 MB) SHA-256 checksums: db7dc822992f7905e86f5da757f36678fc5b0b587438da946c64892b27785bba |
||
Linux | / | android-studio-2021.2.1.14-linux.tar.gz (1.0 GB) SHA-256 checksums: e98bb08ae6b4eaa9401b555a294d98615a6ade4c85b43c630a880313eab3c7b3 |
||
Android Studio Bumblebee | 2021.1.1 Patch 3 | April 7, 2022 | Chrome OS | android-studio-2021.1.1.23-cros.deb (799.0 MB) SHA-256 checksums: f5733f44ab39d61b8885abc0d49b69a191d505114c154f3b5c4ee4d2f0b233e6 |
/ |
Mac (Apple Silicon) | android-studio-2021.1.1.23-mac_arm.dmg (971.0 MB) SHA-256 checksums: f2ab09466927f338b2c1ff27635be7cf24b08191bccdeb63ee68b33a01d0a05c |
android-studio-2021.1.1.23-mac_arm.zip (971.4 MB) SHA-256 checksums: 6c0844ffed7c56bdf023d50a0ad515d8437e1544dd6dbf16a8879fa11422ae50 |
||
Mac (Intel) | android-studio-2021.1.1.23-mac.dmg (974.2 MB) SHA-256 checksums: ce85ddff4c39f3eaa0b314cffa5f23987e255cce5d7aa900281884643f0a2db3 |
android-studio-2021.1.1.23-mac.zip (975.0 MB) SHA-256 checksums: 404b7e555e2913008c68d7ea3d9603448487dd543087c6d6fcf94e3e4cf71e16 |
||
Windows (64-bit) | android-studio-2021.1.1.23-windows.exe (914.8 MB) SHA-256 checksums: def7755842942be93c56db94c7d53eed70004b0ab1dc8883e959da0649032582 |
android-studio-2021.1.1.23-windows.zip (925.4 MB) SHA-256 checksums: a4d9bf8f4f67392052d70770495e572eda4d85d7a3d59c648e655a1b9d2aea27 |
||
Linux | / | android-studio-2021.1.1.23-linux.tar.gz (948.3 MB) SHA-256 checksums: b37506cd8ac7a80fe30cd1724e3be5c2d970a7aa6aa3fc9ca745afe3700aabcf |
最后
如果这篇文章对你有所帮助,请不要吝啬你的点赞👍加星🌟,谢谢~文章来源地址https://www.toymoban.com/news/detail-436532.html
到了这里,关于Dart - 爬取Android Studio历史版本信息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!