4
votes

Exception dans HostObject :: get: - React Native Build Android

Après avoir mis à jour mon application React Native vers React Native 0.59, j'ai commencé à rencontrer un problème en essayant d'exécuter mon application en mode débogage (react-native run-android) ou après avoir généré le package et installé sur un appareil.

Voici les informations sur mon problème:

Mon environnement:

apply plugin: "com.android.application"
apply plugin: "com.google.firebase.firebase-perf"
apply plugin: "io.fabric"

import com.android.build.OutputFile

project.ext.react = [
    entryFile: "index.js"
]

apply from: "../../node_modules/react-native/react.gradle"

def enableSeparateBuildPerCPUArchitecture = false

/**
 * Run Proguard to shrink the Java bytecode in release builds.
 */
def enableProguardInReleaseBuilds = false

android {
    compileSdkVersion rootProject.ext.compileSdkVersion

    defaultConfig {
        applicationId "com.projectname"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode 1
        versionName "1.0"
        ndk {
            abiFilters "armeabi-v7a", "x86"
        }
    }
    signingConfigs {
        release {
            if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
                storeFile file(MYAPP_RELEASE_STORE_FILE)
                storePassword MYAPP_RELEASE_STORE_PASSWORD
                keyAlias MYAPP_RELEASE_KEY_ALIAS
                keyPassword MYAPP_RELEASE_KEY_PASSWORD
            }
        }
    }
    splits {
        abi {
            reset()
            enable enableSeparateBuildPerCPUArchitecture
            universalApk false  // If true, also generate a universal APK
            include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
        }
    }
    buildTypes {
        release {
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
            signingConfig signingConfigs.release
        }
    }
    // applicationVariants are e.g. debug, release
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            // For each separate APK per architecture, set a unique version code as described here:
            // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
            def versionCodes = ["armeabi-v7a":1, "x86":2, "arm64-v8a": 3, "x86_64": 4]
            def abi = output.getFilter(OutputFile.ABI)
            if (abi != null) {  // null for the universal-debug, universal-release variants
                output.versionCodeOverride =
                        versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
            }
        }
    }
}

dependencies {
    implementation project(':react-native-splash-screen')
    implementation project(':@react-native-community_netinfo')
    implementation project(':@react-native-community_async-storage')
    implementation project(':react-native-linear-gradient')
    implementation project(':react-native-svg')
    implementation project(':bugsnag-react-native')
    implementation 'com.android.support:multidex:1.0.3'
    implementation project(':react-native-firebase')
    implementation "com.google.android.gms:play-services-base:16.0.1"
    implementation "com.google.firebase:firebase-core:16.0.6"
    implementation "com.google.firebase:firebase-messaging:17.3.4"
    implementation "com.google.firebase:firebase-perf:16.2.3"
    implementation('com.crashlytics.sdk.android:crashlytics:2.9.5@aar') {
        transitive = true
    }
    implementation project(':react-native-config')
    implementation project(':react-native-device-info')
    implementation project(':react-native-i18n')
    implementation project(':react-native-vector-icons')
    implementation project(':react-native-gesture-handler')
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
    implementation "com.facebook.react:react-native:+"  // From node_modules
}

// Run this once to be able to run the application with BUCK
// puts all compile dependencies into folder libs for BUCK to use
task copyDownloadableDepsToLibs(type: Copy) {
    from configurations.compile
    into 'libs'
}

apply plugin: 'com.google.gms.google-services'
com.google.gms.googleservices.GoogleServicesPlugin.config.disableVersionCheck = true

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        if (details.requested.group == 'com.google.android.gms'
            && ( (details.requested.name == 'play-services-base') || (details.requested.name == 'play-services-maps') ) ) {
            details.useVersion '16.0.1'
        }
    }
}

Erreur dans l'écran d'erreur React Native:

Écran d'erreur

Erreur capturée sur mon bugsnag

