所以我正在尝试使用 Detached Expokit 和 React Native Firebase (v3) 启动一个应用程序
我用 exp cli 做了一个新项目,按照https://invertase.io/react-native-firebase/上的所有说明设置 ios,它运行良好按照在 android 上设置的所有说明,经历了一些expo 依赖项和 firebase 依赖项之间的依赖地狱
现在没有更多警告,也没有更多错误,但是当我尝试运行应用程序(模拟器或物理)时,它将 js 包加载到 100%,然后崩溃。没有错误或消息,只是崩溃。
我已经尝试了我能想到的一切(清理、重建、清除缓存、重新安装 npm、降级到 RNFirebase 2x)
有没有人遇到过这个问题,或者知道如何解决?提前致谢
项目信息(如果需要,请询问更多)
包.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"
}
应用程序.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"
}
}
}
项目 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
}
应用程序构建.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:21.0.0@aar') {
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'
主应用程序.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()
);
}
}