| // Copyright 2014 The Flutter 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 'base/context.dart'; |
| import 'base/file_system.dart'; |
| import 'build_info.dart'; |
| |
| abstract class ApplicationPackageFactory { |
| static ApplicationPackageFactory? get instance => context.get<ApplicationPackageFactory>(); |
| |
| /// Create an [ApplicationPackage] for the given platform. |
| Future<ApplicationPackage?> getPackageForPlatform( |
| TargetPlatform platform, { |
| BuildInfo? buildInfo, |
| File? applicationBinary, |
| }); |
| } |
| |
| abstract class ApplicationPackage { |
| ApplicationPackage({ required this.id }) |
| : assert(id != null); |
| |
| /// Package ID from the Android Manifest or equivalent. |
| final String id; |
| |
| String? get name; |
| |
| String? get displayName => name; |
| |
| @override |
| String toString() => displayName ?? id; |
| } |
| |
| /// An interface for application package that is created from prebuilt binary. |
| abstract class PrebuiltApplicationPackage implements ApplicationPackage { |
| /// The application bundle of the prebuilt application. |
| /// |
| /// The same ApplicationPackage should be able to be recreated by passing |
| /// the file to [FlutterApplicationPackageFactory.getPackageForPlatform]. |
| FileSystemEntity get applicationPackage; |
| } |