Как я могу сгенерировать apk, который может работать без сервера с реагированием?
Я построил свое приложение, я могу запустить его на своем локальном симуляторе (а также на своем устройстве Android в той же сети, изменив сервер отладки).
Тем не менее, я хочу создать apk, который я могу отправить кому-то без доступа к серверу разработки, и я хочу, чтобы он мог тестировать приложение.
Я вижу, есть раздел Использование автономного пакета на iOS разделе документации. Но я не мог понять, как сделать то же самое для Android. Это возможно? Если так, то как?
ОБНОВЛЕНИЕ: В ответе на этот вопрос (реакция родного андроида не смогла загрузить пакет JS) говорится, что автономный пакет можно загрузить с сервера разработки. Но когда я получаю пакет с сервера разработки, файлы изображений не могут быть загружены.
Ответы
Ответ 1
После ответа Адитьи Сингха сгенерированный (неподписанный) apk не будет установлен на моем телефоне. Я должен был создать подписанный apk, используя инструкции здесь.
У меня сработало следующее:
$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
Поместите файл my-release-key.keystore
каталог android/app
в папке вашего проекта. Затем отредактируйте файл ~/.gradle/gradle.properties
и добавьте следующее (замените **** на правильный пароль хранилища ключей, псевдоним и пароль ключа)
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=****
MYAPP_RELEASE_KEY_PASSWORD=****
Если вы используете MacOS, вы можете сохранить свой пароль в связке ключей, следуя приведенным здесь инструкциям, вместо того, чтобы хранить его в виде открытого текста.
Затем отредактируйте app/build.gradle и убедитесь, что имеется следующее (возможно, необходимо добавить разделы с signatureConfigs signatureConfig):
...
android {
...
defaultConfig { ... }
signingConfigs {
release {
if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
storeFile file(MYAPP_RELEASE_STORE_FILE)
storePassword MYAPP_RELEASE_STORE_PASSWORD
keyAlias MYAPP_RELEASE_KEY_ALIAS
keyPassword MYAPP_RELEASE_KEY_PASSWORD
}
}
}
buildTypes {
release {
...
signingConfig signingConfigs.release
}
}
}
...
Затем выполните команду cd android &&./gradlew assembleRelease
,
Для Windows 'cd android', а затем запустите gradlew assembleRelease
и найдите ваш подписанный apk в каталоге android/app/build/outputs/apk/app-release.apk
Ответ 2
Вам нужно будет создать ключ для подписи apk. Используйте ниже, чтобы создать свой ключ:
keytool -genkey -v -keystore my-app-key.keystore -alias my-app-alias -keyalg RSA -keysize 2048 -validity 10000
Используйте пароль при запросе
После того, как ключ сгенерирован, используйте его для генерации устанавливаемой сборки:
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/
Генерация сборки с использованием Gradle
cd android && ./gradlew assembleRelease
Загрузите APK на свой телефон. Флаг -r
заменит существующее приложение (если оно существует)
adb install -r ./app/build/outputs/apk/app-release-unsigned.apk
Более подробное описание упоминается здесь: https://facebook.github.io/react-native/docs/signed-apk-android.html
ОБНОВЛЕНИЕ: Основано на комментариях @shashuec и @Fallen
если вы получили ошибку
ENOENT: нет такого файла или каталога, откройте "android/app/src/main/assets/index.android.bundle"
запустите mkdir android/app/src/main/assets
Ответ 3
Запустите эту команду:
react-native run-android --variant=release
Обратите внимание, что --variant=release
доступен только в том случае, если вы настроили подпись с cd android && ./gradlew assembleRelease
.
Ответ 4
Вы должны просто использовать студию Android для этого процесса. Это просто проще. Но сначала запустите эту команду в своем родном каталоге приложений:
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/
Затем используйте Android-студию, чтобы открыть папку "android", в которой вы реагируете на родной каталог приложений, он попросит обновить gradle и некоторые другие вещи. перейдите к build- > Создайте подписанный APK и следуйте инструкциям оттуда. Это действительно прямо.
Ответ 5
для React Native 0.49 и выше
Вы должны перейти в каталог проекта на терминале и выполнить эту команду
1 - mkdir android/app/src/main/assets
2 - 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
если под 0,49
1 - mkdir android/app/src/main/assets
2 - 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
Затем используйте android studio, чтобы открыть папку "android" в вашем собственном каталоге приложений, он попросит обновить gradle и некоторые другие вещи. перейдите на build-> Создать подписанный APK и следуйте инструкциям оттуда. Это хорошо.
Ответ 6
Если вы получите Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
.
Я попытался использовать метод @Aditya для создания файла unsigned APK и установить его, но когда я пошел устанавливать его на планшет Android, он дал мне ошибку Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
.
Я предполагаю, что это связано с тем, что файл APK не был подписан, и планшет был недоволен этим. Таким образом, после генерации файла пакета React Native я смог создать подписанный файл APK, как обычно, через Android Studio.
Кстати, наше приложение является полностью функциональным Android-приложением, которое уже существует в Play Store, и мы просто добавляем React Native к ним в кусочки размером с укусом, потому что это потрясающе.
Итак, чтобы подвести итог, были следующие шаги:
1) Создать реактивный родной пучок:
react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/<your-package-name>/src/main/assets/index.android.bundle --assets-dest android/<your-package-name>/src/main/res/
2) Создайте подписанный файл APK из Android Studio.
3) Установите подписанный файл APK на USB-устройство:
adb -d install -r <path_to_signed_apk>
Флаг -d
просто сообщает adb
для установки на подключенном USB-устройстве, в том случае, если у вас работает эмулятор. Если вы хотите установить какой-либо эмулятор, опустите флаг -d
.
4) Прибыль!
Ответ 7
У меня есть другое решение: -
Создание ключа подписи
Вы можете создать закрытый ключ подписи с помощью keytool. В Windows keytool должен запускаться из C:\Program Files\Java\jdkx.x.x_x\bin.
$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
Поместите файл my-release-key.keystore в каталог android/app в папке проекта.
Отредактируйте файл android/app/build.gradle в папке проекта и добавьте конфигурацию подписи
android {
....
signingConfigs {
release {
storeFile file('my-release-key.keystore')
storePassword 'yourpassword'
keyAlias 'my-key-alias'
keyPassword 'yourpassword'
}
}}}
buildTypes {release {signingConfig signingConfigs.release}}
и запустите
gradlew assembleRelease
Это даст вам два файла в android\app\build\output\apk
app-release.apk и app-release-unsigned.apk
теперь установите app-release.apk в свое устройство Android.
Ответ 8
Перейдите в каталог проекта и запустите команду:
cd android && ./gradlew assembleRelease
Ответ 9
Если вы получаете сообщение об ошибке index.android.js. Это потому, что вы используете новую версию React-native (я использую 0.55.4). Просто замените "index.android.js" на "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/
Ответ 10
Надеюсь, это поможет новым новичкам
Официальный документ здесь
Если у вас нет хранилища ключей, чем использовать до команды, иначе пропустите
Генерация ключа подписи/файла хранилища ключей. Вы можете создать личный ключ подписи, используя keytool. В Windows keytool должен запускаться из C:\Program Files\Java\jdkx.x.x_x\bin.
$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
вы получите файл типа my-release-key.keystore
Настройка переменных gradle Поместите файл my-release-key.keystore в каталог android/app в папке вашего проекта. Отредактируйте файл Android/gradle.properties и добавьте следующее (замените ***** с правильным паролем хранилища ключей, псевдонимом и паролем ключа), enableAapt2 установить фальшь обходной путь, как и Android Gradle версии 3.0 проблем
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=*****
MYAPP_RELEASE_KEY_PASSWORD=*****
android.enableAapt2=false
затем добавьте эти app/buid.gradle (приложение)
ниже конфигурации по умолчанию
signingConfigs {
release {
if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
storeFile file(MYAPP_RELEASE_STORE_FILE)
storePassword MYAPP_RELEASE_STORE_PASSWORD
keyAlias MYAPP_RELEASE_KEY_ALIAS
keyPassword MYAPP_RELEASE_KEY_PASSWORD
}
}
и Inside Build type release {}
signingConfig signingConfigs.release
затем просто запустите эту команду в терминале студии Android. Ниже команды будут автоматизировать, прежде всего ответы
если окна
cd android
gradlew assembleRelease
если Linux/Mac
$ cd android
$ ./gradlew assembleRelease
если вы получили какую-либо ошибку, удалите всю папку сборки и выполните команду
gradlew clean
чем снова
gradlew assembleRelease
Ответ 11
Для получения последних версий реагируйте на родные версии для связывания проекта
Android
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/
IOS
react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest ios
Ответ 12
Использование android studio для создания подписанного apk для реагирующего проекта android также является хорошим и простым вариантом, откройте Android-проект реагирования в android studio и сгенерируйте нажатие клавиш и подписанный apk.
Ответ 13
Графический интерфейс в Android Studio
- Откройте приложение Android для приложения React Native в Android Studio (это означает, что вы откроете папку android вашего собственного реактивного проекта в Android Studio)
- Перейдите на вкладку "Сборка" вверху
- Перейдите к "Build Bundle (s)/APK (s)"
- Затем выберите "Build APK (s)"
- Это проведет вас через процесс поиска ваших ключей для подписания APK или создания ваших ключей, если у вас их еще нет, что очень просто. Если вы только тренируетесь, вы можете сгенерировать эти ключи и сохранить их на рабочем столе.
- Как только этот процесс завершится и сборка прошла успешно, в Android Studio появится всплывающее окно. Нажмите на ссылку внутри, которая говорит "найти" (APK)
- Это приведет вас к файлу apk, перенесите его на ваше устройство Android. Затем перейдите к этому файлу на устройстве Android и установите его.
Ответ 14
Обратитесь к официальной документации о создании подписанного APK
Реактивно-генерирующая подписанная APK
Ответ 15
Попробуйте ниже, он сгенерирует app-debug.apk в вашей корневой /android/app/build/output/apk/debug папке
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
затем перейдите в папку Android и запустите
./gradlew assembleDebug