plugins { id 'com.android.application' } def mobileGlEnvString = { backendType -> [ LIBGL_ES : '3', POJAV_RENDERER : 'opengles3', MOBILEGL_BACKEND_TYPE: backendType, ].collect { key, value -> "${key}=${value}" }.join(':') } def signingStoreFile = file('../keystore.jks') def signingStorePassword = System.getenv('SIGNING_STORE_PASSWORD') def signingKeyAlias = System.getenv('SIGNING_KEY_ALIAS') def signingKeyPassword = System.getenv('SIGNING_KEY_PASSWORD') def releaseSigningReady = signingStoreFile.exists() && signingStorePassword && signingKeyAlias && signingKeyPassword def debuggableRelease = (findProperty('mobilegl.debuggableRelease') ?: 'false').toString().toBoolean() def mobileGlCmakeCompilerLauncher = { (findProperty('mobilegl.cmakeCompilerLauncher') ?: System.getenv('MOBILEGL_CMAKE_COMPILER_LAUNCHER') ?: '').toString().trim() } def mobileGlAbiFilters = { def abiList = (findProperty('mobilegl.abis') ?: System.getenv('MOBILEGL_ABIS') ?: 'arm64-v8a') as String if (abiList.equalsIgnoreCase('all')) { return ['arm64-v8a', 'x86_64'] } abiList .split(',') .collect { it.trim() } .findAll { !it.isEmpty() } } android { namespace 'top.mobilegl.plugin' compileSdk 34 ndkVersion '27.3.13750724' defaultConfig { minSdk 26 targetSdk 34 versionCode 1 versionName 'dev' ndk { def abiFiltersOverride = mobileGlAbiFilters() if (!abiFiltersOverride.isEmpty()) { abiFilters(*abiFiltersOverride) } } externalNativeBuild { cmake { def compilerLauncher = mobileGlCmakeCompilerLauncher() if (!compilerLauncher.isEmpty()) { arguments "-DCMAKE_C_COMPILER_LAUNCHER=${compilerLauncher}", "-DCMAKE_CXX_COMPILER_LAUNCHER=${compilerLauncher}" } } } } flavorDimensions 'backend', 'profile' productFlavors { espryt { dimension 'backend' applicationId 'top.mobilegl.plugin.espryt' def env = mobileGlEnvString('DirectGLES') resValue 'string', 'mobilegl_default_backend', 'DirectGLES' manifestPlaceholders = [ appLabel: 'MobileGL Espryt', des : 'MobileGL Espryt', renderer: 'MobileGL Espryt:libMobileGL.so:/libMobileGL.so', boatEnv : env, pojavEnv: env, ] } magma { dimension 'backend' applicationId 'top.mobilegl.plugin.magma' def env = mobileGlEnvString('DirectVulkan') resValue 'string', 'mobilegl_default_backend', 'DirectVulkan' manifestPlaceholders = [ appLabel: 'MobileGL Magma', des : 'MobileGL Magma', renderer: 'MobileGL Magma:libMobileGL.so:/libMobileGL.so', boatEnv : env, pojavEnv: env, ] } plugin { dimension 'profile' } trace { dimension 'profile' applicationIdSuffix '.trace' versionNameSuffix '-trace' } } if (releaseSigningReady) { signingConfigs { release { storeFile signingStoreFile storePassword signingStorePassword keyAlias signingKeyAlias keyPassword signingKeyPassword } } } buildTypes { release { debuggable debuggableRelease minifyEnabled false if (releaseSigningReady) { signingConfig signingConfigs.release } } } externalNativeBuild { cmake { path file('src/trace/cpp/CMakeLists.txt') version '3.22.1' } } packaging { jniLibs { useLegacyPackaging true excludes += ['**/libSPIRV-Tools-shared.so'] } } } android.applicationVariants.configureEach { variant -> variant.outputs.configureEach { outputFileName = "MobileGL-${variant.flavorName.capitalize()}-${variant.buildType.name}.apk" } } androidComponents { onVariants(selector().withFlavor('profile', 'plugin')) { variant -> variant.packaging.jniLibs.excludes.add('**/libtrace_replay_runner.so') } } dependencies { implementation project(':MobileGL') }