Построить и установить unsigned apk на устройстве без сервера разработки?
Как я новичок в реакции-родной, так что если что-то не так в шагах, дайте мне знать.
Я создал реагировать родное приложение для Android с помощью команды в соответствии с документацией
реагировать-родной андроид
во время работы на устройстве использовалась следующая команда
реагировать-родной запуск андроид
который дает мне вывод 2 apk файлов в моей папке проекта /android/app/build/output/apk
![enter image description here]()
теперь, когда я использую для установки этот apk после установки, он запрашивает сервер разработки для подключения для комплектации JS. Но мое требование заключается в том, что пользователю не нужно бороться с сервером разработки, просто ему нужно установить apk, и все готово.
Прошли некоторые вопросы по qaru.site/info/38922/... но они не помогли создать неподписанный apk, который не требует сервера разработки.
Не могли бы вы, ребята, помочь мне найти способ, которым как построить и неподписанный apk в реагировать родной?
Ответы
Ответ 1
Вам необходимо вручную создать пакет для отладочной сборки.
Bundle debug build:
#React-Native 0.59
react-native bundle --dev false --platform android --entry-file index.js --bundle-output ./android/app/src/main/assets/index.android.bundle --assets-dest ./android/app/src/main/res
#React-Native 0.49.0+
react-native bundle --dev false --platform android --entry-file index.js --bundle-output ./android/app/build/intermediates/assets/debug/index.android.bundle --assets-dest ./android/app/build/intermediates/res/merged/debug
#React-Native 0-0.49.0
react-native bundle --dev false --platform android --entry-file index.android.js --bundle-output ./android/app/build/intermediates/assets/debug/index.android.bundle --assets-dest ./android/app/build/intermediates/res/merged/debug
Затем построить APK после комплектации:
$ cd android
#Create debug build:
$ ./gradlew assembleDebug
#Create release build:
$ ./gradlew assembleRelease #Generated 'apk' will be located at 'android/app/build/outputs/apk'
P.S. Другим подходом может быть изменение скриптов gradle.
Ответ 2
Пожалуйста, следуйте этим шагам.
Поставьте свой JS:
если у вас есть index.android.js в корне проекта, запустите
react-native bundle --dev false --platform android --entry-file index.android.js --bundle-output ./android/app/build/intermediates/assets/debug/index.android.bundle --assets-dest ./android/app/build/intermediates/res/merged/debug
если у вас есть index.js в корне проекта, запустите
react-native bundle --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
Создать отладочный apk:
cd android/
./gradlew assembleDebug
Тогда вы можете найти свой apk здесь:
cd app/build/outputs/apk/
Ответ 3
Со мной в каталоге проекта запускаются следующие команды.
Для реакции на старую версию (вы увидите index.android.js в корне):
mkdir -p android/app/src/main/assets && rm -rf android/app/build && react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res && cd android && ./gradlew clean assembleRelease && cd ../
Для реакции на новую версию (вы просто видите index.js в корне):
mkdir -p android/app/src/main/assets && rm -rf android/app/build && react-native bundle --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 && cd android && ./gradlew clean assembleRelease && cd ../
Файл apk будет сгенерирован по адресу:
- Gradle <3.0: android/приложение/сборка/выводы/apk/
- Gradle 3. 0+: android/приложение/сборка/выводы/apk/release/
Ответ 4
Последнее обновление
В вашем корневом каталоге проекта
Убедитесь, что у вас уже есть каталог android/app/src/main/assets/, если не создаете каталог, после этого создайте новый файл и сохраните его как index.android.bundle
и поместите ваш файл как этот android/app/src/main/активы/index.android.bundle
После этого запустите
react-native bundle --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/
cd android && ./gradlew assembleDebug
Тогда вы можете получить apk
в app/build/output/apk/debug/app-debug.apk
Ответ 5
После того, как вы выполните первый ответ , вы можете запустить свое приложение, используя
react-native run-android --variant=debug
И ваше приложение будет работать без необходимости в пакете
Ответ 6
Для пользователя Windows, если все шаги следуют должным образом из этого: https://facebook.github.io/react-native/docs/signed-apk-android.html
Вам нужно только запустить: gradlew assembleRelease
И ваш файл будет:
- приложение-release.apk
- приложение-релиз-unaligned.apk
Местоположение: E:\YourProjectName\android\app\build\outputs\apk
Ответ 7
Я на реагирую родной 0.55.4, в основном я должен был связать вручную:
react-native bundle --dev false --platform android --entry-file index.js --bundle-
output ./android/app/build/intermediates/assets/debug/index.android.bundle --assets-
dest ./android/app/build/intermediates/res/merged/debug
Затем подключите устройство через USB, включите отладку USB. Проверьте подключенное устройство с помощью adb devices
.
Наконец, запустите react-native run-android
который установит apk отладки на ваш телефон, и вы сможете нормально запустить его с сервером dev
Замечания:
- Начиная с 0.49.0, точкой входа является один
index.js
-
gradlew assembleRelease
генерирует только релиз-неподписанные apks, которые не могут быть установлены
Ответ 8
Может быть возможно создать неподписанную версию apk для тестирования, чтобы вы могли работать на своем мобильном телефоне.
Первоначально я получил ошибки красного экрана, как большинство упоминалось здесь. но я следовал тому же, что упоминалось здесь, и это сработало для меня.
На вашей консоли из рабочего каталога выполните эти четыре команды
react-native bundle --dev false --platform android --entry-file index.js --bundle-output ./android/app/build/intermediates/assets/debug/index.android.bundle --assets-dest ./android/app/build/intermediates/res/merged/debug
cd android
gradlew assembleDebug
gradlew assembleRelease
И тогда APK файл выдаст на: android\app\build\output\apk\debug\app-debug.apk
Ответ 9
Начиная с версии 0.57, ни один из ранее предоставленных ответов больше не будет работать, так как каталоги, в которых gradle ожидает найти пакет, и активы изменились.
Простой способ без реагирующей нативной связки
Самый простой способ построить отладочную сборку - это вообще не использовать команду react-native bundle
, а просто изменить ваш файл app/build.gradle
.
Внутри карты project.ext.react
в файле app/build.gradle
добавьте запись bundleInDebug: true
.
Если вы хотите, чтобы это была не сборка --dev
(без предупреждений и минимизированного пакета), вам также следует добавить запись devDisabledInDebug: true
на ту же карту.
С реактивно-родной связкой
Если по какой-либо причине вам нужно или вы хотите использовать команду react-native bundle
для создания пакета, а затем ./gradlew assembleDebug
для создания APK с пакетом и активами, вы должны обязательно поместить пакет и активы в правильные пути, где gradle может их найти.
Начиная с версии 0.57 эти пути
android/app/build/generated/assets/react/debug/index.android.js
для связки
и android/app/build/generated/res/react/debug
для активов. Итак, полные команды для ручного объединения и сборки APK с пакетом и активами:
react-native bundle --dev false --platform android --entry-file index.js --bundle-output ./android/app/build/generated/assets/react/debug/index.android.bundle --assets-dest ./android/app/build/res/react/debug
а затем
./gradlew assembleDebug
Путь к пакетам и активам
Обратите внимание, что пути, где gradle ищет пакет и активы, могут быть изменены. Чтобы узнать, где находятся эти пути, посмотрите файл react.gradle
в вашем каталоге node_modules/react-native
. Строки, начинающиеся с def jsBundleDir =
и def resourcesDir =
, указывают каталоги, в которых gradle ищет пакет и ресурсы соответственно.
Ответ 10
На случай, если кто-то еще недавно столкнулся с этой же проблемой, я использую React Native 0.59.8 (также протестированный с RN 0.60), и я могу подтвердить некоторые другие ответы, вот шаги:
-
Удалите последнюю скомпилированную версию вашего приложения, установленного на вашем устройстве.
-
Запустите react-native bundle --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
-
запустите cd android/&&./gradlew assembleDebug
-
Загрузите ваш app-debug.apk в папку android/app/build/output/apk/debug
удачи!
Ответ 11
Я нашел решение, меняющее buildTypes следующим образом:
buildTypes {
release {
signingConfig signingConfigs.release
}
}
Ответ 12
Перейдите в папку android и запустите ./gradlew assembleRelease
, чтобы создать файл выпуска, который вы можете отправить на свое устройство Android. Для версии apk не требуется, чтобы сервер dev работал.