所以我尝试使用Detached Expokit和React Native Firebase(v3)启动应用程序
我用exp cli创建了一个新项目, 按照https://invertase.io/react-native-firebase/的所有说明设置ios,运行正常 按照设置在android上的所有说明, 在expo依赖项和firebase依赖项之间经历了一些依赖性地狱
现在没有更多警告,也没有更多错误,但是当我尝试运行应用程序(模拟器或物理)时,它会将js包加载到100%,然后崩溃。没有错误或消息,只是崩溃。
我已经尝试了我能想到的一切(清理,重建,清除缓存,重新安装npm,降级到RNFirebase 2x)
之前有没有人遇到过这个问题,或者知道如何修复? 提前致谢
项目信息(如果需要,请询问更多)
的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"
}
}
}
project 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: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'
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()
);
}
}
答案 0 :(得分:3)
诀窍是,我必须手动编译版本不匹配的每个Google Play服务模块。
(当您将鼠标悬停在依赖项上时,您可以看到版本不匹配作为警告)
compile "com.google.android.gms:play-services-base:11.4.2"
compile "com.google.android.gms:play-services-base-license:11.4.2"
compile "com.google.android.gms:play-services-ads:11.4.2"
compile "com.google.android.gms:play-services-ads-lite:11.4.2"
compile "com.google.android.gms:play-services-ads-license:11.4.2"
compile "com.google.android.gms:play-services-analytics:11.4.2"
compile "com.google.android.gms:play-services-analytics-impl:11.4.2"
compile "com.google.android.gms:play-services-auth:11.4.2"
compile "com.google.android.gms:play-services-auth-base:11.4.2"
compile "com.google.android.gms:play-services-fitness:11.4.2"
compile "com.google.android.gms:play-services-gcm:11.4.2"
compile "com.google.android.gms:play-services-identity:11.4.2"
compile "com.google.android.gms:play-services-maps:11.4.2"
compile "com.google.android.gms:play-services-wallet:11.4.2"
答案 1 :(得分:2)
RNFirebase的共同作者,
我们从来没有真正支持过世博会,除了完全弹射之后 - 没有Detached ExpoKit,因为随后的Gyroid=(cos(x) .* sin(y) + cos(y) .* sin(z) + cos(z) .* sin(x));
% Reverse Gyroid
R=sqrt( (-sin(x).*sin(y)+cos(x).*cos(z)).^2+(-
sin(y).*sin(z)+cos(y).*cos(x)).^2+(-sin(z).*sin(x)+cos(z).*cos(y)).^2 );
ReverseGyroid=(Gyroid.*T./R);
isosurface(Gyroid)
isosurface(ReverseGyroid)
在Android上附带了ExpoKit。
尽管如此,我很高兴您通过它并使其正常工作,对其他人有用的是,如果您能提供详细的步骤以使其正常工作(即它是否只是手动覆盖上述版本?并且我们可以为其他任何想要冒风险的人记录它:)