Files
self/app/android/app/build.gradle
Justin Hernandez 12f3262dbf chore: bump version to 2.9.11 (#1601)
* chore: bump version to 2.9.11

* fix linting
2026-01-13 14:08:50 -08:00

245 lines
8.6 KiB
Groovy

apply plugin: "com.android.application"
apply plugin: "com.facebook.react"
apply plugin: "org.jetbrains.kotlin.android"
apply plugin: 'kotlin-android'
apply plugin: 'com.google.gms.google-services'
/**
* This is the configuration block to customize your React Native Android app.
* By default you don't need to apply any configuration, just uncomment the lines you need.
*/
react {
/* Folders */
// The root of your project, i.e. where "package.json" lives. Default is '../..'
root = file("../..")
// The folder where the react-native NPM package is. Default is ../../node_modules/react-native
reactNativeDir = file("../../../node_modules/react-native")
// The folder where the react-native Codegen package is. Default is ../../node_modules/@react-native/codegen
codegenDir = file("../../../node_modules/@react-native/codegen")
// The cli.js file which is the React Native CLI entrypoint. Default is ../../node_modules/react-native/cli.js
cliFile = file("../../../node_modules/react-native/cli.js")
/* Variants */
// The list of variants to that are debuggable. For those we're going to
// skip the bundling of the JS bundle and the assets. By default is just 'debug'.
// If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants.
// debuggableVariants = ["liteDebug", "prodDebug"]
/* Bundling */
// A list containing the node command and its flags. Default is just 'node'.
// nodeExecutableAndArgs = ["node"]
//
// The command to run when bundling. By default is 'bundle'
// bundleCommand = "ram-bundle"
//
// The path to the CLI configuration file. Default is empty.
// bundleConfig = file(../rn-cli.config.js)
//
// The name of the generated asset file containing your JS bundle
// bundleAssetName = "MyApplication.android.bundle"
//
// The entry file for bundle generation. Default is 'index.android.js' or 'index.js'
// entryFile = file("../js/MyApplication.android.js")
//
// A list of extra flags to pass to the 'bundle' commands.
// See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle
// extraPackagerArgs = []
/* Hermes Commands */
// The hermes compiler command to run. By default it is 'hermesc'
// Dynamic path that works across different platforms (macOS, Linux, Windows)
hermesCommand = {
def hermesPath = file("${rootProject.projectDir}/../../node_modules/react-native/sdks/hermesc").absolutePath
def osName = System.getProperty('os.name').toLowerCase()
def platformDir
def executableName = "hermesc"
if (osName.contains('mac')) {
platformDir = "osx-bin"
} else if (osName.contains('linux')) {
platformDir = "linux64-bin"
} else if (osName.contains('windows')) {
platformDir = "win64-bin"
executableName = "hermesc.exe"
} else {
// Fallback to trying common locations
platformDir = "linux64-bin"
}
def dynamicPath = "${hermesPath}/${platformDir}/${executableName}"
// Check if the dynamic path exists, otherwise fallback to just 'hermesc'
if (new File(dynamicPath).exists()) {
return dynamicPath
} else {
// Fallback to system PATH
return "hermesc"
}
}()
// The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map"
hermesFlags = ["-O", "-output-source-map"]
/* Autolinking */
autolinkLibrariesWithApp()
}
/**
* Set this to true to Run Proguard on Release builds to minify the Java bytecode.
*/
def enableProguardInReleaseBuilds = false
/**
* The preferred build flavor of JavaScriptCore (JSC)
*
* For example, to use the international variant, you can use:
* `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
*
* The international variant includes ICU i18n library and necessary data
* allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
* give correct results when using with locales other than en-US. Note that
* this variant is about 6MiB larger per architecture than default.
*/
def jscFlavor = 'org.webkit:android-jsc:+'
android {
ndkVersion rootProject.ext.ndkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
compileSdkVersion rootProject.ext.compileSdkVersion
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = '17'
}
namespace "com.proofofpassportapp"
// Build optimizations
dexOptions {
javaMaxHeapSize "4g"
preDexLibraries false
}
buildFeatures {
buildConfig = true
viewBinding = true
}
defaultConfig {
applicationId "com.proofofpassportapp"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 121
versionName "2.9.11"
manifestPlaceholders = [appAuthRedirectScheme: 'com.proofofpassportapp']
externalNativeBuild {
cmake {
cppFlags += "-fexceptions -frtti -std=c++11"
arguments += "-DANDROID_STL=c++_shared"
arguments += "-Wl,-z,max-page-size=16384"
}
ndk {
if (System.env.E2E_BUILD == "true") {
abiFilters "x86_64"
} else {
abiFilters "arm64-v8a", "x86_64"
}
}
}
}
signingConfigs {
debug {
storeFile file('debug.keystore')
storePassword 'android'
keyAlias 'androiddebugkey'
keyPassword 'android'
}
release {
if (project.hasProperty('MYAPP_UPLOAD_STORE_FILE')) {
storeFile file(MYAPP_UPLOAD_STORE_FILE)
storePassword MYAPP_UPLOAD_STORE_PASSWORD
keyAlias MYAPP_UPLOAD_KEY_ALIAS
keyPassword MYAPP_UPLOAD_KEY_PASSWORD
} else {
// Fallback to debug signing for CI/local testing
storeFile file('debug.keystore')
storePassword 'android'
keyAlias 'androiddebugkey'
keyPassword 'android'
}
}
}
buildTypes {
debug {
signingConfig signingConfigs.debug
}
release {
signingConfig signingConfigs.release
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
}
}
packagingOptions {
jniLibs {
// Use modern packaging so AGP can 16 KB-align uncompressed .so files
useLegacyPackaging false
pickFirsts += ['**/libc++_shared.so']
}
resources {
excludes += ['META-INF/LICENSE', 'META-INF/NOTICE', 'META-INF/versions/9/OSGI-INF/MANIFEST.MF']
}
}
}
dependencies {
// The version of react-native is set by the React Native Gradle Plugin
implementation("com.facebook.react:react-android")
implementation(project(":react-native-passport-reader")) {
exclude group: 'edu.ucar', module: 'jj2000'
}
implementation project(':passportreader')
implementation 'org.jmrtd:jmrtd:0.7.35'
implementation 'com.github.blikoon:QRCodeScanner:0.1.2'
// Firebase Dependencies
implementation platform('com.google.firebase:firebase-bom:32.7.3')
implementation 'com.google.firebase:firebase-messaging'
if (hermesEnabled.toBoolean()) {
implementation("com.facebook.react:hermes-android")
} else {
implementation jscFlavor
}
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
implementation("net.java.dev.jna:jna:5.13.0@aar")
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android'
implementation 'com.google.code.gson:gson:2.8.9'
implementation 'com.google.android.gms:play-services-mlkit-text-recognition-common:19.1.0'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation 'io.reactivex.rxjava2:rxjava:2.2.21'
implementation "com.github.fotoapparat:fotoapparat:2.7.0"
implementation "androidx.concurrent:concurrent-futures:1.1.0"
implementation "com.google.guava:guava:31.1-android"
implementation "androidx.profileinstaller:profileinstaller:1.3.1"
implementation "androidx.activity:activity:1.9.3"
implementation "androidx.activity:activity-ktx:1.9.3"
implementation "com.google.android.play:app-update:2.1.0"
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}