NoClassDefFoundError com.facebook.react.bridge.WritableNativeMap

Estoy aleatoriamente recibiendo un accidente al intentar cargar un jsbundle (fuera de línea reacción de la aplicación)

mReactInstanceManager = ReactInstanceManager.builder().setApplication(mActivity.getApplication()) .setJSBundleFile(appPath) .addPackage(mReactPackage).addPackage(new MyCustomReactPackage()) .setUseDeveloperSupport(false)//For performance use false .setInitialLifecycleState(LifecycleState.RESUMED) .setNativeModuleCallExceptionHandler(new NativeModuleCallExceptionHandler() { @Override public void handleException(Exception e) { e.printStackTrace(); Logger.e(TAG,"Exception while opening app "+ Log.getStackTraceString(e)); } }) .build(); reactRootView.startReactApplication(mReactInstanceManager, launchClassName, initialProps); 

Stacktrace:

 LOCATION com.facebook.react.JSCConfig$1.a() EXCEPTION java.lang.NoClassDefFoundError MESSAGE com.facebook.react.bridge.WritableNativeMap at com.facebook.react.JSCConfig$1.a()(null:14) at com.facebook.react.ReactInstanceManager.k()(null:359) at com.facebook.react.ReactInstanceManager.j()(null:353) at com.facebook.react.ReactInstanceManager.c()(null:295) at com.facebook.react.ReactRootView.a()(null:221) at com.example.sdk.uidesign.fragments.AppFragment.b()(null:215) at com.example.sdk.uidesign.ActivityV2.a()(null:1265) at com.example.sdk.uidesign.adapter.AppsAdapter.a()(null:102) at com.example.sdk.uidesign.adapter.AppsAdapter.a()(null:37) at com.example.sdk.uidesign.ae$a$1.onClick()(null:135) at android.view.View.performClick()(View.java:4790) at android.view.View$PerformClick.run()(View.java:19883) at android.os.Handler.handleCallback()(Handler.java:739) at android.os.Handler.dispatchMessage()(Handler.java:95) at android.os.Looper.loop()(Looper.java:135) at android.app.ActivityThread.main()(ActivityThread.java:5268) at java.lang.reflect.Method.invoke()(Method.java:-2) at java.lang.reflect.Method.invoke()(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run()(ZygoteInit.java:902) at com.android.internal.os.ZygoteInit.main()(ZygoteInit.java:697) 

Cualquier ayuda sería apreciada.

Android 5.1 tiene un límite arbitrario de 100 archivos dex

Aquí lo que podemos ver en runtime / dex_file.cc

 bool DexFile::OpenFromZip(...) { ... while (i < 100) { std::string name = StringPrintf("classes%zu.dex", i) ... } ... } 

Así que si tienes más de 100 archivos dex obtienes este NoClassDefFoundError.

Es posible evitar este error al inhabilitar la predexicación

Una solución posible es desactivar preDexLibraries, lo que reduce el número de archivos classes.dex incluidos en un apk.

Añadir

 android { dexOptions { preDexLibraries false } } 

Al archivo build.gradle de la aplicación

Java.lang.NoClassDefFoundError al ejecutar la aplicación con Android 5.1 con Android Studio 2.2RC

Actualización:

Parece que el problema real está relacionado con la carga de la biblioteca fbjni utilizando soloader. Finalmente solucionamos este problema precargando la biblioteca soloader

 import com.facebook.soloader.SoLoader; @Override public void onCreate() { ... ... SoLoader.init(getApplicationContext(), /* native exopackage */ false); //SoLoader.loadLibrary("fbjni"); //uncomment this line if the issue is not resolved } 
  • Cambiar textColor de <TextInput /> en ReactNative
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.