diff --git a/Source/Editor/Cooker/Platform/Android/AndroidPlatformTools.cpp b/Source/Editor/Cooker/Platform/Android/AndroidPlatformTools.cpp index 4c42699d6..7d05409e5 100644 --- a/Source/Editor/Cooker/Platform/Android/AndroidPlatformTools.cpp +++ b/Source/Editor/Cooker/Platform/Android/AndroidPlatformTools.cpp @@ -139,33 +139,8 @@ bool AndroidPlatformTools::OnPostProcess(CookingData& data) // Setup package name (eg. com.company.project) String packageName = platformSettings->PackageName; - { - String productName = gameSettings->ProductName; - productName.Replace(TEXT(" "), TEXT("")); - productName.Replace(TEXT("."), TEXT("")); - productName.Replace(TEXT("-"), TEXT("")); - String companyName = gameSettings->CompanyName; - companyName.Replace(TEXT(" "), TEXT("")); - companyName.Replace(TEXT("."), TEXT("")); - companyName.Replace(TEXT("-"), TEXT("")); - packageName.Replace(TEXT("${PROJECT_NAME}"), *productName, StringSearchCase::IgnoreCase); - packageName.Replace(TEXT("${COMPANY_NAME}"), *companyName, StringSearchCase::IgnoreCase); - packageName = packageName.ToLower(); - for (int32 i = 0; i < packageName.Length(); i++) - { - const auto c = packageName[i]; - if (c != '_' && c != '.' && !StringUtils::IsAlnum(c)) - { - LOG(Error, "Android Package Name \'{0}\' contains invalid character. Only letters, numbers, dots and underscore characters are allowed.", packageName); - return true; - } - } - if (packageName.IsEmpty()) - { - LOG(Error, "Android Package Name is empty.", packageName); - return true; - } - } + if (EditorUtilities::FormatAppPackageName(packageName)) + return true; // Setup Android application permissions HashSet permissionsList; diff --git a/Source/Editor/Cooker/Platform/Mac/MacPlatformTools.cpp b/Source/Editor/Cooker/Platform/Mac/MacPlatformTools.cpp index 2ccf41aba..7ab2e8fe0 100644 --- a/Source/Editor/Cooker/Platform/Mac/MacPlatformTools.cpp +++ b/Source/Editor/Cooker/Platform/Mac/MacPlatformTools.cpp @@ -92,33 +92,8 @@ bool MacPlatformTools::OnPostProcess(CookingData& data) // Setup package name (eg. com.company.project) String appIdentifier = platformSettings->AppIdentifier; - { - String productName = gameSettings->ProductName; - productName.Replace(TEXT(" "), TEXT("")); - productName.Replace(TEXT("."), TEXT("")); - productName.Replace(TEXT("-"), TEXT("")); - String companyName = gameSettings->CompanyName; - companyName.Replace(TEXT(" "), TEXT("")); - companyName.Replace(TEXT("."), TEXT("")); - companyName.Replace(TEXT("-"), TEXT("")); - appIdentifier.Replace(TEXT("${PROJECT_NAME}"), *productName, StringSearchCase::IgnoreCase); - appIdentifier.Replace(TEXT("${COMPANY_NAME}"), *companyName, StringSearchCase::IgnoreCase); - appIdentifier = appIdentifier.ToLower(); - for (int32 i = 0; i < appIdentifier.Length(); i++) - { - const auto c = appIdentifier[i]; - if (c != '_' && c != '.' && !StringUtils::IsAlnum(c)) - { - LOG(Error, "Apple app identifier \'{0}\' contains invalid character. Only letters, numbers, dots and underscore characters are allowed.", appIdentifier); - return true; - } - } - if (appIdentifier.IsEmpty()) - { - LOG(Error, "Apple app identifier is empty.", appIdentifier); - return true; - } - } + if (EditorUtilities::FormatAppPackageName(packageName)) + return true; // Find executable String executableName; diff --git a/Source/Editor/Cooker/Platform/iOS/iOSPlatformTools.cpp b/Source/Editor/Cooker/Platform/iOS/iOSPlatformTools.cpp index 2fa621390..39b518fbc 100644 --- a/Source/Editor/Cooker/Platform/iOS/iOSPlatformTools.cpp +++ b/Source/Editor/Cooker/Platform/iOS/iOSPlatformTools.cpp @@ -164,33 +164,8 @@ bool iOSPlatformTools::OnPostProcess(CookingData& data) // Setup package name (eg. com.company.project) String appIdentifier = platformSettings->AppIdentifier; - { - String productName = gameSettings->ProductName; - productName.Replace(TEXT(" "), TEXT("")); - productName.Replace(TEXT("."), TEXT("")); - productName.Replace(TEXT("-"), TEXT("")); - String companyName = gameSettings->CompanyName; - companyName.Replace(TEXT(" "), TEXT("")); - companyName.Replace(TEXT("."), TEXT("")); - companyName.Replace(TEXT("-"), TEXT("")); - appIdentifier.Replace(TEXT("${PROJECT_NAME}"), *productName, StringSearchCase::IgnoreCase); - appIdentifier.Replace(TEXT("${COMPANY_NAME}"), *companyName, StringSearchCase::IgnoreCase); - appIdentifier = appIdentifier.ToLower(); - for (int32 i = 0; i < appIdentifier.Length(); i++) - { - const auto c = appIdentifier[i]; - if (c != '_' && c != '.' && !StringUtils::IsAlnum(c)) - { - LOG(Error, "Apple app identifier \'{0}\' contains invalid character. Only letters, numbers, dots and underscore characters are allowed.", appIdentifier); - return true; - } - } - if (appIdentifier.IsEmpty()) - { - LOG(Error, "Apple app identifier is empty.", appIdentifier); - return true; - } - } + if (EditorUtilities::FormatAppPackageName(packageName)) + return true; // Copy fresh Gradle project template if (FileSystem::CopyDirectory(data.OriginalOutputPath, platformDataPath / TEXT("Project"), true)) diff --git a/Source/Editor/Utilities/EditorUtilities.cpp b/Source/Editor/Utilities/EditorUtilities.cpp index 958f37dbf..8e3fc0e4a 100644 --- a/Source/Editor/Utilities/EditorUtilities.cpp +++ b/Source/Editor/Utilities/EditorUtilities.cpp @@ -507,6 +507,37 @@ bool EditorUtilities::UpdateExeIcon(const String& path, const TextureData& icon) return false; } +bool EditorUtilities::FormatAppPackageName(String& packageName) +{ + const auto gameSettings = GameSettings::Get(); + String productName = gameSettings->ProductName; + productName.Replace(TEXT(" "), TEXT("")); + productName.Replace(TEXT("."), TEXT("")); + productName.Replace(TEXT("-"), TEXT("")); + String companyName = gameSettings->CompanyName; + companyName.Replace(TEXT(" "), TEXT("")); + companyName.Replace(TEXT("."), TEXT("")); + companyName.Replace(TEXT("-"), TEXT("")); + packageName.Replace(TEXT("${PROJECT_NAME}"), *productName, StringSearchCase::IgnoreCase); + packageName.Replace(TEXT("${COMPANY_NAME}"), *companyName, StringSearchCase::IgnoreCase); + packageName = packageName.ToLower(); + for (int32 i = 0; i < packageName.Length(); i++) + { + const auto c = packageName[i]; + if (c != '_' && c != '.' && !StringUtils::IsAlnum(c)) + { + LOG(Error, "App identifier \'{0}\' contains invalid character. Only letters, numbers, dots and underscore characters are allowed.", packageName); + return true; + } + } + if (packageName.IsEmpty()) + { + LOG(Error, "App identifier is empty.", packageName); + return true; + } + return false; +} + bool EditorUtilities::GetApplicationImage(const Guid& imageId, TextureData& imageData, ApplicationImageType type) { AssetReference icon = Content::LoadAsync(imageId); diff --git a/Source/Editor/Utilities/EditorUtilities.h b/Source/Editor/Utilities/EditorUtilities.h index 1a58dbab6..881bfe3b8 100644 --- a/Source/Editor/Utilities/EditorUtilities.h +++ b/Source/Editor/Utilities/EditorUtilities.h @@ -30,6 +30,7 @@ public: /// True if fails, otherwise false. static bool UpdateExeIcon(const String& path, const TextureData& icon); + static bool FormatAppPackageName(String& packageName); static bool GetApplicationImage(const Guid& imageId, TextureData& imageData, ApplicationImageType type = ApplicationImageType::Icon); static bool GetTexture(const Guid& textureId, TextureData& textureData); static bool ExportApplicationImage(const Guid& iconId, int32 width, int32 height, PixelFormat format, const String& path, ApplicationImageType type = ApplicationImageType::Icon);