/** * build.common.gradle * * Try to avoid editing this file, as it may be updated from time to time as the FTC SDK * evolves. Rather, if it is necessary to customize the build process, do those edits in * the build.gradle file in TeamCode. * * This file contains the necessary content of the 'build.gradle' files for robot controller * applications built using the FTC SDK. Each individual 'build.gradle' in those applications * can simply contain the one line: * * apply from: '../build.common.gradle' * * which will pick up this file here. This approach allows makes it easier to integrate * updates to the FTC SDK into your code. */ import java.util.regex.Pattern apply plugin: 'com.android.application' android { compileSdkVersion 30 signingConfigs { release { def apkStoreFile = System.getenv("APK_SIGNING_STORE_FILE") if (apkStoreFile != null) { keyAlias System.getenv("APK_SIGNING_KEY_ALIAS") keyPassword System.getenv("APK_SIGNING_KEY_PASSWORD") storeFile file(System.getenv("APK_SIGNING_STORE_FILE")) storePassword System.getenv("APK_SIGNING_STORE_PASSWORD") } else { keyAlias 'androiddebugkey' keyPassword 'android' storeFile rootProject.file('libs/ftc.debug.keystore') storePassword 'android' } } debug { keyAlias 'androiddebugkey' keyPassword 'android' storeFile rootProject.file('libs/ftc.debug.keystore') storePassword 'android' } } defaultConfig { signingConfig signingConfigs.debug applicationId 'com.qualcomm.ftcrobotcontroller' minSdkVersion 24 //noinspection ExpiredTargetSdkVersion targetSdkVersion 28 /** * We keep the versionCode and versionName of robot controller applications in sync with * the master information published in the AndroidManifest.xml file of the FtcRobotController * module. This helps avoid confusion that might arise from having multiple versions of * a robot controller app simultaneously installed on a robot controller device. * * We accomplish this with the help of a funky little Groovy script that maintains that * correspondence automatically. * * @see Configure Your Build * @see Versioning Your App */ def manifestFile = project(':FtcRobotController').file('src/main/AndroidManifest.xml'); def manifestText = manifestFile.getText() // def vCodePattern = Pattern.compile("versionCode=\"(\\d+(\\.\\d+)*)\"") def matcher = vCodePattern.matcher(manifestText) matcher.find() def vCode = Integer.parseInt(matcher.group(1)) // def vNamePattern = Pattern.compile("versionName=\"(.*)\"") matcher = vNamePattern.matcher(manifestText); matcher.find() def vName = matcher.group(1) // versionCode vCode versionName vName } // http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.BuildType.html buildTypes { release { signingConfig signingConfigs.release ndk { abiFilters "armeabi-v7a", "arm64-v8a" } } debug { debuggable true jniDebuggable true ndk { abiFilters "armeabi-v7a", "arm64-v8a" } } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } packagingOptions { pickFirst '**/*.so' } ndkVersion '21.3.6528147' } repositories { }