buildscript {
    ext {
         buildToolsVersion = "28.0.3"
        minSdkVersion = 16
        compileSdkVersion = 28
        targetSdkVersion = 28
        supportLibVersion = "28.0.0"
    }
    repositories {
        google()
        jcenter()
        maven {
            url 'https://maven.fabric.io/public'
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.2'
        classpath 'com.google.gms:google-services:4.2.0'
        classpath 'com.google.firebase:firebase-plugins:1.1.5'
        classpath 'io.fabric.tools:gradle:1.26.0'
    }
}

allprojects {
    repositories {
        mavenLocal()
        google()
        jcenter()
        maven {
            url "$rootDir/../node_modules/react-native/android"
        }
    }
}

task wrapper(type: Wrapper) {
    gradleVersion = '4.10.2'
    distributionUrl = distributionUrl.replace("bin", "all")
}

Mon fichier build.gradle

Error · Module AppRegistry is not a registered callable module (calling runApplication)
http://localhost:8081/index.delta?platform=android&dev=true&minify=false:3954:26invariant   
http://localhost:8081/index.delta?platform=android&dev=true&minify=false:4674:18__callFunction  
http://localhost:8081/index.delta?platform=android&dev=true&minify=false:4433:31    
http://localhost:8081/index.delta?platform=android&dev=true&minify=false:4630:15__guard 
http://localhost:8081/index.delta?platform=android&dev=true&minify=false:4432:21callFunctionReturnFlushedQueue  
[native code]callFunctionReturnFlushedQueue


2 commentaires

L'avez-vous résolu? Le problème était-il lié à la réponse ci-dessous?


@Felipe Augusto Nunes da Silva l'avez-vous résolu?


3 Réponses :


1
votes

cette erreur est due au fait que vous avez oublié d'installer un module dans android vérifiez MainApplication.java vérifiez si vous importez tous les packages et également si vous les ajoutez à la liste ReactPackage.


0 commentaires

3
votes

Dans mon cas, le problème était avec react-native-device-info.

Essayez ceci dans vos dépendances app / build.gradle:

dependencies {
   ...
   implementation(project(':react-native-device-info')) {
      exclude group: 'com.google.android.gms'
   }
}

Cela a fonctionné pour moi.


2 commentaires

A travaillé pour moi. Doit être utilisé avec l'implémentation que l'erreur se produit. Dans mon cas, c'était RNCamera. Merci


@Nagibaba et user1791428 Comment avez-vous utilisé le code? Dans mon cas, c'est RNGoogleSignin mais j'ai déjà le code ci-dessus avec react-native-google-signin. Je reçois toujours cette erreur



0
votes

C'est une vraie blague !!! La mise en œuvre de cette bibliothèque est extrêmement difficile mais néanmoins après 4 heures ...

build.gradle Niveau projet

import firebase from 'react-native-firebase';
firebase.analytics().logEvent('i_should_just_give_up_in_life');

build .gradle App level

**MainApplication.java**

     @Override
        protected List<ReactPackage> getPackages() {
          return Arrays.<ReactPackage>asList(
              new MainReactPackage(),
                new RNFirebasePackage(),
                  new RNFirebaseDatabasePackage(),
                  new RNFirebaseAnalyticsPackage(),
                  new RNFirebaseAdMobPackage(),
                  new RNFirebaseAuthPackage()
          );
        }

puis enfin pour mettre la cerise sur le gâteau:

  dependencies {
        // FIREBASE \\
        implementation 'com.google.firebase:firebase-database:11.4.2'
        implementation 'com.google.firebase:firebase-ads:11.4.2'
        implementation 'com.google.firebase:firebase-auth:11.4.2'
        implementation 'com.google.firebase:firebase-messaging:11.4.2'
        implementation  'com.google.firebase:firebase-core:11.4.2'
        // END \\
        implementation fileTree(dir: "libs", include: ["*.jar"])
        implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
        implementation "com.facebook.react:react-native:+"  // From node_modules
    }

et maintenant vous peut utiliser react-native-firebase hourra .... -.-

 dependencies {
            classpath 'com.android.tools.build:gradle:3.3.1'
            classpath 'com.google.gms:google-services:3.2.1'
        }

J'espère que cela vous fera gagner du temps


0 commentaires