#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