Como posso gerar um apk que pode ser executado sem servidor com reat-native?
construí o meu aplicativo, posso executá-lo no meu simulador local (e também no meu dispositivo android dentro da mesma rede, alterando o servidor de depuração).
No entanto, eu quero construir um apk que eu possa enviar para alguém sem acesso ao servidor de desenvolvimento e eu quero que eles sejam capazes de testar a aplicação.vejo que há uma secção a usar o pacote offline na secção iOS da documentação. Mas não consegui descobrir como conseguir o mesmo para o android. Isto é possível? Em caso afirmativo, Como?
UPDATE: na resposta a esta pergunta (reat native android falhou em carregar o pacote js) diz-se que o pacote offline pode ser descarregado do servidor de desenvolvimento. Mas quando eu obtenho o pacote do servidor de desenvolvimento os arquivos de imagem não podem ser carregados.
9 answers
O seguinte funcionou para mim:
$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
Coloque o ficheiro my-release-key.keystore
sob o android/app
directório na sua pasta do projecto. Em seguida, edite o arquivo
~/.gradle/gradle.properties
e adicionar o seguinte (substituir ****
com a senha correcta do teclado, nome falso e senha da chave)
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=****
MYAPP_RELEASE_KEY_PASSWORD=****
Se estás a usar MacOS, podes guarde a sua senha no chaveiro usando as instruções aqui em vez de armazená-la no texto simples.
Depois edite app / build.Grale e assegure-se de que existem as seguintes secções (as secções com sinais de configuração poderão necessitar de ser adicionadas):
...
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
}
}
}
...
Então execute o comando cd android && ./gradlew assembleRelease
,
Para o Windows 'cd android' e, em seguida, execute gradlew assembleRelease
comando , e encontrar o seu assinado apk sob android/app/build/outputs/apk/app-release.apk
Você terá que criar uma chave para assinar o apk. Use abaixo para criar a sua chave:
keytool -genkey -v -keystore my-app-key.keystore -alias my-app-alias -keyalg RSA -keysize 2048 -validity 10000
Usar uma senha quando for solicitado
Uma vez gerada a chave, use-a para gerar a compilação instalável:
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/
Gerar a compilação usando o gradle
cd android && ./gradlew assembleRelease
Envia a APK para o teu telemóvel. A opção -r
irá substituir a aplicação existente (se existir)
adb install -r ./app/build/outputs/apk/app-release-unsigned.apk
Uma descrição mais detalhada é mencionada aqui: https://facebook.github.io/react-native/docs/signed-apk-android.html
Actualizar: com base nos comentários de @shashuec e @Fallen
Se tiver um erro
ENOENT: no such file or directory, open ' android/app/src/main/assets / index.androide.pacote '
Executar mkdir android/app/src/main / assets
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/
Em seguida, Use android studio para abrir a pasta 'android' em você reate native app directory, ele vai pedir para atualizar gradle e algumas outras coisas. vá para build - > gerar APK assinado e siga as instruções a partir daí. É mesmo em frente.
Execute este comando:
react-native run-android --variant=release
Note que
--variant=release
só está disponível se configurar a assinatura comcd android && ./gradlew assembleRelease
.
Se conseguires Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
.
Eu tentei usar o método de @Aditya de gerar um arquivo APK não assinado e instalá-lo, mas quando fui instalá-lo no meu tablet Android, ele me deu um erro de Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
.
a propósito, o nosso aplicativo é um funcionamento aplicativo Android que já existe na Play Store e estamos apenas adicionando Reagir nativo a ele em pedaços do tamanho da mordida, porque é incrível.
Para resumir, eis os meus passos:1) Gerar o pacote nativo de reacção:
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) Gerar um ficheiro APK assinado do Android Studio.
3) Instalar o ficheiro APK assinado no dispositivo USB:
adb -d install -r <path_to_signed_apk>
a bandeira -d
diz apenas a adb
para instalar na usb dispositivo ligado, no caso de você ter um emulador funcionando também. Se quiser instalar num emulador, largue a bandeira -d
.
4) lucro!
Para Reat Native 0, 49 and over
Deverá ir à directoria do projecto no terminal e executar esse comando
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
Se inferior a 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
Em seguida, Use android studio para abrir a pasta 'android' em você reate native app directory, ele vai pedir para atualizar gradle e algumas outras coisas. vá para build - > gerar APK assinado e siga as instruções a partir daí. Está bem.
$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
Coloca a minha chave de lançamento.ficheiro keystore sob o directório android / app na sua pasta do projecto.
Edite o ficheiro android/app / build.agrupar na sua pasta de projecto e adicionar a configuração de assinatura,
android {
....
signingConfigs {
release {
storeFile file('my-release-key.keystore')
storePassword 'yourpassword'
keyAlias 'my-key-alias'
keyPassword 'yourpassword'
}
}}}
buildTypes {release {signingConfig signingConfigs.release}}
E correr
gradlew assembleRelease
Isto vai dar - te dois ficheiros em android\app\build\outputs\apk
app-release.apk e app-release-sem assinatura.apk
agora instale o aplicativo-release.apk no seu dispositivo android.
Vá ao directório do projecto e execute o comando:
cd android && ./gradlew assembleRelease
Se não tiver uma chave maior do que usar antes do comando, ignorar
A gerar um ficheiro de Chave / Teclado de assinatura Você pode gerar uma chave de assinatura privada usando o keytool. No teclado do Windows deve ser executado de C:\Program ficheiros\Java\jdkx.x. x_ x\bin.
$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
Vais ter um ficheiro como a minha chave de lançamento.keystore
Configurar as variáveis de grelha Colocar a a minha chave de libertação.ficheiro keystore sob o directório android / app na sua pasta do projecto. Edite o ficheiro android / gradle.propriedades e adicionar o seguinte (substituir * * * * * * pela senha correcta do teclado, alias e senha da chave), enableAapt2 set false is workaround, as android gradle version 3.0 problem
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
Depois adicione estes app / buid.gradle (app)
Abaixo da configuração predefinida
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
}
}
E dentro da versão do tipo de Compilação{ }
signingConfig signingConfigs.release
Então ... basta executar este comando no android studio terminal Abaixo dos comandos irá automatizar acima de todas as respostas
Se as janelas
cd android
gradlew assembleRelease
Se linux / mac
$ cd android
$ ./gradlew assembleRelease
Se tiver algum erro remova toda a pasta de compilação e execute o comando
gradlew clean
Mais do que outra vez
gradlew assembleRelease