Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Set the application-id in the Linux shell #60053

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 11 commits into from
Jul 29, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion packages/flutter_tools/lib/src/commands/create.dart
Original file line number Diff line number Diff line change
Expand Up @@ -747,13 +747,18 @@ https://flutter.dev/docs/development/packages-and-plugins/developing-packages#pl
final String pluginClassSnakeCase = snakeCase(pluginClass);
final String pluginClassCapitalSnakeCase = pluginClassSnakeCase.toUpperCase();
final String appleIdentifier = _createUTIIdentifier(organization, projectName);
final String androidIdentifier = _createAndroidIdentifier(organization, projectName);
// Linux uses the same scheme as the Android identifier.
// https://developer.gnome.org/gio/stable/GApplication.html#g-application-id-is-valid
final String linuxIdentifier = androidIdentifier;

return <String, dynamic>{
'organization': organization,
'projectName': projectName,
'androidIdentifier': _createAndroidIdentifier(organization, projectName),
'androidIdentifier': androidIdentifier,
'iosIdentifier': appleIdentifier,
'macosIdentifier': appleIdentifier,
'linuxIdentifier': linuxIdentifier,
'description': projectDescription,
'dartSdk': '$flutterRoot/bin/cache/dart-sdk',
'androidMinApiLevel': android_common.minApiLevel,
Expand Down
6 changes: 6 additions & 0 deletions packages/flutter_tools/lib/src/project.dart
Original file line number Diff line number Diff line change
Expand Up @@ -1039,6 +1039,8 @@ class LinuxProject extends FlutterProjectPlatform implements CmakeBasedProject {
@override
String get pluginConfigKey => LinuxPlugin.kConfigKey;

static final RegExp _applicationIdPattern = RegExp(r'''^\s*set\s*\(\s*APPLICATION_ID\s*"(.*)"\s*\)\s*$''');

Directory get _editableDirectory => parent.directory.childDirectory('linux');

/// The directory in the project that is managed by Flutter. As much as
Expand Down Expand Up @@ -1067,6 +1069,10 @@ class LinuxProject extends FlutterProjectPlatform implements CmakeBasedProject {
Directory get pluginSymlinkDirectory => ephemeralDirectory.childDirectory('.plugin_symlinks');

Future<void> ensureReadyForPlatformSpecificTooling() async {}

String get applicationId {
return _firstMatchInFile(cmakeFile, _applicationIdPattern)?.group(1);
}
}

/// The Fuchsia sub project
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ cmake_minimum_required(VERSION 3.10)
project(runner LANGUAGES CXX)

set(BINARY_NAME "{{projectName}}")
set(APPLICATION_ID "{{linuxIdentifier}}")

cmake_policy(SET CMP0063 NEW)

Expand Down Expand Up @@ -32,6 +33,8 @@ add_subdirectory(${FLUTTER_MANAGED_DIR})
find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0)

add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}")

# Application build
add_executable(${BINARY_NAME}
"main.cc"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,5 +40,7 @@ static void my_application_class_init(MyApplicationClass* klass) {
static void my_application_init(MyApplication* self) {}

MyApplication* my_application_new() {
return MY_APPLICATION(g_object_new(my_application_get_type(), nullptr));
return MY_APPLICATION(g_object_new(my_application_get_type(),
"application-id", APPLICATION_ID,
nullptr));
}
Original file line number Diff line number Diff line change
Expand Up @@ -1037,7 +1037,7 @@ void main() {
Platform: _kNoColorTerminalPlatform,
});

testUsingContext('has correct application id for android and bundle id for ios', () async {
testUsingContext('has correct application id for android, bundle id for ios and application id for Linux', () async {
Cache.flutterRoot = '../..';
when(mockFlutterVersion.frameworkRevision).thenReturn(frameworkRevision);
when(mockFlutterVersion.channel).thenReturn(frameworkChannel);
Expand Down Expand Up @@ -1068,6 +1068,10 @@ void main() {
project.android.applicationId,
'com.example.hello_flutter',
);
expect(
project.linux.applicationId,
'com.example.hello_flutter',
);

tmpProjectDir = globals.fs.path.join(tempDir.path, 'test_abc');
await runner.run(<String>['create', '--template=app', '--no-pub', '--org', 'abc^*.1#@', tmpProjectDir]);
Expand All @@ -1092,9 +1096,14 @@ void main() {
project.android.applicationId,
'flutter_project.untitled',
);
expect(
project.linux.applicationId,
'flutter_project.untitled',
);
}, overrides: <Type, Generator>{
FlutterVersion: () => mockFlutterVersion,
Platform: _kNoColorTerminalPlatform,
FeatureFlags: () => TestFeatureFlags(isLinuxEnabled: true),
});

testUsingContext('can re-gen default template over existing project', () async {
Expand Down