|
| 1 | +import io.invertase.gradle.common.PackageJson |
| 2 | + |
| 3 | +buildscript { |
| 4 | + // The Android Gradle plugin is only required when opening the android folder stand-alone. |
| 5 | + // This avoids unnecessary downloads and potential conflicts when the library is included as a |
| 6 | + // module dependency in an application project. |
| 7 | + if (project == rootProject) { |
| 8 | + repositories { |
| 9 | + google() |
| 10 | + mavenCentral() |
| 11 | + } |
| 12 | + |
| 13 | + dependencies { |
| 14 | + classpath('com.android.tools.build:gradle:7.0.0') |
| 15 | + } |
| 16 | + } |
| 17 | +} |
| 18 | + |
| 19 | +plugins { |
| 20 | + id 'io.invertase.gradle.build' version '1.5' |
| 21 | +} |
| 22 | + |
| 23 | +def appProject |
| 24 | +if (findProject(':@react-native-firebase_app')) { |
| 25 | + appProject = project(':@react-native-firebase_app') |
| 26 | +} else if (findProject(':react-native-firebase_app')) { |
| 27 | + appProject = project(':react-native-firebase_app') |
| 28 | +} else { |
| 29 | + throw new GradleException('Could not find the react-native-firebase/app package, have you installed it?') |
| 30 | +} |
| 31 | +def packageJson = PackageJson.getForProject(project) |
| 32 | +def appPackageJson = PackageJson.getForProject(appProject) |
| 33 | +def firebaseBomVersion = appPackageJson['sdkVersions']['android']['firebase'] |
| 34 | +def jsonMinSdk = appPackageJson['sdkVersions']['android']['minSdk'] |
| 35 | +def jsonTargetSdk = appPackageJson['sdkVersions']['android']['targetSdk'] |
| 36 | +def jsonCompileSdk = appPackageJson['sdkVersions']['android']['compileSdk'] |
| 37 | +def jsonBuildTools = appPackageJson['sdkVersions']['android']['buildTools'] |
| 38 | +def coreVersionDetected = appPackageJson['version'] |
| 39 | +def coreVersionRequired = packageJson['peerDependencies'][appPackageJson['name']] |
| 40 | +// Only log after build completed so log warning appears at the end |
| 41 | +if (coreVersionDetected != coreVersionRequired) { |
| 42 | + gradle.buildFinished { |
| 43 | + project.logger.warn("ReactNativeFirebase WARNING: NPM package '${packageJson['name']}' depends on '${appPackageJson['name']}' v${coreVersionRequired} but found v${coreVersionDetected}, this might cause build issues or runtime crashes.") |
| 44 | + } |
| 45 | +} |
| 46 | + |
| 47 | +project.ext { |
| 48 | + set('react-native', [ |
| 49 | + versions: [ |
| 50 | + android : [ |
| 51 | + minSdk : jsonMinSdk, |
| 52 | + targetSdk : jsonTargetSdk, |
| 53 | + compileSdk: jsonCompileSdk, |
| 54 | + // optional as gradle.buildTools comes with one by default |
| 55 | + // overriding here though to match the version RN uses |
| 56 | + buildTools: jsonBuildTools |
| 57 | + ], |
| 58 | + |
| 59 | + firebase: [ |
| 60 | + bom: firebaseBomVersion, |
| 61 | + ], |
| 62 | + ], |
| 63 | + ]) |
| 64 | +} |
| 65 | + |
| 66 | +android { |
| 67 | + defaultConfig { |
| 68 | + multiDexEnabled true |
| 69 | + } |
| 70 | + lintOptions { |
| 71 | + disable 'GradleCompatible' |
| 72 | + abortOnError false |
| 73 | + } |
| 74 | + compileOptions { |
| 75 | + sourceCompatibility JavaVersion.VERSION_1_8 |
| 76 | + targetCompatibility JavaVersion.VERSION_1_8 |
| 77 | + } |
| 78 | + sourceSets { |
| 79 | + main { |
| 80 | + java.srcDirs = ['src/main/java', 'src/reactnative/java'] |
| 81 | + } |
| 82 | + } |
| 83 | +} |
| 84 | + |
| 85 | +repositories { |
| 86 | + google() |
| 87 | + mavenCentral() |
| 88 | +} |
| 89 | + |
| 90 | +dependencies { |
| 91 | + api appProject |
| 92 | + implementation platform("com.google.firebase:firebase-bom:${ReactNative.ext.getVersion('firebase', 'bom')}") |
| 93 | + // These are beta, so they are not in the BoM yet. We have to specify the versions explicitly. |
| 94 | + implementation 'com.google.firebase:firebase-appcheck-safetynet:16.0.0-beta02' |
| 95 | + debugImplementation 'com.google.firebase:firebase-appcheck-debug:16.0.0-beta02' |
| 96 | +} |
| 97 | + |
| 98 | +ReactNative.shared.applyPackageVersion() |
| 99 | +ReactNative.shared.applyDefaultExcludes() |
| 100 | +ReactNative.module.applyAndroidVersions() |
| 101 | +ReactNative.module.applyReactNativeDependency('api') |
0 commit comments