Adding first APK build
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
apply plugin: 'com.android.application'
|
||||
|
||||
// Path to the (patched, at build time - see build-apk.sh and
|
||||
// ../engine-patches/) scratch copy of engine/, written by build-apk.sh
|
||||
// since it's only known at build time, not something a checked-in
|
||||
// build.gradle can hardcode.
|
||||
def engineProps = new Properties()
|
||||
file("${projectDir}/../engine.properties").withInputStream { engineProps.load(it) }
|
||||
def engineDir = engineProps.getProperty('engineDir')
|
||||
if (engineDir == null) {
|
||||
throw new GradleException("android/engine.properties is missing 'engineDir' - run via build-apk.sh, not gradlew directly")
|
||||
}
|
||||
|
||||
android {
|
||||
namespace "de.ladkau.questshock"
|
||||
// compileSdk/buildToolsVersion/ndkVersion must all match what
|
||||
// build-image/Dockerfile actually installs - otherwise AGP defaults to
|
||||
// whatever version it itself prefers and tries to download it into the
|
||||
// SDK dir at build time, which isn't writable.
|
||||
compileSdk 34
|
||||
buildToolsVersion "34.0.0"
|
||||
ndkVersion "26.1.10909125"
|
||||
|
||||
defaultConfig {
|
||||
applicationId "de.ladkau.questshock"
|
||||
// 29, not compileSdk's 34, is deliberate - see build-image/Dockerfile's
|
||||
// comment on ANDROID_PLATFORM_VERSION: paired with
|
||||
// requestLegacyExternalStorage in the manifest, this keeps
|
||||
// /sdcard/questshock/ a plain, unrestricted shared folder instead of
|
||||
// Android 11+ scoped storage, on the Quest 2/3/3S/Pro headsets this
|
||||
// targets - not just whatever's the current API level today.
|
||||
minSdkVersion 24
|
||||
targetSdkVersion 29
|
||||
versionCode 1
|
||||
versionName "1.0"
|
||||
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
// engine/CMakeLists.txt's own dependency-selection options
|
||||
// (see engine/CMakeLists.txt near the top): SDL2 via
|
||||
// find_package (our Android SDL2 build installs a real CMake
|
||||
// config, unlike the desktop build's older bundled copy);
|
||||
// SDL2_mixer and FluidSynth via the same build_ext/ BUNDLED
|
||||
// convention the desktop build already uses (populated in the
|
||||
// scratch engine copy by build-apk.sh from
|
||||
// /opt/prebuilt/android/*).
|
||||
// The CMAKE_FIND_ROOT_PATH* overrides below are needed
|
||||
// because the NDK toolchain file restricts find_package/
|
||||
// find_path/find_library to its own sysroot by default,
|
||||
// which would otherwise miss our custom-installed SDL2 (see
|
||||
// build-image/Dockerfile's SDL2_mixer build, which hit the
|
||||
// exact same thing).
|
||||
arguments "-DENABLE_SDL2=ON", "-DENABLE_SOUND=BUNDLED", "-DENABLE_FLUIDSYNTH=BUNDLED", \
|
||||
"-DCMAKE_PREFIX_PATH=/opt/prebuilt/android/sdl2", \
|
||||
"-DCMAKE_FIND_ROOT_PATH=/opt/prebuilt/android/sdl2", \
|
||||
"-DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=BOTH", \
|
||||
"-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=BOTH", \
|
||||
"-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH", \
|
||||
"-DANDROID_EXTRA_SOURCES=${projectDir}/src/main/cpp/questshock_native.c"
|
||||
abiFilters 'arm64-v8a'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
path file("${engineDir}/CMakeLists.txt")
|
||||
}
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
minifyEnabled false
|
||||
}
|
||||
}
|
||||
|
||||
lint {
|
||||
abortOnError false
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
// ActivityCompat.checkSelfPermission/requestPermissions in
|
||||
// QuestShockActivity - the plain android.app.Activity APIs work the
|
||||
// same way without androidx, but ActivityCompat is the standard,
|
||||
// documented way to request runtime permissions safely.
|
||||
implementation 'androidx.core:core:1.12.0'
|
||||
}
|
||||
Reference in New Issue
Block a user