buildscript { def kotlin_version = rootProject.ext.has('kotlinVersion') ? rootProject.ext.get('kotlinVersion') : project.properties['VisionCamera_kotlinVersion'] repositories { maven { url "https://plugins.gradle.org/m2/" } mavenCentral() google() } dependencies { classpath "com.android.tools.build:gradle:7.3.1" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version" } } def ENABLE_FRAME_PROCESSORS = false // TODO: fix def kotlin_version = rootProject.ext.has('kotlinVersion') ? rootProject.ext.get('kotlinVersion') : project.properties['VisionCamera_kotlinVersion'] def resolveBuildType() { Gradle gradle = getGradle() String tskReqStr = gradle.getStartParameter().getTaskRequests()['args'].toString() return tskReqStr.contains('Release') ? 'release' : 'debug' } def isNewArchitectureEnabled() { // To opt-in for the New Architecture, you can either: // - Set `newArchEnabled` to true inside the `gradle.properties` file // - Invoke gradle with `-newArchEnabled=true` // - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true` return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true" } if (isNewArchitectureEnabled()) { apply plugin: 'com.facebook.react' } apply plugin: 'com.android.library' apply plugin: 'kotlin-android' def safeExtGet(prop, fallback) { rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback } def reactNativeArchitectures() { def value = project.getProperties().get("reactNativeArchitectures") return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"] } repositories { google() mavenCentral() } android { compileSdkVersion safeExtGet("compileSdkVersion", 28) // Used to override the NDK path/version on internal CI or by allowing // users to customize the NDK path/version from their root project (e.g. for M1 support) if (rootProject.hasProperty("ndkPath")) { ndkPath rootProject.ext.ndkPath } if (rootProject.hasProperty("ndkVersion")) { ndkVersion rootProject.ext.ndkVersion } buildFeatures { prefab true } defaultConfig { minSdkVersion safeExtGet('minSdkVersion', 21) targetSdkVersion safeExtGet('targetSdkVersion', 33) versionCode 1 versionName "1.0" buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString() if (ENABLE_FRAME_PROCESSORS) { externalNativeBuild { cmake { cppFlags "-O2 -frtti -fexceptions -Wall -Wno-unused-variable -fstack-protector-all" arguments "-DANDROID_STL=c++_shared" abiFilters (*reactNativeArchitectures()) } } } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } if (ENABLE_FRAME_PROCESSORS) { externalNativeBuild { cmake { path "CMakeLists.txt" } } } packagingOptions { doNotStrip resolveBuildType() == 'debug' ? "**/**/*.so" : '' excludes = [ "META-INF", "META-INF/**", "**/libjsi.so", ] } } dependencies { //noinspection GradleDynamicVersion implementation 'com.facebook.react:react-android:+' implementation 'androidx.core:core-ktx:1.3.2' implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.5.2" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.2" implementation "androidx.camera:camera-core:1.1.0-beta02" implementation "androidx.camera:camera-camera2:1.1.0-beta02" implementation "androidx.camera:camera-lifecycle:1.1.0-beta02" implementation "androidx.camera:camera-video:1.1.0-beta02" implementation "androidx.camera:camera-view:1.1.0-beta02" implementation "androidx.camera:camera-extensions:1.1.0-beta02" implementation "androidx.exifinterface:exifinterface:1.3.3" } // Resolves "LOCAL_SRC_FILES points to a missing file, Check that libfb.so exists or that its path is correct". tasks.whenTaskAdded { task -> if (task.name.contains("configureCMakeDebug")) { rootProject.getTasksByName("packageReactNdkDebugLibs", true).forEach { task.dependsOn(it) } } // We want to add a dependency for both configureCMakeRelease and configureCMakeRelWithDebInfo if (task.name.contains("configureCMakeRel")) { rootProject.getTasksByName("packageReactNdkReleaseLibs", true).forEach { task.dependsOn(it) } } }