-
Notifications
You must be signed in to change notification settings - Fork 2.2k
/
Copy pathbuild.gradle
128 lines (109 loc) · 3.78 KB
/
build.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
import io.invertase.gradle.common.PackageJson
import org.gradle.internal.jvm.Jvm
buildscript {
// The Android Gradle plugin is only required when opening the android folder stand-alone.
// This avoids unnecessary downloads and potential conflicts when the library is included as a
// module dependency in an application project.
if (project == rootProject) {
repositories {
google()
mavenCentral()
}
dependencies {
classpath("com.android.tools.build:gradle:8.4.0")
}
}
}
plugins {
id "io.invertase.gradle.build" version "1.5"
}
def packageJson = PackageJson.getForProject(project)
def firebaseBomVersion = packageJson['sdkVersions']['android']['firebase']
def playServicesAuthVersion = packageJson['sdkVersions']['android']['playServicesAuth']
def jsonMinSdk = packageJson['sdkVersions']['android']['minSdk']
def jsonTargetSdk = packageJson['sdkVersions']['android']['targetSdk']
def jsonCompileSdk = packageJson['sdkVersions']['android']['compileSdk']
project.ext {
set('react-native', [
versions: [
android : [
minSdk : jsonMinSdk,
targetSdk : jsonTargetSdk,
compileSdk: jsonCompileSdk,
],
firebase: [
bom: firebaseBomVersion,
],
play : [
"play-services-auth": playServicesAuthVersion,
],
],
])
}
apply from: file('./firebase-json.gradle')
// If data collection isn't specifically disabled, default is enabled
String dataCollectionDefaultEnabled = 'true'
if (rootProject.ext && rootProject.ext.firebaseJson) {
if (rootProject.ext.firebaseJson.isFlagEnabled('app_data_collection_default_enabled', true) == false) {
dataCollectionDefaultEnabled = 'false'
}
}
android {
def agpVersion = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')[0].toInteger()
if (agpVersion >= 7) {
namespace 'io.invertase.firebase'
}
defaultConfig {
multiDexEnabled true
manifestPlaceholders = [
firebaseJsonDataCollectionDefaultEnabled: dataCollectionDefaultEnabled
]
}
buildFeatures {
// AGP 8 no longer builds config by default
buildConfig true
}
lintOptions {
disable 'GradleCompatible'
abortOnError false
}
if (agpVersion < 8) {
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
}
sourceSets {
main {
java.srcDirs = ['src/main/java', 'src/reactnative/java']
}
}
}
repositories {
google()
mavenCentral()
}
dependencies {
implementation platform("com.google.firebase:firebase-bom:${ReactNative.ext.getVersion("firebase", "bom")}")
implementation "com.google.firebase:firebase-common"
implementation "com.google.android.gms:play-services-auth:${ReactNative.ext.getVersion("play", "play-services-auth")}"
}
def jvmVersion = Jvm.current().javaVersion?.majorVersion
// if it cannot get version, just allow it to pass. This is just a helper for developers
if ((jvmVersion?.toInteger() ?: 17) < 17) {
println("\n\n\n")
println("**************************************************************************************************************")
println("\n\n\n")
println("ERROR: React Native Firebase builds with a minimum JVM version 17. We test with JVM 17 and 21.")
println(" Incompatible major version detected: '" + jvmVersion + "'")
println("\n\n\n")
println(" If you receive this error because you want to use a different JDK, we may accept PRs to support new versions.")
println("\n\n\n")
println("**************************************************************************************************************")
println("\n\n\n")
System.exit(1)
}
ReactNative.shared.applyPackageVersion()
ReactNative.shared.applyDefaultExcludes()
ReactNative.module.applyAndroidVersions()
ReactNative.module.applyReactNativeDependency("api")