From 568a6e1e65ce6234d3d0e007633f801e7b424326 Mon Sep 17 00:00:00 2001 From: Yegor Date: Mon, 5 Dec 2016 12:46:59 -0800 Subject: [PATCH] measure IPA size (#7158) --- .../bin/tasks/basic_material_app__size.dart | 4 +++- .../tasks/basic_material_app_ios__size.dart | 14 ++++++++++++++ dev/devicelab/lib/tasks/size_tests.dart | 18 ++++++++++++++---- dev/devicelab/manifest.yaml | 16 +++++++++++----- 4 files changed, 42 insertions(+), 10 deletions(-) create mode 100644 dev/devicelab/bin/tasks/basic_material_app_ios__size.dart diff --git a/dev/devicelab/bin/tasks/basic_material_app__size.dart b/dev/devicelab/bin/tasks/basic_material_app__size.dart index c0202c95447..c3aa6acae9e 100644 --- a/dev/devicelab/bin/tasks/basic_material_app__size.dart +++ b/dev/devicelab/bin/tasks/basic_material_app__size.dart @@ -4,9 +4,11 @@ import 'dart:async'; -import 'package:flutter_devicelab/tasks/size_tests.dart'; +import 'package:flutter_devicelab/framework/adb.dart'; import 'package:flutter_devicelab/framework/framework.dart'; +import 'package:flutter_devicelab/tasks/size_tests.dart'; Future main() async { + deviceOperatingSystem = DeviceOperatingSystem.android; await task(createBasicMaterialAppSizeTest()); } diff --git a/dev/devicelab/bin/tasks/basic_material_app_ios__size.dart b/dev/devicelab/bin/tasks/basic_material_app_ios__size.dart new file mode 100644 index 00000000000..a84e5baa93e --- /dev/null +++ b/dev/devicelab/bin/tasks/basic_material_app_ios__size.dart @@ -0,0 +1,14 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'dart:async'; + +import 'package:flutter_devicelab/framework/adb.dart'; +import 'package:flutter_devicelab/framework/framework.dart'; +import 'package:flutter_devicelab/tasks/size_tests.dart'; + +Future main() async { + deviceOperatingSystem = DeviceOperatingSystem.ios; + await task(createBasicMaterialAppSizeTest()); +} diff --git a/dev/devicelab/lib/tasks/size_tests.dart b/dev/devicelab/lib/tasks/size_tests.dart index b1f44f68eea..f906cae15e0 100644 --- a/dev/devicelab/lib/tasks/size_tests.dart +++ b/dev/devicelab/lib/tasks/size_tests.dart @@ -7,6 +7,8 @@ import 'dart:io'; import '../framework/framework.dart'; import '../framework/utils.dart'; +import 'package:flutter_devicelab/framework/adb.dart'; + TaskFunction createBasicMaterialAppSizeTest() { return () async { const String sampleAppName = 'sample_flutter_app'; @@ -15,7 +17,7 @@ TaskFunction createBasicMaterialAppSizeTest() { if (await sampleDir.exists()) rmTree(sampleDir); - int apkSizeInBytes; + int releaseSizeInBytes; await inDirectory(Directory.systemTemp, () async { await flutter('create', options: [sampleAppName]); @@ -26,13 +28,21 @@ TaskFunction createBasicMaterialAppSizeTest() { await inDirectory(sampleDir, () async { await flutter('packages', options: ['get']); await flutter('build', options: ['clean']); - await flutter('build', options: ['apk', '--release']); - apkSizeInBytes = await file('${sampleDir.path}/build/app.apk').length(); + + if (deviceOperatingSystem == DeviceOperatingSystem.ios) { + await flutter('build', options: ['ios', '--release']); + // IPAs are created manually AFAICT + await exec('tar', ['-zcf', 'build/app.ipa', 'build/ios/Release-iphoneos/Runner.app/']); + releaseSizeInBytes = await file('${sampleDir.path}/build/app.ipa').length(); + } else { + await flutter('build', options: ['apk', '--release']); + releaseSizeInBytes = await file('${sampleDir.path}/build/app.apk').length(); + } }); }); return new TaskResult.success( - {'release_size_in_bytes': apkSizeInBytes}, + {'release_size_in_bytes': releaseSizeInBytes}, benchmarkScoreKeys: ['release_size_in_bytes']); }; } diff --git a/dev/devicelab/manifest.yaml b/dev/devicelab/manifest.yaml index 568c92924cd..3d9b80d0e38 100644 --- a/dev/devicelab/manifest.yaml +++ b/dev/devicelab/manifest.yaml @@ -52,7 +52,7 @@ tasks: basic_material_app__size: description: > - Measures the APK/IPA sizes of a basic material app. + Measures the APK size of a basic material app. stage: devicelab required_agent_capabilities: ["has-android-device"] @@ -138,10 +138,10 @@ tasks: required_agent_capabilities: ["has-ios-device"] flutter_gallery_ios__start_up: - stage: devicelab_ios - required_agent_capabilities: ["has-ios-device"] description: > Measures the startup time of the Flutter Gallery app on iOS. + stage: devicelab_ios + required_agent_capabilities: ["has-ios-device"] complex_layout_ios__start_up: description: > @@ -150,8 +150,14 @@ tasks: required_agent_capabilities: ["has-ios-device"] flutter_gallery_ios__transition_perf: - stage: devicelab_ios - required_agent_capabilities: ["has-ios-device"] description: > Measures the performance of screen transitions in Flutter Gallery on iOS. + stage: devicelab_ios + required_agent_capabilities: ["has-ios-device"] + + basic_material_app_ios__size: + description: > + Measures the IPA size of a basic material app. + stage: devicelab_ios + required_agent_capabilities: ["has-android-device"]