很長一段時間的讀者,首次海報,新鮮獨立屋世博+ RNFirebase不是運行在Android上
所以我想使用獨立式Expokit啓動一個應用程序,並作出反應本地火力地堡(V3)
我做與EXP CLI新的項目, 隨後在https://invertase.io/react-native-firebase/所有指令設置iOS和它運行良好 照着所有的說明建立在Android上, 通過世博會依賴和火力依賴
之間的一些依賴地獄去的D現在沒有更多的警告,並沒有更多的錯誤,但是當我嘗試運行的應用程式(模擬器或物理),它加載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"
}
}
}
項目的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
}
應用的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()
);
}
}
對我來說,訣竅是打開Android Studio中的項目,試圖建立,並通過gradle這個文件看起來尋找任何有squigly線在下面(表示錯誤/警告)。 這些警告通常會提到有關版本不匹配的問題,並且對於每個具有不同版本的文件,我都必須在最新版本的文件中明確要求它們(例如在我的回答中) 在儘管如此,我還是採取了你的(和其他人的建議,並放棄了expokit,贊成我所需要的單個軟件包。 –