2017-10-08 79 views
1

很長一段時間的讀者,首次海報,新鮮獨立屋世博+ 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() 
    ); 
    } 
} 

回答

3

擺弄天后,我終於得到它跑!

訣竅是,我不得不手動編譯每個谷歌播放過的版本不匹配的服務模塊。

(你可以看到的版本不匹配的警告,當你將鼠標懸停在依賴)

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" 
2

RNFirebase這裏的合着者,

我們從來沒有真正支持比世博會後,其他全彈射 - 無需獨立式ExpoKit由於附帶ExpoKit Android上的後續dependency hell

儘管如此,我很高興你通過它獲得了它的工作,對別人有幫助的是如果你可以提供詳細的步驟來讓它工作(也就是說它只是手動覆蓋上述版本?),我們都不可能將其記錄下來用於其他任何人想冒着理智:)

+0

對我來說,訣竅是打開Android Studio中的項目,試圖建立,並通過gradle這個文件看起來尋找任何有squigly線在下面(表示錯誤/警告)。 這些警告通常會提到有關版本不匹配的問題,並且對於每個具有不同版本的文件,我都必須在最新版本的文件中明確要求它們(例如在我的回答中) 在儘管如此,我還是採取了你的(和其他人的建議,並放棄了expokit,贊成我所需要的單個軟件包。 –

相關問題