mirror of
https://github.com/Relintai/pandemonium_engine.git
synced 2024-12-28 22:57:15 +01:00
d54b5ad8f8
Version 7.3.0 changes the build layout which causes updates to the generated shared libraries to not be picked up.
316 lines
10 KiB
Groovy
316 lines
10 KiB
Groovy
ext.versions = [
|
|
androidGradlePlugin: '7.2.1',
|
|
compileSdk : 33,
|
|
minSdk : 19, // Also update 'platform/android/export/export_plugin.cpp#DEFAULT_MIN_SDK_VERSION'
|
|
targetSdk : 33, // Also update 'platform/android/export/export_plugin.cpp#DEFAULT_TARGET_SDK_VERSION'
|
|
buildTools : '33.0.2',
|
|
kotlinVersion : '1.7.0',
|
|
fragmentVersion : '1.3.6',
|
|
nexusPublishVersion: '1.1.0',
|
|
javaVersion : 11,
|
|
ndkVersion : '23.2.8568313' // Also update 'platform/android/detect.py#get_ndk_version' when this is updated.
|
|
|
|
]
|
|
|
|
ext.libraries = [
|
|
androidGradlePlugin: "com.android.tools.build:gradle:$versions.androidGradlePlugin",
|
|
kotlinGradlePlugin : "org.jetbrains.kotlin:kotlin-gradle-plugin:$versions.kotlinVersion",
|
|
kotlinStdLib : "org.jetbrains.kotlin:kotlin-stdlib:$versions.kotlinVersion",
|
|
androidxFragment : "androidx.fragment:fragment:$versions.fragmentVersion",
|
|
]
|
|
|
|
ext.getExportPackageName = { ->
|
|
// Retrieve the app id from the project property set by the Pandemonium build command.
|
|
String appId = project.hasProperty("export_package_name") ? project.property("export_package_name") : ""
|
|
// Check if the app id is valid, otherwise use the default.
|
|
if (appId == null || appId.isEmpty()) {
|
|
appId = "com.pandemonium.game"
|
|
}
|
|
return appId
|
|
}
|
|
|
|
ext.getExportVersionCode = { ->
|
|
String versionCode = project.hasProperty("export_version_code") ? project.property("export_version_code") : ""
|
|
if (versionCode == null || versionCode.isEmpty()) {
|
|
versionCode = "1"
|
|
}
|
|
try {
|
|
return Integer.parseInt(versionCode)
|
|
} catch (NumberFormatException ignored) {
|
|
return 1
|
|
}
|
|
}
|
|
|
|
ext.getExportVersionName = { ->
|
|
String versionName = project.hasProperty("export_version_name") ? project.property("export_version_name") : ""
|
|
if (versionName == null || versionName.isEmpty()) {
|
|
versionName = "1.0"
|
|
}
|
|
return versionName
|
|
}
|
|
|
|
ext.getExportMinSdkVersion = { ->
|
|
String minSdkVersion = project.hasProperty("export_version_min_sdk") ? project.property("export_version_min_sdk") : ""
|
|
if (minSdkVersion == null || minSdkVersion.isEmpty()) {
|
|
minSdkVersion = "$versions.minSdk"
|
|
}
|
|
try {
|
|
return Integer.parseInt(minSdkVersion)
|
|
} catch (NumberFormatException ignored) {
|
|
return versions.minSdk
|
|
}
|
|
}
|
|
|
|
ext.getExportTargetSdkVersion = { ->
|
|
String targetSdkVersion = project.hasProperty("export_version_target_sdk") ? project.property("export_version_target_sdk") : ""
|
|
if (targetSdkVersion == null || targetSdkVersion.isEmpty()) {
|
|
targetSdkVersion = "$versions.targetSdk"
|
|
}
|
|
try {
|
|
return Integer.parseInt(targetSdkVersion)
|
|
} catch (NumberFormatException ignored) {
|
|
return versions.targetSdk
|
|
}
|
|
}
|
|
|
|
ext.getPandemoniumEditorVersion = { ->
|
|
String editorVersion = project.hasProperty("pandemonium_editor_version") ? project.property("pandemonium_editor_version") : ""
|
|
if (editorVersion == null || editorVersion.isEmpty()) {
|
|
// Try the library version first
|
|
editorVersion = getPandemoniumLibraryVersionName()
|
|
|
|
if (editorVersion.isEmpty()) {
|
|
// Fallback value.
|
|
editorVersion = "custom_build"
|
|
}
|
|
}
|
|
return editorVersion
|
|
}
|
|
|
|
ext.getPandemoniumLibraryVersionCode = { ->
|
|
String versionName = ""
|
|
int versionCode = 1
|
|
(versionName, versionCode) = getPandemoniumLibraryVersion()
|
|
return versionCode
|
|
}
|
|
|
|
ext.getPandemoniumLibraryVersionName = { ->
|
|
String versionName = ""
|
|
int versionCode = 1
|
|
(versionName, versionCode) = getPandemoniumLibraryVersion()
|
|
return versionName
|
|
}
|
|
|
|
ext.getPandemoniumLibraryVersion = { ->
|
|
// Attempt to read the version from the `version.py` file.
|
|
String libraryVersionName = ""
|
|
int libraryVersionCode = 1
|
|
|
|
File versionFile = new File("../../../version.py")
|
|
if (versionFile.isFile()) {
|
|
List<String> requiredKeys = ["major", "minor", "patch", "status", "module_config"]
|
|
def map = [:]
|
|
|
|
List<String> lines = versionFile.readLines()
|
|
for (String line in lines) {
|
|
String[] keyValue = line.split("=")
|
|
String key = keyValue[0].trim()
|
|
String value = keyValue[1].trim().replaceAll("\"", "")
|
|
|
|
if (requiredKeys.contains(key)) {
|
|
if (!value.isEmpty()) {
|
|
map[key] = value
|
|
}
|
|
requiredKeys.remove(key)
|
|
}
|
|
}
|
|
|
|
if (requiredKeys.empty) {
|
|
libraryVersionName = map.values().join(".")
|
|
try {
|
|
libraryVersionCode = Integer.parseInt(map["patch"]) +
|
|
(Integer.parseInt(map["minor"]) * 100) +
|
|
(Integer.parseInt(map["major"]) * 10000)
|
|
} catch (NumberFormatException ignore) {}
|
|
}
|
|
}
|
|
|
|
if (libraryVersionName.isEmpty()) {
|
|
// Fallback value in case we're unable to read the file.
|
|
libraryVersionName = "custom_build"
|
|
}
|
|
return [libraryVersionName, libraryVersionCode]
|
|
}
|
|
|
|
final String VALUE_SEPARATOR_REGEX = "\\|"
|
|
|
|
// get the list of ABIs the project should be exported to
|
|
ext.getExportEnabledABIs = { ->
|
|
String enabledABIs = project.hasProperty("export_enabled_abis") ? project.property("export_enabled_abis") : "";
|
|
if (enabledABIs == null || enabledABIs.isEmpty()) {
|
|
enabledABIs = "armeabi-v7a|arm64-v8a|x86|x86_64|"
|
|
}
|
|
Set<String> exportAbiFilter = [];
|
|
for (String abi_name : enabledABIs.split(VALUE_SEPARATOR_REGEX)) {
|
|
if (!abi_name.trim().isEmpty()){
|
|
exportAbiFilter.add(abi_name);
|
|
}
|
|
}
|
|
return exportAbiFilter;
|
|
}
|
|
|
|
ext.getExportPath = {
|
|
String exportPath = project.hasProperty("export_path") ? project.property("export_path") : ""
|
|
if (exportPath == null || exportPath.isEmpty()) {
|
|
exportPath = "."
|
|
}
|
|
return exportPath
|
|
}
|
|
|
|
ext.getExportFilename = {
|
|
String exportFilename = project.hasProperty("export_filename") ? project.property("export_filename") : ""
|
|
if (exportFilename == null || exportFilename.isEmpty()) {
|
|
exportFilename = "pandemonium_android"
|
|
}
|
|
return exportFilename
|
|
}
|
|
|
|
/**
|
|
* Parse the project properties for the 'plugins_maven_repos' property and return the list
|
|
* of maven repos.
|
|
*/
|
|
ext.getPandemoniumPluginsMavenRepos = { ->
|
|
Set<String> mavenRepos = []
|
|
|
|
// Retrieve the list of maven repos.
|
|
if (project.hasProperty("plugins_maven_repos")) {
|
|
String mavenReposProperty = project.property("plugins_maven_repos")
|
|
if (mavenReposProperty != null && !mavenReposProperty.trim().isEmpty()) {
|
|
for (String mavenRepoUrl : mavenReposProperty.split(VALUE_SEPARATOR_REGEX)) {
|
|
mavenRepos += mavenRepoUrl.trim()
|
|
}
|
|
}
|
|
}
|
|
|
|
return mavenRepos
|
|
}
|
|
|
|
/**
|
|
* Parse the project properties for the 'plugins_remote_binaries' property and return
|
|
* it for inclusion in the build dependencies.
|
|
*/
|
|
ext.getPandemoniumPluginsRemoteBinaries = { ->
|
|
Set<String> remoteDeps = []
|
|
|
|
// Retrieve the list of remote plugins binaries.
|
|
if (project.hasProperty("plugins_remote_binaries")) {
|
|
String remoteDepsList = project.property("plugins_remote_binaries")
|
|
if (remoteDepsList != null && !remoteDepsList.trim().isEmpty()) {
|
|
for (String dep: remoteDepsList.split(VALUE_SEPARATOR_REGEX)) {
|
|
remoteDeps += dep.trim()
|
|
}
|
|
}
|
|
}
|
|
return remoteDeps
|
|
}
|
|
|
|
/**
|
|
* Parse the project properties for the 'plugins_local_binaries' property and return
|
|
* their binaries for inclusion in the build dependencies.
|
|
*/
|
|
ext.getPandemoniumPluginsLocalBinaries = { ->
|
|
Set<String> binDeps = []
|
|
|
|
// Retrieve the list of local plugins binaries.
|
|
if (project.hasProperty("plugins_local_binaries")) {
|
|
String pluginsList = project.property("plugins_local_binaries")
|
|
if (pluginsList != null && !pluginsList.trim().isEmpty()) {
|
|
for (String plugin : pluginsList.split(VALUE_SEPARATOR_REGEX)) {
|
|
binDeps += plugin.trim()
|
|
}
|
|
}
|
|
}
|
|
|
|
return binDeps
|
|
}
|
|
|
|
ext.getDebugKeystoreFile = { ->
|
|
String keystoreFile = project.hasProperty("debug_keystore_file") ? project.property("debug_keystore_file") : ""
|
|
if (keystoreFile == null || keystoreFile.isEmpty()) {
|
|
keystoreFile = "."
|
|
}
|
|
return keystoreFile
|
|
}
|
|
|
|
ext.hasCustomDebugKeystore = { ->
|
|
File keystoreFile = new File(getDebugKeystoreFile())
|
|
return keystoreFile.isFile()
|
|
}
|
|
|
|
ext.getDebugKeystorePassword = { ->
|
|
String keystorePassword = project.hasProperty("debug_keystore_password") ? project.property("debug_keystore_password") : ""
|
|
if (keystorePassword == null || keystorePassword.isEmpty()) {
|
|
keystorePassword = "android"
|
|
}
|
|
return keystorePassword
|
|
}
|
|
|
|
ext.getDebugKeyAlias = { ->
|
|
String keyAlias = project.hasProperty("debug_keystore_alias") ? project.property("debug_keystore_alias") : ""
|
|
if (keyAlias == null || keyAlias.isEmpty()) {
|
|
keyAlias = "androiddebugkey"
|
|
}
|
|
return keyAlias
|
|
}
|
|
|
|
ext.getReleaseKeystoreFile = { ->
|
|
String keystoreFile = project.hasProperty("release_keystore_file") ? project.property("release_keystore_file") : ""
|
|
if (keystoreFile == null || keystoreFile.isEmpty()) {
|
|
keystoreFile = "."
|
|
}
|
|
return keystoreFile
|
|
}
|
|
|
|
ext.getReleaseKeystorePassword = { ->
|
|
String keystorePassword = project.hasProperty("release_keystore_password") ? project.property("release_keystore_password") : ""
|
|
return keystorePassword
|
|
}
|
|
|
|
ext.getReleaseKeyAlias = { ->
|
|
String keyAlias = project.hasProperty("release_keystore_alias") ? project.property("release_keystore_alias") : ""
|
|
return keyAlias
|
|
}
|
|
|
|
ext.isAndroidStudio = { ->
|
|
def sysProps = System.getProperties()
|
|
return sysProps != null && sysProps['idea.platform.prefix'] != null
|
|
}
|
|
|
|
ext.shouldZipAlign = { ->
|
|
String zipAlignFlag = project.hasProperty("perform_zipalign") ? project.property("perform_zipalign") : ""
|
|
if (zipAlignFlag == null || zipAlignFlag.isEmpty()) {
|
|
if (isAndroidStudio()) {
|
|
zipAlignFlag = "true"
|
|
} else {
|
|
zipAlignFlag = "false"
|
|
}
|
|
}
|
|
return Boolean.parseBoolean(zipAlignFlag)
|
|
}
|
|
|
|
ext.shouldSign = { ->
|
|
String signFlag = project.hasProperty("perform_signing") ? project.property("perform_signing") : ""
|
|
if (signFlag == null || signFlag.isEmpty()) {
|
|
if (isAndroidStudio()) {
|
|
signFlag = "true"
|
|
} else {
|
|
signFlag = "false"
|
|
}
|
|
}
|
|
return Boolean.parseBoolean(signFlag)
|
|
}
|
|
|
|
ext.shouldNotStrip = { ->
|
|
return isAndroidStudio() || project.hasProperty("doNotStrip")
|
|
}
|