Make Android build smarter (SCons + Gradle)

Upgrade Gradle and Android plugin for Gradle
Disable all signing and zip-aligning for the export templates
Give correct names to generated APKs
Put .so files built by SCons right where Gradle has to pick them according to arch & build type
Downgrade NDK platform to 14 to match minSdkVersion
This commit is contained in:
Pedro J. Estébanez 2016-06-15 15:21:18 +02:00
parent 2c59f77885
commit e7b2626707
6 changed files with 41 additions and 16 deletions

9
.gitignore vendored
View file

@ -37,17 +37,10 @@ platform/android/java/.gradle
platform/android/java/.gradletasknamecache
platform/android/java/local.properties
platform/android/java/project.properties
platform/android/java/build.gradle
platform/android/java/AndroidManifest.xml
platform/android/java/bin/*
platform/android/java/libs/*
platform/android/java/gen/*
platform/android/java/assets
platform/android/libs/apk_expansion/bin/*
platform/android/libs/apk_expansion/gen/*
platform/android/libs/google_play_services/bin/*
platform/android/libs/google_play_services/gen/*
platform/android/libs/play_licensing/bin/*
platform/android/libs/play_licensing/gen/*
# General c++ generated files
*.lib

View file

@ -103,4 +103,22 @@ pp_baseout.write( manifest )
env_android.SharedLibrary("#bin/libgodot",[android_objects],SHLIBSUFFIX=env["SHLIBSUFFIX"])
#env.Command('#bin/libgodot_android.so', '#platform/android/libgodot_android.so', Copy('bin/libgodot_android.so', 'platform/android/libgodot_android.so'))
lib_arch_dir = ''
if env['android_arch'] == 'armv6':
lib_arch_dir = 'armeabi'
elif env['android_arch'] == 'armv7':
lib_arch_dir = 'armeabi-v7a'
elif env['android_arch'] == 'x86':
lib_arch_dir = 'x86'
else:
print 'WARN: Architecture not suitable for embedding into APK; keeping .so at \\bin'
if lib_arch_dir != '':
if env['target'] == 'release':
lib_type_dir = 'release'
else: # release_debug, debug
lib_type_dir = 'debug'
out_dir = '#platform/android/java/libs/'+lib_type_dir+'/'+lib_arch_dir
env_android.Command(out_dir+'/libgodot_android.so', '#bin/libgodot'+env['SHLIBSUFFIX'], Move("$TARGET", "$SOURCE"))

View file

@ -3,7 +3,7 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.1'
classpath 'com.android.tools.build:gradle:2.1.0'
}
}
@ -40,6 +40,11 @@ android {
minSdkVersion 14
targetSdkVersion 23
}
// 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'
@ -65,8 +70,17 @@ android {
$$GRADLE_JNI_DIRS$$
]
}
debug.jniLibs.srcDirs = [
'libs/debug'
$$GRADLE_JNI_DIRS$$
]
release.jniLibs.srcDirs = [
'libs/release'
$$GRADLE_JNI_DIRS$$
]
}
applicationVariants.all { variant ->
// ApplicationVariant is undocumented, but this method is widely used; may break with another version of the Android Gradle plugin
variant.outputs.get(0).setOutputFile(new File("${projectDir}/../../../bin", "android_${variant.name}.apk"))
}
}

View file

@ -23,7 +23,7 @@ def get_opts():
('ANDROID_NDK_ROOT', 'the path to Android NDK', os.environ.get("ANDROID_NDK_ROOT", 0)),
('NDK_TARGET', 'toolchain to use for the NDK',os.environ.get("NDK_TARGET", "arm-linux-androideabi-4.9")),
('NDK_TARGET_X86', 'toolchain to use for the NDK x86',os.environ.get("NDK_TARGET_X86", "x86-4.9")),
('ndk_platform', 'compile for platform: (android-<api> , example: android-15)',"android-15"),
('ndk_platform', 'compile for platform: (android-<api> , example: android-14)',"android-14"),
('android_arch', 'select compiler architecture: (armv7/armv6/x86)',"armv7"),
('android_neon','enable neon (armv7 only)',"yes"),
('android_stl','enable STL support in android port (for modules)',"no")

View file

@ -1166,7 +1166,7 @@ Error EditorExportPlatformAndroid::export_project(const String& p_path, bool p_d
skip=true;
}
if (file=="lib/armeabi/libgodot_android.so" && !export_arm) {
if (file.match("lib/armeabi*/libgodot_android.so") && !export_arm) {
skip=true;
}

View file

@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip