Как я могу сделать сборку реагирующей нативной копии актива из node_modules в apk? - PullRequest
1 голос
/ 28 марта 2019

Я создаю реактивное приложение, которое встраивает WebView для размещения не нативных реактивных компонентов. У меня есть небольшой HTML-файл, который является источником для WebView и находится в подпапке android / app / src / main / assets, который, как я понимаю, должен быть для сборки, чтобы скопировать его в apk, хотя я думаю, что мне понадобится еще одна копия в другом месте для IOS. Пока все хорошо ... это много работает.

Теперь htm-файл должен извлекать обычные компоненты реакции из кода в модуле npm. Он содержит тег script, чей src должен ссылаться на файл, который доступен в подкаталоге node_modules. Я не знаю ни одного URL, который я могу вставить в src, который будет ссылаться на файл напрямую из node_modules и скопировать его в apk. Простое решение - вручную скопировать файл в ту же подпапку android / app / src / main / assets и просто использовать его имя в качестве src. Это также работает, хотя может быть лучший способ.

Проблема: как я могу автоматизировать копирование файла из node_modules в ресурсы? (В идеале, решение также будет работать для IOS, хотя в этот момент я был бы рад иметь только Android).

Я исследовал rnpm и ссылку на реакционную систему. Документация, которую я могу найти, очень неадекватна, но, похоже, этот механизм может использоваться только для шрифтов.

Я исследовал добавление команды копирования в стартовый скрипт в package.json, например:

"scripts": {
    "start": "copy/Y node_modules/X/Ybundle.js android/app/src/main/assets/X/Ybundle.js & node node_modules/react-native/local-cli/cli.js start"
},

но копия не произошла, когда я запустил реактивный пуск-андроид.

Мне интересно, можно ли что-то добавить в сценарий gradle для реактивного проекта, но я не могу найти документацию о том, как это используется в процессе сборки собственного реагирования.

1 Ответ

1 голос
/ 28 марта 2019

Лучшее решение, которое я нашел на данный момент, - это добавить несколько скриптов в package.json:

"scripts": {
    "copyAssets": "node -e \"fs.copyFileSync('./node_modules/bloom-player-react/output/bloomPlayerControlBundle.js','./android/app/src/main/assets/bloom-player/bloomPlayerControlBundle.js')\"",
    "start-android": "npm run copyAssets && react-native run-android",
    ...
  }

Затем, когда я запускаю npm, запускается программа-андроид, сначала происходит копирование, а затем обычный запуск Android.

...