mirror of
https://github.com/zhigang1992/react-native-firebase.git
synced 2026-01-12 22:50:20 +08:00
200 lines
7.5 KiB
Groovy
200 lines
7.5 KiB
Groovy
buildscript {
|
|
repositories {
|
|
google()
|
|
jcenter()
|
|
maven {
|
|
url 'https://maven.fabric.io/public'
|
|
}
|
|
}
|
|
dependencies {
|
|
classpath 'com.android.tools.build:gradle:3.2.0'
|
|
}
|
|
}
|
|
|
|
apply plugin: 'com.android.library'
|
|
|
|
def DEFAULT_COMPILE_SDK_VERSION = 27
|
|
def DEFAULT_BUILD_TOOLS_VERSION = "28.0.2"
|
|
def DEFAULT_TARGET_SDK_VERSION = 27
|
|
def DEFAULT_SUPPORT_LIB_VERSION = "27.1.1"
|
|
|
|
android {
|
|
compileSdkVersion rootProject.hasProperty('compileSdkVersion') ? rootProject.compileSdkVersion : DEFAULT_COMPILE_SDK_VERSION
|
|
buildToolsVersion rootProject.hasProperty('buildToolsVersion') ? rootProject.buildToolsVersion : DEFAULT_BUILD_TOOLS_VERSION
|
|
defaultConfig {
|
|
minSdkVersion 16
|
|
targetSdkVersion rootProject.hasProperty('targetSdkVersion') ? rootProject.targetSdkVersion : DEFAULT_TARGET_SDK_VERSION
|
|
versionCode 1
|
|
versionName "1.0"
|
|
multiDexEnabled true
|
|
}
|
|
buildTypes {
|
|
release {
|
|
minifyEnabled false
|
|
}
|
|
}
|
|
productFlavors {
|
|
}
|
|
lintOptions {
|
|
disable 'GradleCompatible'
|
|
}
|
|
compileOptions {
|
|
sourceCompatibility JavaVersion.VERSION_1_8
|
|
targetCompatibility JavaVersion.VERSION_1_8
|
|
}
|
|
}
|
|
|
|
rootProject.gradle.buildFinished { buildResult ->
|
|
if (buildResult.getFailure() != null) {
|
|
//noinspection GroovyUnusedCatchParameter
|
|
try {
|
|
String message = buildResult.getFailure().properties.get("reportableCauses").toString()
|
|
if (message.contains("com.android.dex.DexException: Multiple dex files define Lcom/google/") ||
|
|
message.contains("java.util.zip.ZipException: duplicate entry: com/google/android/gms/")) {
|
|
logger.log(LogLevel.ERROR, "")
|
|
logger.log(LogLevel.ERROR, " -----------------------------------------------------------")
|
|
logger.log(LogLevel.ERROR, "| REACT NATIVE FIREBASE |")
|
|
logger.log(LogLevel.ERROR, " ----------------------------------------------------------- ")
|
|
logger.log(LogLevel.ERROR, "| |")
|
|
logger.log(LogLevel.ERROR, "| This is a common build error when using libraries that |")
|
|
logger.log(LogLevel.ERROR, "| require google play services. |")
|
|
logger.log(LogLevel.ERROR, "| |")
|
|
logger.log(LogLevel.ERROR, "| This error occurs because different versions of google |")
|
|
logger.log(LogLevel.ERROR, "| play services or google play services modules are being |")
|
|
logger.log(LogLevel.ERROR, "| required by different libraries. |")
|
|
logger.log(LogLevel.ERROR, "| |")
|
|
logger.log(LogLevel.ERROR, "| A temporary fix would be to set: |")
|
|
logger.log(LogLevel.ERROR, "| |")
|
|
logger.log(LogLevel.ERROR, "| android { multiDexEnabled true } |")
|
|
logger.log(LogLevel.ERROR, "| |")
|
|
logger.log(LogLevel.ERROR, "| inside your build gradle, however it is recommended for |")
|
|
logger.log(LogLevel.ERROR, "| your prod build that you de-duplicate these to minimize |")
|
|
logger.log(LogLevel.ERROR, "| bundle size. |")
|
|
logger.log(LogLevel.ERROR, "| |")
|
|
logger.log(LogLevel.ERROR, "| See http://invertase.link/dupe-dex for how to do this. |")
|
|
logger.log(LogLevel.ERROR, "| |")
|
|
logger.log(LogLevel.ERROR, " ----------------------------------------------------------- ")
|
|
}
|
|
} catch (Exception exception) {
|
|
}
|
|
}
|
|
}
|
|
|
|
repositories {
|
|
google()
|
|
jcenter()
|
|
|
|
def found = false
|
|
def parentDir = rootProject.projectDir
|
|
def androidSourcesName = 'React Native sources'
|
|
def androidPrebuiltBinaryName = 'React Native prebuilt binary'
|
|
|
|
1.upto(4, {
|
|
if (found) return true
|
|
parentDir = parentDir.parentFile
|
|
|
|
// Running React Native from sources locally or for ExpoKit
|
|
def androidSourcesDir = new File(
|
|
parentDir,
|
|
'node_modules/react-native'
|
|
)
|
|
|
|
// Official releases of React Native come with a prebuilt version of Android sources
|
|
// in ./android, e.g. react-native/android/**/react-native-0.57.1.aar
|
|
def androidPrebuiltBinaryDir = new File(
|
|
parentDir,
|
|
'node_modules/react-native/android'
|
|
)
|
|
|
|
if (androidPrebuiltBinaryDir.exists()) {
|
|
maven {
|
|
url androidPrebuiltBinaryDir.toString()
|
|
name androidPrebuiltBinaryName
|
|
}
|
|
|
|
println "${project.name}: using ${androidPrebuiltBinaryName} from ${androidPrebuiltBinaryDir.toString()}"
|
|
found = true
|
|
} else if (androidSourcesDir.exists()) {
|
|
maven {
|
|
url androidSourcesDir.toString()
|
|
name androidSourcesName
|
|
}
|
|
|
|
println "${project.name}: using ${androidSourcesName} from ${androidSourcesDir.toString()}"
|
|
found = true
|
|
}
|
|
})
|
|
|
|
if (!found) {
|
|
throw new GradleException(
|
|
"${project.name}: unable to locate React Native android sources or prebuilt binary. " +
|
|
"Ensure you have you installed React Native as a dependency in your project and try again."
|
|
)
|
|
}
|
|
}
|
|
|
|
def supportVersion = rootProject.hasProperty('supportLibVersion') ? rootProject.supportLibVersion : DEFAULT_SUPPORT_LIB_VERSION
|
|
|
|
dependencies {
|
|
//noinspection GradleDynamicVersion
|
|
api "com.facebook.react:react-native:+"
|
|
|
|
/* ----------------------------
|
|
* REACT NATIVE FIREBASE
|
|
* ---------------------------- */
|
|
|
|
// Required dependencies
|
|
//noinspection GradleCompatible
|
|
compileOnly "com.google.firebase:firebase-core:16.0.4"
|
|
compileOnly "com.google.android.gms:play-services-base:16.0.1"
|
|
|
|
/* -------------------------
|
|
* OPTIONAL FIREBASE SDKS
|
|
* ------------------------- */
|
|
|
|
// Ads
|
|
compileOnly('com.google.firebase:firebase-ads:15.0.1') {
|
|
// exclude `customtabs` as the support lib version is out of date
|
|
// we manually add it as a dependency below with a custom version
|
|
exclude group: 'com.android.support', module: 'customtabs'
|
|
}
|
|
// Authentication
|
|
compileOnly "com.google.firebase:firebase-auth:16.0.5"
|
|
// Analytics
|
|
compileOnly "com.google.firebase:firebase-analytics:16.0.4"
|
|
// Performance Monitoring
|
|
compileOnly "com.google.firebase:firebase-perf:16.2.0"
|
|
// Remote Config
|
|
compileOnly "com.google.firebase:firebase-config:16.1.0"
|
|
// Cloud Storage
|
|
compileOnly "com.google.firebase:firebase-storage:16.0.4"
|
|
// Invites
|
|
compileOnly "com.google.firebase:firebase-invites:16.0.4"
|
|
// Dynamic Links
|
|
compileOnly "com.google.firebase:firebase-dynamic-links:16.1.2"
|
|
// Real-time Database
|
|
compileOnly "com.google.firebase:firebase-database:16.0.4"
|
|
// Cloud Functions
|
|
compileOnly "com.google.firebase:firebase-functions:16.1.2"
|
|
// Cloud Firestore
|
|
compileOnly "com.google.firebase:firebase-firestore:17.1.2"
|
|
// Cloud Messaging / FCM
|
|
compileOnly "com.google.firebase:firebase-messaging:17.3.4"
|
|
// Crashlytics
|
|
compileOnly('com.crashlytics.sdk.android:crashlytics:2.9.5@aar') {
|
|
transitive = true
|
|
}
|
|
/* --------------------------------
|
|
* OPTIONAL SUPPORT LIBS
|
|
* -------------------------------- */
|
|
|
|
// For Firebase Ads
|
|
compileOnly "com.android.support:customtabs:$supportVersion"
|
|
|
|
// For React Native Firebase Notifications
|
|
api "com.android.support:support-v4:$supportVersion"
|
|
|
|
// For React Native Firebase Notifications
|
|
compileOnly 'me.leolin:ShortcutBadger:1.1.21@aar'
|
|
}
|