Unverified Commit 4fa91c94 authored by godofredoc's avatar godofredoc Committed by GitHub

Revert "[tool] ️ Install the corresponding APK in `flutter run` (#112768)" (#113614)

This reverts commit 0ad71e87.
parent 0ad71e87
......@@ -103,20 +103,11 @@ class AndroidApk extends ApplicationPackage implements PrebuiltApplicationPackag
required ProcessUtils processUtils,
required Logger logger,
required FileSystem fileSystem,
BuildInfo? buildInfo,
}) async {
final File apkFile;
final String filename;
if (buildInfo == null) {
filename = 'app.apk';
} else if (buildInfo.flavor == null) {
filename = 'app-${buildInfo.mode.name}.apk';
} else {
filename = 'app-${buildInfo.lowerCasedFlavor}-${buildInfo.mode.name}.apk';
}
File apkFile;
if (androidProject.isUsingGradle && androidProject.isSupportedVersion) {
apkFile = getApkDirectory(androidProject.parent).childFile(filename);
apkFile = getApkDirectory(androidProject.parent).childFile('app.apk');
if (apkFile.existsSync()) {
// Grab information from the .apk. The gradle build script might alter
// the application Id, so we need to look at what was actually built.
......@@ -133,7 +124,7 @@ class AndroidApk extends ApplicationPackage implements PrebuiltApplicationPackag
// command will grab a new AndroidApk after building, to get the updated
// IDs.
} else {
apkFile = fileSystem.file(fileSystem.path.join(getAndroidBuildDirectory(), filename));
apkFile = fileSystem.file(fileSystem.path.join(getAndroidBuildDirectory(), 'app.apk'));
}
final File manifest = androidProject.appManifestFile;
......
......@@ -465,16 +465,13 @@ class AndroidGradleBuilder implements AndroidBuilder {
);
return;
}
// Gradle produced APKs.
// Gradle produced an APK.
final Iterable<String> apkFilesPaths = project.isModule
? findApkFilesModule(project, androidBuildInfo, _logger, _usage)
: listApkPaths(androidBuildInfo);
final Directory apkDirectory = getApkDirectory(project);
// Copy the first APK to app.apk.
// TODO(AlexV525): Remove the copying once we can identify there are no tools is using the app.apk.
final File firstApkFile = apkDirectory.childFile(apkFilesPaths.first);
if (!firstApkFile.existsSync()) {
final File apkFile = apkDirectory.childFile(apkFilesPaths.first);
if (!apkFile.existsSync()) {
_exitWithExpectedFileNotFound(
project: project,
fileExtension: '.apk',
......@@ -482,35 +479,27 @@ class AndroidGradleBuilder implements AndroidBuilder {
usage: _usage,
);
}
firstApkFile.copySync(apkDirectory.childFile('app.apk').path);
// Generate sha1 for every generated APKs.
for (final File apkFile in apkFilesPaths.map(apkDirectory.childFile)) {
if (!apkFile.existsSync()) {
_exitWithExpectedFileNotFound(
project: project,
fileExtension: '.apk',
logger: _logger,
usage: _usage,
);
}
final String filename = apkFile.basename;
_logger.printTrace('Calculate SHA1: $apkDirectory/$filename');
final File apkShaFile = apkDirectory.childFile('$filename.sha1');
apkShaFile.writeAsStringSync(_calculateSha(apkFile));
// Copy the first APK to app.apk, so `flutter run` can find it.
// TODO(egarciad): Handle multiple APKs.
apkFile.copySync(apkDirectory
.childFile('app.apk')
.path);
_logger.printTrace('calculateSha: $apkDirectory/app.apk');
final String appSize = (buildInfo.mode == BuildMode.debug)
? '' // Don't display the size when building a debug variant.
: ' (${getSizeAsMB(apkFile.lengthSync())})';
_logger.printStatus(
'${_logger.terminal.successMark} Built ${_fileSystem.path.relative(apkFile.path)}$appSize.',
color: TerminalColor.green,
);
final File apkShaFile = apkDirectory.childFile('app.apk.sha1');
apkShaFile.writeAsStringSync(_calculateSha(apkFile));
if (buildInfo.codeSizeDirectory != null) {
await _performCodeSizeAnalysis('apk', apkFile, androidBuildInfo);
}
final String appSize = (buildInfo.mode == BuildMode.debug)
? '' // Don't display the size when building a debug variant.
: ' (${getSizeAsMB(apkFile.lengthSync())})';
_logger.printStatus(
'${_logger.terminal.successMark} Built ${_fileSystem.path.relative(apkFile.path)}$appSize.',
color: TerminalColor.green,
);
if (buildInfo.codeSizeDirectory != null) {
await _performCodeSizeAnalysis('apk', apkFile, androidBuildInfo);
}
}
......
......@@ -66,7 +66,6 @@ class FlutterApplicationPackageFactory extends ApplicationPackageFactory {
androidSdk: _androidSdk,
userMessages: _userMessages,
fileSystem: _fileSystem,
buildInfo: buildInfo,
);
}
return AndroidApk.fromApk(
......
......@@ -65,7 +65,7 @@ void main() {
platform: FakePlatform(),
androidSdk: androidSdk,
);
final File apkFile = fileSystem.file('app-debug.apk')..createSync();
final File apkFile = fileSystem.file('app.apk')..createSync();
final AndroidApk apk = AndroidApk(
id: 'FlutterApp',
applicationPackage: apkFile,
......@@ -88,7 +88,7 @@ void main() {
command: <String>['adb', '-s', '1234', 'shell', 'pm', 'list', 'packages', 'FlutterApp'],
));
processManager.addCommand(const FakeCommand(
command: <String>['adb', '-s', '1234', 'install', '-t', '-r', 'app-debug.apk'],
command: <String>['adb', '-s', '1234', 'install', '-t', '-r', 'app.apk'],
));
processManager.addCommand(kShaCommand);
processManager.addCommand(const FakeCommand(
......@@ -132,7 +132,7 @@ void main() {
platform: FakePlatform(),
androidSdk: androidSdk,
);
final File apkFile = fileSystem.file('app-debug.apk')..createSync();
final File apkFile = fileSystem.file('app.apk')..createSync();
final AndroidApk apk = AndroidApk(
id: 'FlutterApp',
applicationPackage: apkFile,
......@@ -170,7 +170,7 @@ void main() {
platform: FakePlatform(),
androidSdk: androidSdk,
);
final File apkFile = fileSystem.file('app-debug.apk')..createSync();
final File apkFile = fileSystem.file('app.apk')..createSync();
final AndroidApk apk = AndroidApk(
id: 'FlutterApp',
applicationPackage: apkFile,
......@@ -200,7 +200,7 @@ void main() {
'-r',
'--user',
'10',
'app-debug.apk',
'app.apk',
],
stdout: '\n\nThe Dart VM service is listening on http://127.0.0.1:456\n\n',
));
......
......@@ -31,7 +31,7 @@ const FakeCommand kInstallCommand = FakeCommand(
'-r',
'--user',
'10',
'app-debug.apk',
'app.apk',
],
);
const FakeCommand kStoreShaCommand = FakeCommand(
......@@ -71,7 +71,7 @@ void main() {
stdout: '[ro.build.version.sdk]: [11]',
),
]);
final File apk = fileSystem.file('app-debug.apk')..createSync();
final File apk = fileSystem.file('app.apk')..createSync();
final AndroidApk androidApk = AndroidApk(
applicationPackage: apk,
id: 'app',
......@@ -87,7 +87,7 @@ void main() {
});
testWithoutContext('Cannot install app if APK file is missing', () async {
final File apk = fileSystem.file('app-debug.apk');
final File apk = fileSystem.file('app.apk');
final AndroidApk androidApk = AndroidApk(
applicationPackage: apk,
id: 'app',
......@@ -115,7 +115,7 @@ void main() {
kInstallCommand,
kStoreShaCommand,
]);
final File apk = fileSystem.file('app-debug.apk')..createSync();
final File apk = fileSystem.file('app.apk')..createSync();
final AndroidApk androidApk = AndroidApk(
applicationPackage: apk,
id: 'app',
......@@ -144,7 +144,7 @@ void main() {
kInstallCommand,
kStoreShaCommand,
]);
final File apk = fileSystem.file('app-debug.apk')..createSync();
final File apk = fileSystem.file('app.apk')..createSync();
final AndroidApk androidApk = AndroidApk(
applicationPackage: apk,
id: 'app',
......@@ -182,13 +182,13 @@ void main() {
'-r',
'--user',
'jane',
'app-debug.apk',
'app.apk',
],
exitCode: 1,
stderr: 'Exception occurred while executing: java.lang.IllegalArgumentException: Bad user number: jane',
),
]);
final File apk = fileSystem.file('app-debug.apk')..createSync();
final File apk = fileSystem.file('app.apk')..createSync();
final AndroidApk androidApk = AndroidApk(
applicationPackage: apk,
id: 'app',
......@@ -221,8 +221,8 @@ void main() {
stdout: 'example_sha',
),
]);
final File apk = fileSystem.file('app-debug.apk')..createSync();
fileSystem.file('app-debug.apk.sha1').writeAsStringSync('example_sha');
final File apk = fileSystem.file('app.apk')..createSync();
fileSystem.file('app.apk.sha1').writeAsStringSync('example_sha');
final AndroidApk androidApk = AndroidApk(
applicationPackage: apk,
id: 'app',
......@@ -254,7 +254,7 @@ void main() {
stdout: 'different_example_sha',
),
const FakeCommand(
command: <String>['adb', '-s', '1234', 'install', '-t', '-r', '--user', '10', 'app-debug.apk'],
command: <String>['adb', '-s', '1234', 'install', '-t', '-r', '--user', '10', 'app.apk'],
exitCode: 1,
stderr: '[INSTALL_FAILED_INSUFFICIENT_STORAGE]',
),
......@@ -262,8 +262,8 @@ void main() {
kInstallCommand,
const FakeCommand(command: <String>['adb', '-s', '1234', 'shell', 'echo', '-n', 'example_sha', '>', '/data/local/tmp/sky.app.sha1']),
]);
final File apk = fileSystem.file('app-debug.apk')..createSync();
fileSystem.file('app-debug.apk.sha1').writeAsStringSync('example_sha');
final File apk = fileSystem.file('app.apk')..createSync();
fileSystem.file('app.apk.sha1').writeAsStringSync('example_sha');
final AndroidApk androidApk = AndroidApk(
applicationPackage: apk,
id: 'app',
......@@ -291,12 +291,12 @@ void main() {
stdout: '\n'
),
const FakeCommand(
command: <String>['adb', '-s', '1234', 'install', '-t', '-r', '--user', '10', 'app-debug.apk'],
command: <String>['adb', '-s', '1234', 'install', '-t', '-r', '--user', '10', 'app.apk'],
exitCode: 1,
stderr: '[INSTALL_FAILED_INSUFFICIENT_STORAGE]',
),
]);
final File apk = fileSystem.file('app-debug.apk')..createSync();
final File apk = fileSystem.file('app.apk')..createSync();
final AndroidApk androidApk = AndroidApk(
applicationPackage: apk,
id: 'app',
......
......@@ -121,20 +121,6 @@ void main() {
});
group('listApkPaths', () {
testWithoutContext('Finds APK without flavor in debug', () {
final Iterable<String> apks = listApkPaths(
const AndroidBuildInfo(BuildInfo(BuildMode.debug, '', treeShakeIcons: false)),
);
expect(apks, <String>['app-debug.apk']);
});
testWithoutContext('Finds APK with flavor in debug', () {
final Iterable<String> apks = listApkPaths(
const AndroidBuildInfo(BuildInfo(BuildMode.debug, 'flavor1', treeShakeIcons: false)),
);
expect(apks, <String>['app-flavor1-debug.apk']);
});
testWithoutContext('Finds APK without flavor in release', () {
final Iterable<String> apks = listApkPaths(
const AndroidBuildInfo(BuildInfo(BuildMode.release, '', treeShakeIcons: false)),
......
......@@ -57,7 +57,7 @@ void main() {
testUsingContext('Licenses not available, platform and buildtools available, apk exists', () async {
const String aaptPath = 'aaptPath';
final File apkFile = globals.fs.file('app-debug.apk');
final File apkFile = globals.fs.file('app.apk');
final FakeAndroidSdkVersion sdkVersion = FakeAndroidSdkVersion();
sdkVersion.aaptPath = aaptPath;
sdk.latestVersion = sdkVersion;
......@@ -81,7 +81,7 @@ void main() {
TargetPlatform.android_arm,
applicationBinary: apkFile,
))!;
expect(applicationPackage.name, 'app-debug.apk');
expect(applicationPackage.name, 'app.apk');
expect(applicationPackage, isA<PrebuiltApplicationPackage>());
expect((applicationPackage as PrebuiltApplicationPackage).applicationPackage.path, apkFile.path);
expect(fakeProcessManager, hasNoRemainingExpectations);
......@@ -103,7 +103,7 @@ void main() {
await ApplicationPackageFactory.instance!.getPackageForPlatform(
TargetPlatform.android_arm,
applicationBinary: globals.fs.file('app-debug.apk'),
applicationBinary: globals.fs.file('app.apk'),
);
expect(fakeProcessManager, hasNoRemainingExpectations);
}, overrides: overrides);
......
......@@ -312,7 +312,7 @@ void main() {
<FlutterDevice>[
flutterDevice,
],
applicationBinary: globals.fs.file('app-debug.apk'),
applicationBinary: globals.fs.file('app.apk'),
stayResident: false,
debuggingOptions: DebuggingOptions.enabled(BuildInfo.debug),
target: 'main.dart',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment