// Top-level build file where you can add configuration options common to all sub-projects/modules. import com.android.build.api.variant.AndroidComponentsExtension buildscript { ext { minSdkVersion = 21 targetSdkVersion = 33 compileSdkVersion = 33 dbFlowVersion = '4.2.4' buildToolsVersion = '33.0.0' kotlinVersion = '1.6.10' gradlePluginVersion = '7.3.1' gradleDownloadTaskVersion = '5.0.1' repositoryUrl = "file:${System.env.HOME}/.m2/repository/" // We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP. ndkVersion = "23.1.7779620" } repositories { google() mavenCentral() } dependencies { classpath "com.android.tools.build:gradle:${gradlePluginVersion}" classpath 'com.google.gms:google-services:4.3.5' classpath "de.undercouch:gradle-download-task:$gradleDownloadTaskVersion" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" // WHEN_DISTRIBUTING_REMOVE_FROM_HERE classpath "com.facebook.react:react-native-gradle-plugin" // WHEN_DISTRIBUTING_REMOVE_TO_HERE } } // WHEN_DISTRIBUTING_REMOVE_FROM_HERE // We don't need linter on turtle. plugins { id "com.diffplug.spotless" version "5.14.1" } // WHEN_DISTRIBUTING_REMOVE_TO_HERE allprojects { repositories { // For non-detach maven { url "$rootDir/maven" } // For old expoviews to work maven { url "$rootDir/versioned-abis/expoview-abi47_0_0/maven" } maven { url "$rootDir/versioned-abis/expoview-abi46_0_0/maven" } maven { url "$rootDir/versioned-abis/maven" } google() mavenCentral { // We don't want to fetch react-native from Maven Central as there are // older versions over there. content { excludeGroup "com.facebook.react" } } maven { // Local Maven repo containing AARs with JSC built for Android url "$rootDir/../node_modules/jsc-android/dist" } maven { // Local expo-camera Maven repo containing our slightly modified // Google's cameraview from expo/cameraview. url "$rootDir/../packages/expo-camera/android/maven" } flatDir { dirs 'libs' // dirs project(':expoview').file('libs') } maven { url "https://jitpack.io" } // Want this last so that we never end up with a stale cache mavenLocal() } configurations.all { // WHEN_DISTRIBUTING_REMOVE_FROM_HERE resolutionStrategy.dependencySubstitution { substitute(module("com.facebook.react:react-native")) .using(project(":ReactAndroid")) .because("Building React Native from source") substitute(module("com.facebook.react:react-native:+")) .using(project(":ReactAndroid")) .because("Building React Native from source") substitute(module("com.facebook.react:react-android")) .using(project(":ReactAndroid")) .because("Building React Native from source") } // WHEN_DISTRIBUTING_REMOVE_TO_HERE } } // to prevent duplicated lib error, pick first of libc++_shared.so and libfbjni.so for instrumented tests allprojects { subProject -> subProject.afterEvaluate { def androidComponents = subProject.extensions.findByType(AndroidComponentsExtension.class) androidComponents?.with { onVariants(selector().all()) { getAndroidTest()?.packaging?.jniLibs?.pickFirsts?.addAll([ "**/libc++_shared.so", "**/libfbjni.so", ]) } } } } // This var needs to be defined outside any "remove_from_here" comment blocks // because the "*/" in there could affect the resulted code by closing the comment to early. def ktlintTarget = '**/*.kt' // WHEN_DISTRIBUTING_REMOVE_FROM_HERE // We don't need linter on turtle. subprojects { project -> if (project.name == "ReactAndroid") { return; } if (project.name.startsWith("vendored_")) { return; } plugins.apply("com.diffplug.spotless") spotless { format 'gradle', { target '*.gradle' trimTrailingWhitespace() indentWithSpaces() endWithNewline() } kotlin { target(ktlintTarget) // TODO: (barthap) Replace this with raw string when dropped shell app macros // The star "*" signs interferes with slash "/" and treated wildcard path as comment ¯\_(ツ)_/¯ targetExclude(["**", "versioned/host/exp/exponent/modules/api", "**", "*.kt"].join("/")) ktlint("0.41.0").userData([ "disabled_rules" : "no-wildcard-imports,import-ordering", "charset" : "utf-8", "end_of_line" : "lf", "indent_size" : "2", "indent_style" : "space", "insert_final_newline" : "true", "tab_width" : "2", "trim_trailing_whitespace" : "true" ]) trimTrailingWhitespace() indentWithSpaces() endWithNewline() } } } // WHEN_DISTRIBUTING_REMOVE_TO_HERE