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}"