diff --git a/android/.build_version b/android/.build_version new file mode 100644 index 0000000..bebb000 --- /dev/null +++ b/android/.build_version @@ -0,0 +1 @@ +4.2.2.stable diff --git a/android/build/.gdignore b/android/build/.gdignore new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/android/build/.gdignore @@ -0,0 +1 @@ + diff --git a/android/build/AndroidManifest.xml b/android/build/AndroidManifest.xml new file mode 100644 index 0000000..4abc654 --- /dev/null +++ b/android/build/AndroidManifest.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/build/assetPacks/installTime/build.gradle b/android/build/assetPacks/installTime/build.gradle new file mode 100644 index 0000000..46fa046 --- /dev/null +++ b/android/build/assetPacks/installTime/build.gradle @@ -0,0 +1,10 @@ +plugins { + id 'com.android.asset-pack' +} + +assetPack { + packName = "installTime" // Directory name for the asset pack + dynamicDelivery { + deliveryType = "install-time" // Delivery mode + } +} diff --git a/android/build/build.gradle b/android/build/build.gradle new file mode 100644 index 0000000..f084c60 --- /dev/null +++ b/android/build/build.gradle @@ -0,0 +1,256 @@ +// Gradle build config for Godot Engine's Android port. +plugins { + id 'com.android.application' + id 'org.jetbrains.kotlin.android' +} + +apply from: 'config.gradle' + +allprojects { + repositories { + google() + mavenCentral() + gradlePluginPortal() + maven { url "https://plugins.gradle.org/m2/" } + + // Godot user plugins custom maven repos + String[] mavenRepos = getGodotPluginsMavenRepos() + if (mavenRepos != null && mavenRepos.size() > 0) { + for (String repoUrl : mavenRepos) { + maven { + url repoUrl + } + } + } + } +} + +configurations { + // Initializes a placeholder for the devImplementation dependency configuration. + devImplementation {} +} + +dependencies { + implementation "androidx.fragment:fragment:$versions.fragmentVersion" + + if (rootProject.findProject(":lib")) { + implementation project(":lib") + } else if (rootProject.findProject(":godot:lib")) { + implementation project(":godot:lib") + } else { + // Godot gradle build mode. In this scenario this project is the only one around and the Godot + // library is available through the pre-generated godot-lib.*.aar android archive files. + debugImplementation fileTree(dir: 'libs/debug', include: ['*.jar', '*.aar']) + devImplementation fileTree(dir: 'libs/dev', include: ['*.jar', '*.aar']) + releaseImplementation fileTree(dir: 'libs/release', include: ['*.jar', '*.aar']) + } + + // Godot user plugins remote dependencies + String[] remoteDeps = getGodotPluginsRemoteBinaries() + if (remoteDeps != null && remoteDeps.size() > 0) { + for (String dep : remoteDeps) { + implementation dep + } + } + + // Godot user plugins local dependencies + String[] pluginsBinaries = getGodotPluginsLocalBinaries() + if (pluginsBinaries != null && pluginsBinaries.size() > 0) { + implementation files(pluginsBinaries) + } +} + +android { + compileSdkVersion versions.compileSdk + buildToolsVersion versions.buildTools + ndkVersion versions.ndkVersion + + compileOptions { + sourceCompatibility versions.javaVersion + targetCompatibility versions.javaVersion + } + + kotlinOptions { + jvmTarget = versions.javaVersion + } + + assetPacks = [":assetPacks:installTime"] + + namespace = 'com.godot.game' + + defaultConfig { + // The default ignore pattern for the 'assets' directory includes hidden files and directories which are used by Godot projects. + aaptOptions { + ignoreAssetsPattern "!.svn:!.git:!.gitignore:!.ds_store:!*.scc:_*:!CVS:!thumbs.db:!picasa.ini:!*~" + } + + ndk { + String[] export_abi_list = getExportEnabledABIs() + abiFilters export_abi_list + } + + manifestPlaceholders = [godotEditorVersion: getGodotEditorVersion()] + + // Feel free to modify the application id to your own. + applicationId getExportPackageName() + versionCode getExportVersionCode() + versionName getExportVersionName() + minSdkVersion getExportMinSdkVersion() + targetSdkVersion getExportTargetSdkVersion() + + missingDimensionStrategy 'products', 'template' + } + + lintOptions { + abortOnError false + disable 'MissingTranslation', 'UnusedResources' + } + + ndkVersion versions.ndkVersion + + packagingOptions { + exclude 'META-INF/LICENSE' + exclude 'META-INF/NOTICE' + + // 'doNotStrip' is enabled for development within Android Studio + if (shouldNotStrip()) { + doNotStrip '**/*.so' + } + } + + signingConfigs { + debug { + if (hasCustomDebugKeystore()) { + storeFile new File(getDebugKeystoreFile()) + storePassword getDebugKeystorePassword() + keyAlias getDebugKeyAlias() + keyPassword getDebugKeystorePassword() + } + } + + release { + File keystoreFile = new File(getReleaseKeystoreFile()) + if (keystoreFile.isFile()) { + storeFile keystoreFile + storePassword getReleaseKeystorePassword() + keyAlias getReleaseKeyAlias() + keyPassword getReleaseKeystorePassword() + } + } + } + + buildTypes { + + debug { + // Signing and zip-aligning are skipped for prebuilt builds, but + // performed for Godot gradle builds. + zipAlignEnabled shouldZipAlign() + if (shouldSign()) { + signingConfig signingConfigs.debug + } else { + signingConfig null + } + } + + dev { + initWith debug + // Signing and zip-aligning are skipped for prebuilt builds, but + // performed for Godot gradle builds. + zipAlignEnabled shouldZipAlign() + if (shouldSign()) { + signingConfig signingConfigs.debug + } else { + signingConfig null + } + } + + release { + // Signing and zip-aligning are skipped for prebuilt builds, but + // performed for Godot gradle builds. + zipAlignEnabled shouldZipAlign() + if (shouldSign()) { + signingConfig signingConfigs.release + } else { + signingConfig null + } + } + } + + sourceSets { + main { + manifest.srcFile 'AndroidManifest.xml' + java.srcDirs = ['src'] + res.srcDirs = ['res'] + aidl.srcDirs = ['aidl'] + assets.srcDirs = ['assets'] + } + debug.jniLibs.srcDirs = ['libs/debug', 'libs/debug/vulkan_validation_layers'] + dev.jniLibs.srcDirs = ['libs/dev'] + release.jniLibs.srcDirs = ['libs/release'] + } + + applicationVariants.all { variant -> + variant.outputs.all { output -> + output.outputFileName = "android_${variant.name}.apk" + } + } +} + +task copyAndRenameDebugApk(type: Copy) { + from "$buildDir/outputs/apk/debug/android_debug.apk" + into getExportPath() + rename "android_debug.apk", getExportFilename() +} + +task copyAndRenameDevApk(type: Copy) { + from "$buildDir/outputs/apk/dev/android_dev.apk" + into getExportPath() + rename "android_dev.apk", getExportFilename() +} + +task copyAndRenameReleaseApk(type: Copy) { + from "$buildDir/outputs/apk/release/android_release.apk" + into getExportPath() + rename "android_release.apk", getExportFilename() +} + +task copyAndRenameDebugAab(type: Copy) { + from "$buildDir/outputs/bundle/debug/build-debug.aab" + into getExportPath() + rename "build-debug.aab", getExportFilename() +} + +task copyAndRenameDevAab(type: Copy) { + from "$buildDir/outputs/bundle/dev/build-dev.aab" + into getExportPath() + rename "build-dev.aab", getExportFilename() +} + +task copyAndRenameReleaseAab(type: Copy) { + from "$buildDir/outputs/bundle/release/build-release.aab" + into getExportPath() + rename "build-release.aab", getExportFilename() +} + +/** + * Used to validate the version of the Java SDK used for the Godot gradle builds. + */ +task validateJavaVersion { + if (JavaVersion.current() != versions.javaVersion) { + throw new GradleException("Invalid Java version ${JavaVersion.current()}. Version ${versions.javaVersion} is the required Java version for Godot gradle builds.") + } +} + +/* +When they're scheduled to run, the copy*AARToAppModule tasks generate dependencies for the 'app' +module, so we're ensuring the ':app:preBuild' task is set to run after those tasks. + */ +if (rootProject.tasks.findByPath("copyDebugAARToAppModule") != null) { + preBuild.mustRunAfter(rootProject.tasks.named("copyDebugAARToAppModule")) +} +if (rootProject.tasks.findByPath("copyDevAARToAppModule") != null) { + preBuild.mustRunAfter(rootProject.tasks.named("copyDevAARToAppModule")) +} +if (rootProject.tasks.findByPath("copyReleaseAARToAppModule") != null) { + preBuild.mustRunAfter(rootProject.tasks.named("copyReleaseAARToAppModule")) +} diff --git a/android/build/config.gradle b/android/build/config.gradle new file mode 100644 index 0000000..7224765 --- /dev/null +++ b/android/build/config.gradle @@ -0,0 +1,363 @@ +ext.versions = [ + androidGradlePlugin: '8.2.0', + compileSdk : 34, + // Also update 'platform/android/export/export_plugin.cpp#OPENGL_MIN_SDK_VERSION' + minSdk : 21, + // Also update 'platform/android/export/export_plugin.cpp#DEFAULT_TARGET_SDK_VERSION' + targetSdk : 34, + buildTools : '34.0.0', + kotlinVersion : '1.9.20', + fragmentVersion : '1.6.2', + nexusPublishVersion: '1.3.0', + javaVersion : JavaVersion.VERSION_17, + // Also update 'platform/android/detect.py#get_ndk_version()' when this is updated. + ndkVersion : '23.2.8568313' + +] + +ext.getExportPackageName = { -> + // Retrieve the app id from the project property set by the Godot 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.godot.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.getGodotEditorVersion = { -> + String editorVersion = project.hasProperty("godot_editor_version") ? project.property("godot_editor_version") : "" + if (editorVersion == null || editorVersion.isEmpty()) { + // Try the library version first + editorVersion = getGodotLibraryVersionName() + + if (editorVersion.isEmpty()) { + // Fallback value. + editorVersion = "custom_build" + } + } + return editorVersion +} + +ext.getGodotLibraryVersionCode = { -> + String versionName = "" + int versionCode = 1 + (versionName, versionCode) = getGodotLibraryVersion() + return versionCode +} + +ext.getGodotLibraryVersionName = { -> + String versionName = "" + int versionCode = 1 + (versionName, versionCode) = getGodotLibraryVersion() + return versionName +} + +ext.generateGodotLibraryVersion = { List requiredKeys -> + // Attempt to read the version from the `version.py` file. + String libraryVersionName = "" + int libraryVersionCode = 0 + + File versionFile = new File("../../../version.py") + if (versionFile.isFile()) { + def map = [:] + + List 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 { + if (map.containsKey("status")) { + int statusCode = 0 + String statusValue = map["status"] + if (statusValue == null) { + statusCode = 0 + } else if (statusValue.startsWith("dev")) { + statusCode = 1 + } else if (statusValue.startsWith("alpha")) { + statusCode = 2 + } else if (statusValue.startsWith("beta")) { + statusCode = 3 + } else if (statusValue.startsWith("rc")) { + statusCode = 4 + } else if (statusValue.startsWith("stable")) { + statusCode = 5 + } else { + statusCode = 0 + } + + libraryVersionCode = statusCode + } + + if (map.containsKey("patch")) { + libraryVersionCode += Integer.parseInt(map["patch"]) * 10 + } + + if (map.containsKey("minor")) { + libraryVersionCode += (Integer.parseInt(map["minor"]) * 1000) + } + + if (map.containsKey("major")) { + libraryVersionCode += (Integer.parseInt(map["major"]) * 100000) + } + } catch (NumberFormatException ignore) { + libraryVersionCode = 1 + } + } + } + + if (libraryVersionName.isEmpty()) { + // Fallback value in case we're unable to read the file. + libraryVersionName = "custom_build" + } + + if (libraryVersionCode == 0) { + libraryVersionCode = 1 + } + + return [libraryVersionName, libraryVersionCode] +} + +ext.getGodotLibraryVersion = { -> + List requiredKeys = ["major", "minor", "patch", "status", "module_config"] + return generateGodotLibraryVersion(requiredKeys) +} + +ext.getGodotPublishVersion = { -> + List requiredKeys = ["major", "minor", "patch", "status"] + String versionName = "" + int versionCode = 1 + (versionName, versionCode) = generateGodotLibraryVersion(requiredKeys) + if (!versionName.endsWith("stable")) { + versionName += "-SNAPSHOT" + } + return versionName +} + +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 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 = "godot_android" + } + return exportFilename +} + +/** + * Parse the project properties for the 'plugins_maven_repos' property and return the list + * of maven repos. + */ +ext.getGodotPluginsMavenRepos = { -> + Set 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.getGodotPluginsRemoteBinaries = { -> + Set 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.getGodotPluginsLocalBinaries = { -> + Set 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") +} diff --git a/android/build/gradle.properties b/android/build/gradle.properties new file mode 100644 index 0000000..2b6468c --- /dev/null +++ b/android/build/gradle.properties @@ -0,0 +1,28 @@ +# Godot gradle build settings. +# These properties apply when running a gradle build from the Godot editor. +# NOTE: This should be kept in sync with 'godot/platform/android/java/gradle.properties' except +# where otherwise specified. + +# For more details on how to configure your build environment visit +# https://www.gradle.org/docs/current/userguide/build_environment.html + +android.enableJetifier=true +android.useAndroidX=true + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx4536m + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# https://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true + +org.gradle.warning.mode=all + +# Enable resource optimizations for release build. +# NOTE: This is turned off for template release build in order to support the build legacy process. +android.enableResourceOptimizations=true + +# Fix gradle build errors when the build path contains non-ASCII characters +android.overridePathCheck=true diff --git a/android/build/gradle/wrapper/gradle-wrapper.jar b/android/build/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..e708b1c Binary files /dev/null and b/android/build/gradle/wrapper/gradle-wrapper.jar differ diff --git a/android/build/gradle/wrapper/gradle-wrapper.properties b/android/build/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..471fefa --- /dev/null +++ b/android/build/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Wed Jan 17 12:08:26 PST 2024 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/android/build/gradlew b/android/build/gradlew new file mode 100755 index 0000000..4f906e0 --- /dev/null +++ b/android/build/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/android/build/gradlew.bat b/android/build/gradlew.bat new file mode 100644 index 0000000..107acd3 --- /dev/null +++ b/android/build/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/android/build/libs/debug/godot-lib.template_debug.aar b/android/build/libs/debug/godot-lib.template_debug.aar new file mode 100644 index 0000000..a6e5870 Binary files /dev/null and b/android/build/libs/debug/godot-lib.template_debug.aar differ diff --git a/android/build/libs/release/godot-lib.template_release.aar b/android/build/libs/release/godot-lib.template_release.aar new file mode 100644 index 0000000..c8aeebc Binary files /dev/null and b/android/build/libs/release/godot-lib.template_release.aar differ diff --git a/android/build/res/drawable-nodpi/splash.png b/android/build/res/drawable-nodpi/splash.png new file mode 100644 index 0000000..7bddd43 Binary files /dev/null and b/android/build/res/drawable-nodpi/splash.png differ diff --git a/android/build/res/drawable-nodpi/splash_bg_color.png b/android/build/res/drawable-nodpi/splash_bg_color.png new file mode 100644 index 0000000..004b6fd Binary files /dev/null and b/android/build/res/drawable-nodpi/splash_bg_color.png differ diff --git a/android/build/res/drawable/splash_drawable.xml b/android/build/res/drawable/splash_drawable.xml new file mode 100644 index 0000000..30627b9 --- /dev/null +++ b/android/build/res/drawable/splash_drawable.xml @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/android/build/res/values-ar/godot_project_name_string.xml b/android/build/res/values-ar/godot_project_name_string.xml new file mode 100644 index 0000000..23aa5cf --- /dev/null +++ b/android/build/res/values-ar/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-ar + diff --git a/android/build/res/values-bg/godot_project_name_string.xml b/android/build/res/values-bg/godot_project_name_string.xml new file mode 100644 index 0000000..dbb7e04 --- /dev/null +++ b/android/build/res/values-bg/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-bg + diff --git a/android/build/res/values-ca/godot_project_name_string.xml b/android/build/res/values-ca/godot_project_name_string.xml new file mode 100644 index 0000000..709d096 --- /dev/null +++ b/android/build/res/values-ca/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-ca + diff --git a/android/build/res/values-cs/godot_project_name_string.xml b/android/build/res/values-cs/godot_project_name_string.xml new file mode 100644 index 0000000..ab248a8 --- /dev/null +++ b/android/build/res/values-cs/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-cs + diff --git a/android/build/res/values-da/godot_project_name_string.xml b/android/build/res/values-da/godot_project_name_string.xml new file mode 100644 index 0000000..906bf44 --- /dev/null +++ b/android/build/res/values-da/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-da + diff --git a/android/build/res/values-de/godot_project_name_string.xml b/android/build/res/values-de/godot_project_name_string.xml new file mode 100644 index 0000000..0cacb01 --- /dev/null +++ b/android/build/res/values-de/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-de + diff --git a/android/build/res/values-el/godot_project_name_string.xml b/android/build/res/values-el/godot_project_name_string.xml new file mode 100644 index 0000000..047de61 --- /dev/null +++ b/android/build/res/values-el/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-el + diff --git a/android/build/res/values-en/godot_project_name_string.xml b/android/build/res/values-en/godot_project_name_string.xml new file mode 100644 index 0000000..bb3a5db --- /dev/null +++ b/android/build/res/values-en/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-en + diff --git a/android/build/res/values-es-rES/godot_project_name_string.xml b/android/build/res/values-es-rES/godot_project_name_string.xml new file mode 100644 index 0000000..d4537f3 --- /dev/null +++ b/android/build/res/values-es-rES/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-es_ES + diff --git a/android/build/res/values-es/godot_project_name_string.xml b/android/build/res/values-es/godot_project_name_string.xml new file mode 100644 index 0000000..d63a160 --- /dev/null +++ b/android/build/res/values-es/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-es + diff --git a/android/build/res/values-fa/godot_project_name_string.xml b/android/build/res/values-fa/godot_project_name_string.xml new file mode 100644 index 0000000..c303f13 --- /dev/null +++ b/android/build/res/values-fa/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-fa + diff --git a/android/build/res/values-fi/godot_project_name_string.xml b/android/build/res/values-fi/godot_project_name_string.xml new file mode 100644 index 0000000..bd60055 --- /dev/null +++ b/android/build/res/values-fi/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-fi + diff --git a/android/build/res/values-fr/godot_project_name_string.xml b/android/build/res/values-fr/godot_project_name_string.xml new file mode 100644 index 0000000..2e94b65 --- /dev/null +++ b/android/build/res/values-fr/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-fr + diff --git a/android/build/res/values-hi/godot_project_name_string.xml b/android/build/res/values-hi/godot_project_name_string.xml new file mode 100644 index 0000000..0bf75dc --- /dev/null +++ b/android/build/res/values-hi/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-hi + diff --git a/android/build/res/values-hr/godot_project_name_string.xml b/android/build/res/values-hr/godot_project_name_string.xml new file mode 100644 index 0000000..d3f7591 --- /dev/null +++ b/android/build/res/values-hr/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-hr + diff --git a/android/build/res/values-hu/godot_project_name_string.xml b/android/build/res/values-hu/godot_project_name_string.xml new file mode 100644 index 0000000..012b613 --- /dev/null +++ b/android/build/res/values-hu/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-hu + diff --git a/android/build/res/values-in/godot_project_name_string.xml b/android/build/res/values-in/godot_project_name_string.xml new file mode 100644 index 0000000..eedecff --- /dev/null +++ b/android/build/res/values-in/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-in + diff --git a/android/build/res/values-it/godot_project_name_string.xml b/android/build/res/values-it/godot_project_name_string.xml new file mode 100644 index 0000000..7e73404 --- /dev/null +++ b/android/build/res/values-it/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-it + diff --git a/android/build/res/values-iw/godot_project_name_string.xml b/android/build/res/values-iw/godot_project_name_string.xml new file mode 100644 index 0000000..03893f0 --- /dev/null +++ b/android/build/res/values-iw/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-iw + diff --git a/android/build/res/values-ja/godot_project_name_string.xml b/android/build/res/values-ja/godot_project_name_string.xml new file mode 100644 index 0000000..f9dd4fa --- /dev/null +++ b/android/build/res/values-ja/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-ja + diff --git a/android/build/res/values-ko/godot_project_name_string.xml b/android/build/res/values-ko/godot_project_name_string.xml new file mode 100644 index 0000000..26f5dac --- /dev/null +++ b/android/build/res/values-ko/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-ko + diff --git a/android/build/res/values-lt/godot_project_name_string.xml b/android/build/res/values-lt/godot_project_name_string.xml new file mode 100644 index 0000000..1c2e976 --- /dev/null +++ b/android/build/res/values-lt/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-lt + diff --git a/android/build/res/values-lv/godot_project_name_string.xml b/android/build/res/values-lv/godot_project_name_string.xml new file mode 100644 index 0000000..b5e638e --- /dev/null +++ b/android/build/res/values-lv/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-lv + diff --git a/android/build/res/values-nb/godot_project_name_string.xml b/android/build/res/values-nb/godot_project_name_string.xml new file mode 100644 index 0000000..e6d89d6 --- /dev/null +++ b/android/build/res/values-nb/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-nb + diff --git a/android/build/res/values-nl/godot_project_name_string.xml b/android/build/res/values-nl/godot_project_name_string.xml new file mode 100644 index 0000000..93cb3a3 --- /dev/null +++ b/android/build/res/values-nl/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-nl + diff --git a/android/build/res/values-pl/godot_project_name_string.xml b/android/build/res/values-pl/godot_project_name_string.xml new file mode 100644 index 0000000..e5d6ac7 --- /dev/null +++ b/android/build/res/values-pl/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-pl + diff --git a/android/build/res/values-pt/godot_project_name_string.xml b/android/build/res/values-pt/godot_project_name_string.xml new file mode 100644 index 0000000..a462465 --- /dev/null +++ b/android/build/res/values-pt/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-pt + diff --git a/android/build/res/values-ro/godot_project_name_string.xml b/android/build/res/values-ro/godot_project_name_string.xml new file mode 100644 index 0000000..19e0266 --- /dev/null +++ b/android/build/res/values-ro/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-ro + diff --git a/android/build/res/values-ru/godot_project_name_string.xml b/android/build/res/values-ru/godot_project_name_string.xml new file mode 100644 index 0000000..2848452 --- /dev/null +++ b/android/build/res/values-ru/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-ru + diff --git a/android/build/res/values-sk/godot_project_name_string.xml b/android/build/res/values-sk/godot_project_name_string.xml new file mode 100644 index 0000000..f8ab4a5 --- /dev/null +++ b/android/build/res/values-sk/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-sk + diff --git a/android/build/res/values-sl/godot_project_name_string.xml b/android/build/res/values-sl/godot_project_name_string.xml new file mode 100644 index 0000000..98bd53e --- /dev/null +++ b/android/build/res/values-sl/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-sl + diff --git a/android/build/res/values-sr/godot_project_name_string.xml b/android/build/res/values-sr/godot_project_name_string.xml new file mode 100644 index 0000000..3f400f2 --- /dev/null +++ b/android/build/res/values-sr/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-sr + diff --git a/android/build/res/values-sv/godot_project_name_string.xml b/android/build/res/values-sv/godot_project_name_string.xml new file mode 100644 index 0000000..8670b7c --- /dev/null +++ b/android/build/res/values-sv/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-sv + diff --git a/android/build/res/values-th/godot_project_name_string.xml b/android/build/res/values-th/godot_project_name_string.xml new file mode 100644 index 0000000..a1cc1bc --- /dev/null +++ b/android/build/res/values-th/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-th + diff --git a/android/build/res/values-tl/godot_project_name_string.xml b/android/build/res/values-tl/godot_project_name_string.xml new file mode 100644 index 0000000..6d66d11 --- /dev/null +++ b/android/build/res/values-tl/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-tl + diff --git a/android/build/res/values-tr/godot_project_name_string.xml b/android/build/res/values-tr/godot_project_name_string.xml new file mode 100644 index 0000000..ba3bd7d --- /dev/null +++ b/android/build/res/values-tr/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-tr + diff --git a/android/build/res/values-uk/godot_project_name_string.xml b/android/build/res/values-uk/godot_project_name_string.xml new file mode 100644 index 0000000..5f14ab2 --- /dev/null +++ b/android/build/res/values-uk/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-uk + diff --git a/android/build/res/values-vi/godot_project_name_string.xml b/android/build/res/values-vi/godot_project_name_string.xml new file mode 100644 index 0000000..295378e --- /dev/null +++ b/android/build/res/values-vi/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-vi + diff --git a/android/build/res/values-zh-rHK/godot_project_name_string.xml b/android/build/res/values-zh-rHK/godot_project_name_string.xml new file mode 100644 index 0000000..40ab0f2 --- /dev/null +++ b/android/build/res/values-zh-rHK/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-zh_HK + diff --git a/android/build/res/values-zh-rTW/godot_project_name_string.xml b/android/build/res/values-zh-rTW/godot_project_name_string.xml new file mode 100644 index 0000000..095bd56 --- /dev/null +++ b/android/build/res/values-zh-rTW/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-zh_TW + diff --git a/android/build/res/values-zh/godot_project_name_string.xml b/android/build/res/values-zh/godot_project_name_string.xml new file mode 100644 index 0000000..31aa8c2 --- /dev/null +++ b/android/build/res/values-zh/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name-zh + diff --git a/android/build/res/values/godot_project_name_string.xml b/android/build/res/values/godot_project_name_string.xml new file mode 100644 index 0000000..7ec2738 --- /dev/null +++ b/android/build/res/values/godot_project_name_string.xml @@ -0,0 +1,5 @@ + + + + godot-project-name + diff --git a/android/build/res/values/themes.xml b/android/build/res/values/themes.xml new file mode 100644 index 0000000..d64b50c --- /dev/null +++ b/android/build/res/values/themes.xml @@ -0,0 +1,10 @@ + + + + + diff --git a/android/build/settings.gradle b/android/build/settings.gradle new file mode 100644 index 0000000..dcac44e --- /dev/null +++ b/android/build/settings.gradle @@ -0,0 +1,17 @@ +// This is the root directory of the Godot Android gradle build. +pluginManagement { + apply from: 'config.gradle' + + plugins { + id 'com.android.application' version versions.androidGradlePlugin + id 'org.jetbrains.kotlin.android' version versions.kotlinVersion + } + repositories { + google() + mavenCentral() + gradlePluginPortal() + maven { url "https://plugins.gradle.org/m2/" } + } +} + +include ':assetPacks:installTime' diff --git a/android/build/src/com/godot/game/GodotApp.java b/android/build/src/com/godot/game/GodotApp.java new file mode 100644 index 0000000..9142d76 --- /dev/null +++ b/android/build/src/com/godot/game/GodotApp.java @@ -0,0 +1,47 @@ +/**************************************************************************/ +/* GodotApp.java */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +package com.godot.game; + +import org.godotengine.godot.GodotActivity; + +import android.os.Bundle; + +/** + * Template activity for Godot Android builds. + * Feel free to extend and modify this class for your custom logic. + */ +public class GodotApp extends GodotActivity { + @Override + public void onCreate(Bundle savedInstanceState) { + setTheme(R.style.GodotAppMainTheme); + super.onCreate(savedInstanceState); + } +}