anchor.diff:  import 'dart:io';
   
   import 'package:meta/meta.dart';
  +import 'package:path/path.dart' as p;
   
   import '../framework/adb.dart';
   import '../framework/framework.dart';
  
positive.code:         watch.start();
          await flutter('build', options: options);
          watch.stop();
          // IPAs are created manually AFAICT
          await exec('tar', <String>['-zcf', 'build/app.ipa', 'build/ios/Release-iphoneos/Runner.app/']);
          releaseSizeInBytes = await file('$cwd/build/app.ipa').length();
          break;
        case DeviceOperatingSystem.android:
          options.insert(0, 'apk');
  
negative.code:     return _kSdkNameToMetricNameMapping[sdkName];
    }
  
    static Future<Map<String, dynamic>> getSizesFromIosApp(String appPath) async {
      // Thin the binary to only contain one architecture.
      final String xcodeBackend = p.join(flutterDirectory.path, 'packages', 'flutter_tools', 'bin', 'xcode_backend.sh');
      await exec(xcodeBackend, <String>['thin'], environment: <String, String>{
        'ARCHS': 'arm64',
        'WRAPPER_NAME': p.basename(appPath),
        'TARGET_BUILD_DIR': p.dirname(appPath),
      });
  
      final File appFramework = new File(p.join(appPath, 'Frameworks', 'App.framework', 'App'));
      final File flutterFramework = new File(p.join(appPath, 'Frameworks', 'Flutter.framework', 'Flutter'));
  
      return <String, dynamic>{
        'app_framework_uncompressed_bytes': await appFramework.length(),
        'flutter_framework_uncompressed_bytes': await flutterFramework.length(),
      };
    }
  
  
    static Future<Map<String, dynamic>> getSizesFromApk(String apkPath) async {
      final  String output = await eval('unzip', <String>['-v', apkPath]);
      final List<String> lines = output.split('\n');
  