Unverified Commit c6359dc9 authored by Jenn Magder's avatar Jenn Magder Committed by GitHub

Remove globals from android application_package (#83852)

parent 02b21e5f
...@@ -18,7 +18,6 @@ import '../base/logger.dart'; ...@@ -18,7 +18,6 @@ import '../base/logger.dart';
import '../base/process.dart'; import '../base/process.dart';
import '../base/user_messages.dart'; import '../base/user_messages.dart';
import '../build_info.dart'; import '../build_info.dart';
import '../globals_null_migrated.dart' as globals;
import '../project.dart'; import '../project.dart';
import 'android_sdk.dart'; import 'android_sdk.dart';
import 'gradle.dart'; import 'gradle.dart';
...@@ -42,6 +41,7 @@ class AndroidApk extends ApplicationPackage { ...@@ -42,6 +41,7 @@ class AndroidApk extends ApplicationPackage {
@required ProcessManager processManager, @required ProcessManager processManager,
@required UserMessages userMessages, @required UserMessages userMessages,
@required Logger logger, @required Logger logger,
@required ProcessUtils processUtils,
}) { }) {
final String aaptPath = androidSdk?.latestVersion?.aaptPath; final String aaptPath = androidSdk?.latestVersion?.aaptPath;
if (aaptPath == null || !processManager.canRun(aaptPath)) { if (aaptPath == null || !processManager.canRun(aaptPath)) {
...@@ -51,7 +51,7 @@ class AndroidApk extends ApplicationPackage { ...@@ -51,7 +51,7 @@ class AndroidApk extends ApplicationPackage {
String apptStdout; String apptStdout;
try { try {
apptStdout = globals.processUtils.runSync( apptStdout = processUtils.runSync(
<String>[ <String>[
aaptPath, aaptPath,
'dump', 'dump',
...@@ -62,7 +62,7 @@ class AndroidApk extends ApplicationPackage { ...@@ -62,7 +62,7 @@ class AndroidApk extends ApplicationPackage {
throwOnError: true, throwOnError: true,
).stdout.trim(); ).stdout.trim();
} on ProcessException catch (error) { } on ProcessException catch (error) {
globals.printError('Failed to extract manifest from APK: $error.'); logger.printError('Failed to extract manifest from APK: $error.');
return null; return null;
} }
...@@ -117,6 +117,7 @@ class AndroidApk extends ApplicationPackage { ...@@ -117,6 +117,7 @@ class AndroidApk extends ApplicationPackage {
processManager: processManager, processManager: processManager,
logger: logger, logger: logger,
userMessages: userMessages, userMessages: userMessages,
processUtils: processUtils,
); );
} }
// The .apk hasn't been built yet, so we work with what we have. The run // The .apk hasn't been built yet, so we work with what we have. The run
...@@ -209,24 +210,24 @@ class AndroidApk extends ApplicationPackage { ...@@ -209,24 +210,24 @@ class AndroidApk extends ApplicationPackage {
String get name => file.basename; String get name => file.basename;
} }
abstract class _Entry {
const _Entry(this.parent, this.level);
class _Entry { final _Element parent;
_Element parent; final int level;
int level;
} }
class _Element extends _Entry { class _Element extends _Entry {
_Element.fromLine(String line, _Element parent) { _Element._(this.name, _Element parent, int level) : super(parent, level);
factory _Element.fromLine(String line, _Element parent) {
// E: application (line=29) // E: application (line=29)
final List<String> parts = line.trimLeft().split(' '); final List<String> parts = line.trimLeft().split(' ');
name = parts[1]; return _Element._(parts[1], parent, line.length - line.trimLeft().length);
level = line.length - line.trimLeft().length;
this.parent = parent;
children = <_Entry>[];
} }
List<_Entry> children; final List<_Entry> children = <_Entry>[];
String name; final String name;
void addChild(_Entry child) { void addChild(_Entry child) {
children.add(child); children.add(child);
...@@ -252,20 +253,17 @@ class _Element extends _Entry { ...@@ -252,20 +253,17 @@ class _Element extends _Entry {
} }
class _Attribute extends _Entry { class _Attribute extends _Entry {
_Attribute.fromLine(String line, _Element parent) { const _Attribute._(this.key, this.value, _Element parent, int level) : super(parent, level);
factory _Attribute.fromLine(String line, _Element parent) {
// A: android:label(0x01010001)="hello_world" (Raw: "hello_world") // A: android:label(0x01010001)="hello_world" (Raw: "hello_world")
const String attributePrefix = 'A: '; const String attributePrefix = 'A: ';
final List<String> keyVal = line final List<String> keyVal = line.substring(line.indexOf(attributePrefix) + attributePrefix.length).split('=');
.substring(line.indexOf(attributePrefix) + attributePrefix.length) return _Attribute._(keyVal[0], keyVal[1], parent, line.length - line.trimLeft().length);
.split('=');
key = keyVal[0];
value = keyVal[1];
level = line.length - line.trimLeft().length;
this.parent = parent;
} }
String key; final String key;
String value; final String value;
} }
class ApkManifestData { class ApkManifestData {
...@@ -388,10 +386,13 @@ class ApkManifestData { ...@@ -388,10 +386,13 @@ class ApkManifestData {
return null; return null;
} }
final Map<String, Map<String, String>> map = <String, Map<String, String>>{}; final Map<String, Map<String, String>> map = <String, Map<String, String>>{
map['package'] = <String, String>{'name': packageName}; if (packageName != null)
map['version-code'] = <String, String>{'name': versionCode.toString()}; 'package': <String, String>{'name': packageName},
map['launchable-activity'] = <String, String>{'name': activityName}; 'version-code': <String, String>{'name': versionCode.toString()},
if (activityName != null)
'launchable-activity': <String, String>{'name': activityName},
};
return ApkManifestData._(map); return ApkManifestData._(map);
} }
......
...@@ -77,6 +77,7 @@ class FlutterApplicationPackageFactory extends ApplicationPackageFactory { ...@@ -77,6 +77,7 @@ class FlutterApplicationPackageFactory extends ApplicationPackageFactory {
logger: _logger, logger: _logger,
androidSdk: _androidSdk, androidSdk: _androidSdk,
userMessages: _userMessages, userMessages: _userMessages,
processUtils: _processUtils,
); );
case TargetPlatform.ios: case TargetPlatform.ios:
return applicationBinary == null return applicationBinary == null
......
...@@ -12,6 +12,7 @@ import 'package:flutter_tools/src/application_package.dart'; ...@@ -12,6 +12,7 @@ import 'package:flutter_tools/src/application_package.dart';
import 'package:flutter_tools/src/base/file_system.dart'; import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/base/logger.dart';
import 'package:flutter_tools/src/base/os.dart'; import 'package:flutter_tools/src/base/os.dart';
import 'package:flutter_tools/src/base/process.dart';
import 'package:flutter_tools/src/base/user_messages.dart'; import 'package:flutter_tools/src/base/user_messages.dart';
import 'package:flutter_tools/src/build_info.dart'; import 'package:flutter_tools/src/build_info.dart';
import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/cache.dart';
...@@ -122,12 +123,14 @@ void main() { ...@@ -122,12 +123,14 @@ void main() {
testWithoutContext('returns null when failed to extract manifest', () async { testWithoutContext('returns null when failed to extract manifest', () async {
final AndroidSdkVersion sdkVersion = FakeAndroidSdkVersion(); final AndroidSdkVersion sdkVersion = FakeAndroidSdkVersion();
sdk.latestVersion = sdkVersion; sdk.latestVersion = sdkVersion;
final Logger logger = BufferLogger.test();
final AndroidApk androidApk = AndroidApk.fromApk( final AndroidApk androidApk = AndroidApk.fromApk(
null, null,
processManager: fakeProcessManager, processManager: fakeProcessManager,
logger: BufferLogger.test(), logger: logger,
userMessages: UserMessages(), userMessages: UserMessages(),
androidSdk: sdk, androidSdk: sdk,
processUtils: ProcessUtils(processManager: fakeProcessManager, logger: logger),
); );
expect(androidApk, isNull); expect(androidApk, isNull);
......
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