Пакет React Native в release APK не работает

#react-native #react-native-android #create-react-native-app

#react-native #create-react-native-app

Вопрос:

Я новичок в RN. У меня проблема со сборкой релиза APK. Я делаю следующие шаги:

  1. установка rm -rf node_modules и npm
  2. Генерирующий пакет:

react-собственный пакет

  --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets dest android/app/src/main/res/
  
  1. cd Android amp; ./gradlew assembleRelease

приложение / build.gradle:

 project.ext.react = [
    entryFile: "index.js",
    bundleInDebug: true,
    bundleInRelease: true,
]

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

....
  

Кажется, опция bundleInRelease не работает должным образом. Однако./ gradlew assembleDebug работает идеально! Пожалуйста, помогите!

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

1. Вам просто нужно использовать assembleRelease. Объединение произойдет само собой.

2. Я пытался использовать assembleRelease. Но некоторые функции не работают, и когда я запускаю npm install на терминале, он работает хорошо. Однако, когда я создаю apk с помощью assembleDebug, все работает нормально.

3. Что вы подразумеваете под «Некоторые функции не работают»? Вы улучшаете свое приложение?

4. Я использовал библиотеку ‘react-native-bitcoinjs-lib’, а также, я знаю, что нет правил proguard. Когда я запускаю debug APK, все работает нормально, но в версии APK я получил следующую ошибку: «Ожидаемое свойство ‘0’ типа ECPair, получено k»

5. Я отметил, что, когда я установил bundleInDebug: false, я получил аналогичную ошибку в debug apk.

Ответ №1:

Решено!
Я использовал библиотеку ‘react-native-bitcoinjs-lib’, и дело в том, что библиотека не была полностью настроена. Согласно документации, для генерации release APK, дополнительно, мне пришлось создать файл в проекте с именем metro.config.js . И написал в нем следующий код:

 module.exports = {
    transformer: {
      minifierConfig: {
        mangle: {
          keep_fnames: true
        }
      }
    }
  }
  

Теперь все работает нормально.