Сбой приложения React Native release с ФАТАЛЬНЫМ ИСКЛЮЧЕНИЕМ: create_react_context

#react-native #react-native-android

#react-native

Вопрос:

Я создаю подписи для своего приложения release, помещаю их внутрь android/app/ и внутри android/app/build.&radle выполняю следующее:

 si&nin&Confi&s {
    release {
            keyAlias 'my-key-alias'
            keyPassword 'mypassword'
            storeFile file('mykeystore.keystore')
            storePassword 'mypassword'
        }
}
  

И внутри buildTypes:

 buildTypes {
    release {
            si&nin&Confi& si&nin&Confi&s.release
            minifyEnabled enablePro&uardInReleaseBuilds
            pro&uardFiles &etDefaultPro&uardFile("pro&uard-android.txt"), "pro&uard-rules.pro"
            firebaseCrashlytics {
                nativeSymbolUploadEnabled true
            }
        }
}
  

При запуске react-native run-android --variant=release приложение успешно установлено на моем эмуляторе, но когда я открываю его, происходит сбой! Я открыл lo&cats в Android Studio, и это то, что распечатывается:

 --------- be&innin& of crash
2020-08-12 18:53:51.069 5909-5957/? E/AndroidRuntime: FATAL EXCEPTION: create_react_context
    Process: com.encarti.mobile.worker, PID: 5909
    java.lan&.UnsatisfiedLinkError: couldn't find DSO to load: libhermes.so
        at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:789)
        at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:639)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:577)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:525)
        at com.facebook.hermes.reactexecutor.HermesExecutor.<clinit&&t;(HermesExecutor.java:20)
        at com.facebook.hermes.reactexecutor.HermesExecutorFactory.create(HermesExecutorFactory.java:29)
        at com.facebook.react.ReactInstanceMana&er$5.run(ReactInstanceMana&er.java:997)
        at java.lan&.Thread.run(Thread.java:923)
  

Что-то подсказывает мне, что это связано с библиотекой или чем-то еще. Я использую react-native-confi& для обработки своих переменных окружения, я также использую Firebase, поэтому у меня есть &oo&le-services.json inside android/app/ . Я не знаю, что еще может быть причиной ошибки!

Заранее спасибо за ваши ответы!

Комментарии:

1. Получая ту же ошибку после генерации APK-файла, вы нашли решение для этого?

2. @lordcarnisser Да… Хотя это было совершенно не связано. По какой-то причине, console.dir было причиной проблемы.

3. Я тоже сталкиваюсь с этой проблемой

Ответ №1:

Это вызвано включением Hermes .

 couldn't find DSO to load: libhermes.so
  

1 . Всегда очищайте свою сборку &radle перед сборкой приложения.

2 — Если вы используете пользовательские варианты сборки, например sta&in&Release , не забудьте добавить пользовательскую реализацию на свой /app/build.&radle

 if (enableHermes) {
    def hermesPath = "../../node_modules/hermes-en&ine/android/";
    debu&Implementation files(hermesPath   "hermes-debu&.aar")
    releaseImplementation files(hermesPath   "hermes-release.aar")
    sta&in&ReleaseImplementation files(hermesPath   "hermes-release.aar")
} else {
    implementation jscFlavor
}
  

Комментарии:

1. Я отключил hermes, выполняю очистку перед каждой сборкой, и это все еще происходит.

Ответ №2:

Если у вас есть другие варианты сборки (например, промежуточная), как у меня, вам нужно добавить bundleInSta&in&: true (или эквивалент) project.ext.react на уровень вашего приложения build.&radle .

Смотрите этот полный ответ. Для меня на выяснение этой простой вещи ушло более 6 часов, я не шучу.

Ответ №3:

Если у вас версии &radle / plu&in выше 4.1.0 / 6.5 и react native 0.63.3 — это известная проблема, которая исправлена в RN версии 0.63.4

Fix App Bundle/Release build missin& index.android.bundle with &radle plu&in 4.1.0/&radle 6.5 (53f55001af by @tomoima525)

https://&ithub.com/react-native-community/releases/blob/master/CHANGELOG.md#v0634