mirror of
https://github.com/selfxyz/self.git
synced 2026-02-19 02:24:25 -05:00
245 lines
8.6 KiB
Groovy
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)
|
|
}
|
|
}
|