diff --git a/Source/Editor/Cooker/Platform/Android/AndroidPlatformTools.cpp b/Source/Editor/Cooker/Platform/Android/AndroidPlatformTools.cpp index 7803b7c6d..5ad88db24 100644 --- a/Source/Editor/Cooker/Platform/Android/AndroidPlatformTools.cpp +++ b/Source/Editor/Cooker/Platform/Android/AndroidPlatformTools.cpp @@ -266,9 +266,33 @@ bool AndroidPlatformTools::OnPostProcess(CookingData& data) } } + String versionCode = platformSettings->VersionCode; + if (versionCode.IsEmpty()) + { + LOG(Error, "AndroidSettings: Invalid version code"); + return true; + } + + String minimumSdk = platformSettings->MinimumAPILevel; + if (minimumSdk.IsEmpty()) + { + LOG(Error, "AndroidSettings: Invalid minimum API level"); + return true; + } + + String targetSdk = platformSettings->TargetAPILevel; + if (targetSdk.IsEmpty()) + { + LOG(Error, "AndroidSettings: Invalid target API level"); + return true; + } + // Format project template files const String buildGradlePath = data.OriginalOutputPath / TEXT("app/build.gradle"); EditorUtilities::ReplaceInFile(buildGradlePath, TEXT("${PackageName}"), packageName); + EditorUtilities::ReplaceInFile(buildGradlePath, TEXT("${VersionCode}"), versionCode); + EditorUtilities::ReplaceInFile(buildGradlePath, TEXT("${MinimumSdk}"), minimumSdk); + EditorUtilities::ReplaceInFile(buildGradlePath, TEXT("${TargetSdk}"), targetSdk); EditorUtilities::ReplaceInFile(buildGradlePath, TEXT("${ProjectVersion}"), projectVersion); EditorUtilities::ReplaceInFile(buildGradlePath, TEXT("${PackageAbi}"), abi); const String manifestPath = data.OriginalOutputPath / TEXT("app/src/main/AndroidManifest.xml"); diff --git a/Source/Engine/Platform/Android/AndroidPlatformSettings.h b/Source/Engine/Platform/Android/AndroidPlatformSettings.h index 2ec045871..dd744a7ce 100644 --- a/Source/Engine/Platform/Android/AndroidPlatformSettings.h +++ b/Source/Engine/Platform/Android/AndroidPlatformSettings.h @@ -72,6 +72,24 @@ API_CLASS(sealed, Namespace="FlaxEditor.Content.Settings") class FLAXENGINE_API API_FIELD(Attributes="EditorOrder(0), EditorDisplay(\"General\")") String PackageName = TEXT("com.${COMPANY_NAME}.${PROJECT_NAME}"); + /// + /// The application version code (eg. 1, 12, 123). + /// + API_FIELD(Attributes="EditorOrder(10), EditorDisplay(\"General\")") + String VersionCode = TEXT("1"); + + /// + /// The minimum Android API level(eg. 20, 28, 34). + /// + API_FIELD(Attributes = "EditorOrder(20), EditorDisplay(\"General\")") + String MinimumAPILevel = TEXT("23"); + + /// + /// The target Android API level(eg. 20, 28, 34). + /// + API_FIELD(Attributes = "EditorOrder(30), EditorDisplay(\"General\")") + String TargetAPILevel = TEXT("33"); + /// /// The application permissions list (eg. android.media.action.IMAGE_CAPTURE). Added to the generated manifest file. /// diff --git a/Source/Platforms/Android/Binaries/Project/app/build.gradle b/Source/Platforms/Android/Binaries/Project/app/build.gradle index 2f5da0a56..fd7764060 100644 --- a/Source/Platforms/Android/Binaries/Project/app/build.gradle +++ b/Source/Platforms/Android/Binaries/Project/app/build.gradle @@ -1,12 +1,12 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 24 + compileSdk ${TargetSdk} namespace "${PackageName}" defaultConfig { applicationId "${PackageName}" - minSdkVersion 24 - targetSdkVersion 24 - versionCode 1 + minSdk ${MinimumSdk} + targetSdk ${TargetSdk} + versionCode ${VersionCode} versionName "${ProjectVersion}" ndk { abiFilter "${PackageAbi}"