diff --git a/platform/android/SCsub b/platform/android/SCsub index e355caf0f9c..d2f27817c6c 100644 --- a/platform/android/SCsub +++ b/platform/android/SCsub @@ -1,12 +1,11 @@ #!/usr/bin/env python +from detect import get_ndk_version +from distutils.version import LooseVersion + Import('env') -from distutils.version import LooseVersion -from detect import get_ndk_version - android_files = [ - 'os_android.cpp', 'file_access_android.cpp', 'audio_driver_opensl.cpp', @@ -18,7 +17,7 @@ android_files = [ 'java_class_wrapper.cpp', 'java_godot_wrapper.cpp', 'java_godot_io_wrapper.cpp', -# 'power_android.cpp' + #'power_android.cpp' ] env_android = env.Clone() diff --git a/platform/android/detect.py b/platform/android/detect.py index 283791f3363..8b62360888e 100644 --- a/platform/android/detect.py +++ b/platform/android/detect.py @@ -32,14 +32,12 @@ def get_opts(): def get_flags(): - return [ ('tools', False), ] def create(env): - tools = env['TOOLS'] if "mingw" in tools: tools.remove('mingw') @@ -50,7 +48,6 @@ def create(env): def configure(env): - # Workaround for MinGW. See: # http://www.scons.org/wiki/LongCmdLinesOnWin32 if (os.name == "nt"): @@ -90,7 +87,7 @@ def configure(env): env['SPAWN'] = mySpawn - ## Architecture + # Architecture if env['android_arch'] not in ['armv7', 'arm64v8', 'x86', 'x86_64']: env['android_arch'] = 'armv7' @@ -137,14 +134,14 @@ def configure(env): arch_subpath = "arm64-v8a" env.extra_suffix = ".armv8" + env.extra_suffix - ## Build type + # Build type if (env["target"].startswith("release")): - if (env["optimize"] == "speed"): #optimize for speed (default) + if (env["optimize"] == "speed"): # optimize for speed (default) env.Append(LINKFLAGS=['-O2']) env.Append(CCFLAGS=['-O2', '-fomit-frame-pointer']) env.Append(CPPDEFINES=['NDEBUG']) - else: #optimize for size + else: # optimize for size env.Append(CCFLAGS=['-Os']) env.Append(CPPDEFINES=['NDEBUG']) env.Append(LINKFLAGS=['-Os']) @@ -159,7 +156,7 @@ def configure(env): env.Append(CPPDEFINES=['_DEBUG', 'DEBUG_ENABLED', 'DEBUG_MEMORY_ENABLED']) env.Append(CPPFLAGS=['-UNDEBUG']) - ## Compiler configuration + # Compiler configuration env['SHLIBSUFFIX'] = '.so' @@ -204,7 +201,7 @@ def configure(env): common_opts = ['-fno-integrated-as', '-gcc-toolchain', gcc_toolchain_path] - ## Compile flags + # Compile flags env.Append(CPPFLAGS=["-isystem", env["ANDROID_NDK_ROOT"] + "/sources/cxx-stl/llvm-libc++/include"]) env.Append(CPPFLAGS=["-isystem", env["ANDROID_NDK_ROOT"] + "/sources/cxx-stl/llvm-libc++abi/include"]) @@ -259,7 +256,7 @@ def configure(env): env.Append(CCFLAGS=target_opts) env.Append(CCFLAGS=common_opts) - ## Link flags + # Link flags ndk_version = get_ndk_version(env["ANDROID_NDK_ROOT"]) if ndk_version != None and LooseVersion(ndk_version) >= LooseVersion("17.1.4828580"): @@ -268,7 +265,7 @@ def configure(env): env.Append(LINKFLAGS=[env["ANDROID_NDK_ROOT"] + "/sources/cxx-stl/llvm-libc++/libs/" + arch_subpath + "/libandroid_support.a"]) env.Append(LINKFLAGS=['-shared', '--sysroot=' + lib_sysroot, '-Wl,--warn-shared-textrel']) env.Append(LIBPATH=[env["ANDROID_NDK_ROOT"] + "/sources/cxx-stl/llvm-libc++/libs/" + arch_subpath + "/"]) - env.Append(LINKFLAGS=[env["ANDROID_NDK_ROOT"] +"/sources/cxx-stl/llvm-libc++/libs/" + arch_subpath + "/libc++_shared.so"]) + env.Append(LINKFLAGS=[env["ANDROID_NDK_ROOT"] + "/sources/cxx-stl/llvm-libc++/libs/" + arch_subpath + "/libc++_shared.so"]) if env["android_arch"] == "armv7": env.Append(LINKFLAGS='-Wl,--fix-cortex-a8'.split()) @@ -287,6 +284,7 @@ def configure(env): env.Append(CPPDEFINES=['ANDROID_ENABLED', 'UNIX_ENABLED', 'NO_FCNTL']) env.Append(LIBS=['OpenSLES', 'EGL', 'GLESv3', 'GLESv2', 'android', 'log', 'z', 'dl']) + # Return NDK version string in source.properties (adapted from the Chromium project). def get_ndk_version(path): if path is None: diff --git a/platform/android/java/AndroidManifest.xml b/platform/android/java/AndroidManifest.xml index 3152ef12cd3..5114aeb8c58 100644 --- a/platform/android/java/AndroidManifest.xml +++ b/platform/android/java/AndroidManifest.xml @@ -1,58 +1,73 @@ - + xmlns:tools="http://schemas.android.com/tools" + package="com.godot.game" + android:versionCode="1" + android:versionName="1.0" + android:installLocation="auto" > - - - + + - + + + + + + - - + + + - - + + - - + + - + - - + + + - + diff --git a/platform/android/java/build.gradle b/platform/android/java/build.gradle index 620128fc94f..0f8499ba91b 100644 --- a/platform/android/java/build.gradle +++ b/platform/android/java/build.gradle @@ -1,113 +1,111 @@ -//Gradle project for Godot Engine Android port. -//Do not modify code between the BEGIN/END sections, as it's autogenerated by add-ons +// Gradle build config for Godot Engine's Android port. +// +// Do not remove/modify comments ending with BEGIN/END, they are used to inject +// addon-specific configuration. buildscript { - repositories { - google() - jcenter() + repositories { + google() + jcenter() //CHUNK_BUILDSCRIPT_REPOSITORIES_BEGIN //CHUNK_BUILDSCRIPT_REPOSITORIES_END - } - dependencies { - classpath 'com.android.tools.build:gradle:3.4.2' + } + dependencies { + classpath 'com.android.tools.build:gradle:3.4.2' //CHUNK_BUILDSCRIPT_DEPENDENCIES_BEGIN //CHUNK_BUILDSCRIPT_DEPENDENCIES_END - } + } } apply plugin: 'com.android.application' allprojects { repositories { - mavenCentral() - google() - jcenter() + mavenCentral() + google() + jcenter() //CHUNK_ALLPROJECTS_REPOSITORIES_BEGIN //CHUNK_ALLPROJECTS_REPOSITORIES_END - } } dependencies { - implementation "com.android.support:support-core-utils:28.0.0" + implementation "com.android.support:support-core-utils:28.0.0" //CHUNK_DEPENDENCIES_BEGIN //CHUNK_DEPENDENCIES_END } android { + compileSdkVersion 28 + buildToolsVersion "28.0.3" + useLibrary 'org.apache.http.legacy' - lintOptions { - abortOnError false - disable 'MissingTranslation','UnusedResources' - } - - compileSdkVersion 28 - buildToolsVersion "28.0.3" - useLibrary 'org.apache.http.legacy' - - packagingOptions { - exclude 'META-INF/LICENSE' - exclude 'META-INF/NOTICE' - } - defaultConfig { - minSdkVersion 18 - targetSdkVersion 28 + defaultConfig { + minSdkVersion 18 + targetSdkVersion 28 //CHUNK_ANDROID_DEFAULTCONFIG_BEGIN //CHUNK_ANDROID_DEFAULTCONFIG_END - } - // Both signing and zip-aligning will be done at export time - buildTypes.all { buildType -> - buildType.zipAlignEnabled false - buildType.signingConfig null - } - sourceSets { - main { - manifest.srcFile 'AndroidManifest.xml' - java.srcDirs = ['src' + } + + lintOptions { + abortOnError false + disable 'MissingTranslation', 'UnusedResources' + } + + packagingOptions { + exclude 'META-INF/LICENSE' + exclude 'META-INF/NOTICE' + } + + // Both signing and zip-aligning will be done at export time + buildTypes.all { buildType -> + buildType.zipAlignEnabled false + buildType.signingConfig null + } + + sourceSets { + main { + manifest.srcFile 'AndroidManifest.xml' + java.srcDirs = [ + 'src' //DIR_SRC_BEGIN //DIR_SRC_END - ] - res.srcDirs = [ - 'res' + ] + res.srcDirs = [ + 'res' //DIR_RES_BEGIN //DIR_RES_END - ] - aidl.srcDirs = [ - 'aidl' + ] + aidl.srcDirs = [ + 'aidl' //DIR_AIDL_BEGIN //DIR_AIDL_END - ] - assets.srcDirs = [ - 'assets' + ] + assets.srcDirs = [ + 'assets' //DIR_ASSETS_BEGIN //DIR_ASSETS_END - - ] - } - debug.jniLibs.srcDirs = [ - 'libs/debug' + ] + } + debug.jniLibs.srcDirs = [ + 'libs/debug' //DIR_JNI_DEBUG_BEGIN //DIR_JNI_DEBUG_END - ] - release.jniLibs.srcDirs = [ - 'libs/release' + ] + release.jniLibs.srcDirs = [ + 'libs/release' //DIR_JNI_RELEASE_BEGIN //DIR_JNI_RELEASE_END - ] - } -// No longer used, as it's not useful for build source template -// applicationVariants.all { variant -> -// variant.outputs.all { output -> -// output.outputFileName = "../../../../../../../bin/android_${variant.name}.apk" -// } -// } + ] + } + // No longer used, as it's not useful for build source template + //applicationVariants.all { variant -> + // variant.outputs.all { output -> + // output.outputFileName = "../../../../../../../bin/android_${variant.name}.apk" + // } + //} } //CHUNK_GLOBAL_BEGIN //CHUNK_GLOBAL_END - - - - -