mirror of
https://github.com/flutter/flutter
synced 2024-10-03 15:04:18 +00:00
Set the application-id in the Linux shell (#60053)
This commit is contained in:
parent
6139708eaf
commit
392e25c8f2
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
@ -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"
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
@ -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]);
|
||||
|
@ -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 {
|
||||
|
|
Loading…
Reference in a new issue