Unverified Commit 392e25c8 authored by Robert Ancell's avatar Robert Ancell Committed by GitHub

Set the application-id in the Linux shell (#60053)

parent 6139708e
...@@ -747,13 +747,18 @@ https://flutter.dev/docs/development/packages-and-plugins/developing-packages#pl ...@@ -747,13 +747,18 @@ https://flutter.dev/docs/development/packages-and-plugins/developing-packages#pl
final String pluginClassSnakeCase = snakeCase(pluginClass); final String pluginClassSnakeCase = snakeCase(pluginClass);
final String pluginClassCapitalSnakeCase = pluginClassSnakeCase.toUpperCase(); final String pluginClassCapitalSnakeCase = pluginClassSnakeCase.toUpperCase();
final String appleIdentifier = _createUTIIdentifier(organization, projectName); 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>{ return <String, dynamic>{
'organization': organization, 'organization': organization,
'projectName': projectName, 'projectName': projectName,
'androidIdentifier': _createAndroidIdentifier(organization, projectName), 'androidIdentifier': androidIdentifier,
'iosIdentifier': appleIdentifier, 'iosIdentifier': appleIdentifier,
'macosIdentifier': appleIdentifier, 'macosIdentifier': appleIdentifier,
'linuxIdentifier': linuxIdentifier,
'description': projectDescription, 'description': projectDescription,
'dartSdk': '$flutterRoot/bin/cache/dart-sdk', 'dartSdk': '$flutterRoot/bin/cache/dart-sdk',
'androidMinApiLevel': android_common.minApiLevel, 'androidMinApiLevel': android_common.minApiLevel,
......
...@@ -1039,6 +1039,8 @@ class LinuxProject extends FlutterProjectPlatform implements CmakeBasedProject { ...@@ -1039,6 +1039,8 @@ class LinuxProject extends FlutterProjectPlatform implements CmakeBasedProject {
@override @override
String get pluginConfigKey => LinuxPlugin.kConfigKey; 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'); Directory get _editableDirectory => parent.directory.childDirectory('linux');
/// The directory in the project that is managed by Flutter. As much as /// The directory in the project that is managed by Flutter. As much as
...@@ -1067,6 +1069,10 @@ class LinuxProject extends FlutterProjectPlatform implements CmakeBasedProject { ...@@ -1067,6 +1069,10 @@ class LinuxProject extends FlutterProjectPlatform implements CmakeBasedProject {
Directory get pluginSymlinkDirectory => ephemeralDirectory.childDirectory('.plugin_symlinks'); Directory get pluginSymlinkDirectory => ephemeralDirectory.childDirectory('.plugin_symlinks');
Future<void> ensureReadyForPlatformSpecificTooling() async {} Future<void> ensureReadyForPlatformSpecificTooling() async {}
String get applicationId {
return _firstMatchInFile(cmakeFile, _applicationIdPattern)?.group(1);
}
} }
/// The Fuchsia sub project /// The Fuchsia sub project
......
...@@ -2,6 +2,7 @@ cmake_minimum_required(VERSION 3.10) ...@@ -2,6 +2,7 @@ cmake_minimum_required(VERSION 3.10)
project(runner LANGUAGES CXX) project(runner LANGUAGES CXX)
set(BINARY_NAME "{{projectName}}") set(BINARY_NAME "{{projectName}}")
set(APPLICATION_ID "{{linuxIdentifier}}")
cmake_policy(SET CMP0063 NEW) cmake_policy(SET CMP0063 NEW)
...@@ -32,6 +33,8 @@ add_subdirectory(${FLUTTER_MANAGED_DIR}) ...@@ -32,6 +33,8 @@ add_subdirectory(${FLUTTER_MANAGED_DIR})
find_package(PkgConfig REQUIRED) find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0)
add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}")
# Application build # Application build
add_executable(${BINARY_NAME} add_executable(${BINARY_NAME}
"main.cc" "main.cc"
......
...@@ -40,5 +40,7 @@ static void my_application_class_init(MyApplicationClass* klass) { ...@@ -40,5 +40,7 @@ static void my_application_class_init(MyApplicationClass* klass) {
static void my_application_init(MyApplication* self) {} static void my_application_init(MyApplication* self) {}
MyApplication* my_application_new() { 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));
} }
...@@ -1037,7 +1037,7 @@ void main() { ...@@ -1037,7 +1037,7 @@ void main() {
Platform: _kNoColorTerminalPlatform, 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 = '../..'; Cache.flutterRoot = '../..';
when(mockFlutterVersion.frameworkRevision).thenReturn(frameworkRevision); when(mockFlutterVersion.frameworkRevision).thenReturn(frameworkRevision);
when(mockFlutterVersion.channel).thenReturn(frameworkChannel); when(mockFlutterVersion.channel).thenReturn(frameworkChannel);
...@@ -1068,6 +1068,10 @@ void main() { ...@@ -1068,6 +1068,10 @@ void main() {
project.android.applicationId, project.android.applicationId,
'com.example.hello_flutter', 'com.example.hello_flutter',
); );
expect(
project.linux.applicationId,
'com.example.hello_flutter',
);
tmpProjectDir = globals.fs.path.join(tempDir.path, 'test_abc'); tmpProjectDir = globals.fs.path.join(tempDir.path, 'test_abc');
await runner.run(<String>['create', '--template=app', '--no-pub', '--org', 'abc^*.1#@', tmpProjectDir]); await runner.run(<String>['create', '--template=app', '--no-pub', '--org', 'abc^*.1#@', tmpProjectDir]);
...@@ -1092,9 +1096,14 @@ void main() { ...@@ -1092,9 +1096,14 @@ void main() {
project.android.applicationId, project.android.applicationId,
'flutter_project.untitled', 'flutter_project.untitled',
); );
expect(
project.linux.applicationId,
'flutter_project.untitled',
);
}, overrides: <Type, Generator>{ }, overrides: <Type, Generator>{
FlutterVersion: () => mockFlutterVersion, FlutterVersion: () => mockFlutterVersion,
Platform: _kNoColorTerminalPlatform, Platform: _kNoColorTerminalPlatform,
FeatureFlags: () => TestFeatureFlags(isLinuxEnabled: true),
}); });
testUsingContext('can re-gen default template over existing project', () async { testUsingContext('can re-gen default template over existing project', () async {
......
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