lecteur de longue date, première affiche de temps,frais Détaché Expo + RNFirebase ne fonctionne pas sur Android
Je suis en train de démarrer une application en utilisant l'Détaché Expokit et React natif Firebase (v3)
J'ai fait un nouveau projet avec exp cli, suivi toutes les instructions à https://invertase.io/react-native-firebase/ pour mettre en place ios, et il fonctionne très bien suivi toutes les instructions pour mettre en place sur Android, a traversé un certain enfer de dépendance entre les dépendances expo et dépendances Firebase
An d maintenant il n'y a plus d'avertissements, et plus d'erreurs, mais quand j'essaie d'exécuter l'application (émulateur ou physique), elle charge le paquet js à 100%, puis tombe en panne. Pas d'erreurs ou de messages, il suffit de planter.
Ive a essayé tout ce que je peux penser (propre, reconstruire, effacer le cache, réinstaller NPM, déclasser à RNFirebase 2x)
Quelqu'un at-il rencontré ce problème avant, ou savoir comment résoudre? Merci à l'avance
information sur le projet (lui demander plus d'si nécessaire)
package.json:
"dependencies": {
"expo": "^21.0.0",
"react": "16.0.0-alpha.12",
"react-native": "https://github.com/expo/react-native/archive/sdk-21.0.2.tar.gz",
"react-native-firebase": "^3.0.2"
}
app.json:
{
"expo": {
"name": "xxx",
"description": "An empty new project",
"slug": "xxx",
"privacy": "unlisted",
"sdkVersion": "20.0.0",
"version": "1.0.0",
"orientation": "portrait",
"primaryColor": "#cccccc",
"icon": "./assets/icons/app-icon.png",
"loading": {
"icon": "./assets/icons/loading-icon.png"
},
"packagerOpts": {
"assetExts": [
"ttf",
"mp4"
]
},
"ios": {
"supportsTablet": true,
"bundleIdentifier": "xxx",
"publishBundlePath": "ios/xxx/Supporting/shell-app.bundle",
"publishManifestPath": "ios/xxx/Supporting/shell-app-manifest.json"
},
"android": {
"package": "xxx"
},
"isDetached": true,
"detach": {
"scheme": "exp7d16843de771498786f3beabce0d6439",
"iosExpoViewUrl": "https://s3.amazonaws.com/exp-exponent-view-code/ios-v1.20.5-sdk21.0.0-xxx.tar.gz",
"androidExpoViewUrl": "https://s3.amazonaws.com/exp-exponent-view-code/android-v1.20.0-sdk21.0.0-xxx.tar.gz"
}
}
}
projet build.gradle :
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
classpath 'com.google.gms:google-services:3.1.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
mavenLocal()
jcenter()
maven {
// Point to local maven repository
url "$rootDir/../.expo-source/android/maven"
}
maven {
url 'https://maven.google.com'
}
maven {
url "https://jitpack.io"
}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
app build.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion '25.0.2'
defaultConfig {
applicationId "xxx"
minSdkVersion 19
targetSdkVersion 25
versionCode 1
versionName "1.0"
multiDexEnabled true
ndk {
abiFilters 'armeabi-v7a', 'x86'
}
manifestPlaceholders = [
'appAuthRedirectScheme': 'xxx'
]
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dexOptions {
javaMaxHeapSize "8g"
}
packagingOptions {
pickFirst 'META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.properties'
pickFirst 'META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.xml'
pickFirst 'META-INF/services/com.fasterxml.jackson.core.JsonFactory'
pickFirst 'META-INF/maven/com.squareup.okhttp/okhttp/pom.properties'
pickFirst 'META-INF/maven/com.squareup.okhttp/okhttp/pom.xml'
pickFirst 'META-INF/maven/com.squareup.okio/okio/pom.properties'
pickFirst 'META-INF/maven/com.squareup.okio/okio/pom.xml'
pickFirst 'META-INF/LICENSE'
}
}
task exponentPrebuildStep(type: Exec) {
workingDir '../../'
if (System.getProperty('os.name').toLowerCase().contains('windows')) {
commandLine 'cmd', '/c', '.\\.expo-source\\android\\detach-scripts\\prepare-detached-build.bat'
} else {
commandLine './.expo-source/android/detach-scripts/prepare-detached-build.sh'
}
}
preBuild.dependsOn exponentPrebuildStep
repositories{
flatDir{
dirs 'libs'
}
mavenLocal()
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
compile(project(':react-native-firebase')) {
// exclude group: 'com.google.android.gms'
// exclude group: 'com.google.firebase'
transitive = false
}
// RNFirebase required dependencies
compile "com.google.firebase:firebase-core:11.4.2"
// RNFirebase optional dependencies
// compile "com.google.firebase:firebase-ads:11.4.2"
// compile "com.google.firebase:firebase-auth:11.4.2"
// compile "com.google.firebase:firebase-config:11.4.2"
// compile "com.google.firebase:firebase-crash:11.4.2"
compile "com.google.firebase:firebase-database:11.4.2"
// compile "com.google.firebase:firebase-firestore:11.4.2"
// compile "com.google.firebase:firebase-messaging:11.4.2"
// compile "com.google.firebase:firebase-perf:11.4.2"
// compile "com.google.firebase:firebase-storage:11.4.2"
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile ('com.android.support:appcompat-v7:25.3.1') {
force = true
}
compile ('com.android.support:recyclerview-v7:25.3.1') {
force= true
}
compile ('com.android.support:animated-vector-drawable:25.3.1') {
force= true
}
// compile 'com.android.support:multidex:1.0.1'
compile('host.exp.exponent:expoview:[email protected]') {
exclude group: 'com.google.android.gms'
exclude group: 'com.facebook.android', module: 'facebook-android-sdk'
exclude group: 'com.facebook.android', module: 'audience-network-sdk'
exclude group: 'io.nlopez.smartlocation', module: 'library'
transitive = true;
}
compile ("com.google.android.gms:play-services-base:11.4.2") {
force = true
}
compile ("com.google.android.gms:play-services-maps:11.4.2") {
force = true
}
compile ('com.facebook.android:facebook-android-sdk:4.+') {
exclude module: 'bolts-android'
}
compile('com.facebook.android:audience-network-sdk:4.+') {
exclude module: 'play-services-ads'
}
compile('io.nlopez.smartlocation:library:3.2.11') {
transitive = false
}
}
apply plugin: 'com.google.gms.google-services'
mainApplication.java:
package xxx;
import android.support.multidex.MultiDexApplication;
import com.facebook.react.ReactPackage;
import java.util.Arrays;
import java.util.List;
// Needed for `react-native link`
// import com.facebook.react.ReactApplication;
// React Native Firebase
import io.invertase.firebase.RNFirebasePackage; // <-- This should be added already
// Optional packages - add as appropriate
// import io.invertase.firebase.admob.RNFirebaseAdMobPackage; //Firebase AdMob
// import io.invertase.firebase.analytics.RNFirebaseAnalyticsPackage; // Firebase Analytics
// import io.invertase.firebase.auth.RNFirebaseAuthPackage; // Firebase Auth
// import io.invertase.firebase.config.RNFirebaseRemoteConfigPackage; // Firebase Remote Config
// import io.invertase.firebase.crash.RNFirebaseCrashPackage; // Firebase Crash Reporting
import io.invertase.firebase.database.RNFirebaseDatabasePackage; // Firebase Realtime Database
// import io.invertase.firebase.firestore.RNFirebaseFirestorePackage; // Firebase Firestore
// import io.invertase.firebase.messaging.RNFirebaseMessagingPackage; // Firebase Cloud Messaging
// import io.invertase.firebase.perf.RNFirebasePerformancePackage; // Firebase Performance
// import io.invertase.firebase.storage.RNFirebaseStoragePackage; // Firebase Storage
public class MainApplication extends MultiDexApplication {
// Needed for `react-native link`
public List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
// Add your own packages here!
// TODO: add cool native modules
// Needed for `react-native link`
// new MainReactPackage(),
new RNFirebasePackage(),
// Add these packages as appropriate
// new RNFirebaseAdMobPackage(),
// new RNFirebaseAnalyticsPackage(),
// new RNFirebaseAuthPackage(),
// new RNFirebaseRemoteConfigPackage(),
// new RNFirebaseCrashPackage(),
new RNFirebaseDatabasePackage()
// new RNFirebaseFirestorePackage(),
// new RNFirebaseMessagingPackage(),
// new RNFirebasePerformancePackage(),
// new RNFirebaseStoragePackage()
);
}
}
l'astuce pour moi était d'ouvrir le projet dans Android Studio, essayer de construire, et regarder à travers les fichiers gradle à la recherche de tout ce qui avait des lignes squigly dessous (indiquant une erreur/avertissement). Ces avertissements disent généralement quelque chose à propos de la non-concordance de version et pour chacun de ces fichiers qui ont des versions différentes, je devais explicitement les exiger dans le fichier avec la version la plus à jour ( À la fin de la Le jour même, j'ai pris votre (et le conseil de quelqu'un d'autre et ai laissé tomber l'expokit en faveur des paquets individuels dont j'avais besoin. –