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.

Author: Gokhan Sari, 2016-03-11

9 answers

Após a resposta de Aditya Singh, o apk gerado (não assinado) não instalaria no meu telefone. Eu tive que gerar um apk assinado usando as instruções aqui.

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

 79
Author: Pedram, 2018-01-06 17:19:51

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

 143
Author: Aditya Singh, 2018-08-29 21:44:19
Devias usar o android studio para este processo. É mais simples. Mas primeiro execute este comando na sua pasta de aplicações nativas react:
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.

 23
Author: mike axle, 2017-02-14 16:57:43

Execute este comando:

react-native run-android --variant=release

Note que --variant=release só está disponível se configurar a assinatura com cd android && ./gradlew assembleRelease.

 23
Author: Ahmed Ashraf, 2017-06-15 21:29:27

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].

Imagino que seja porque o ficheiro APK não estava assinado e o tablet não estava satisfeito com isto. Então, depois de gerar o arquivo Reat Native bundle eu fui capaz de gerar um arquivo APK assinado, como normal, através do Android Studio.

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.bu‌​ndle --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!

 10
Author: Joshua Pinter, 2017-11-17 03:32:27

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.

 7
Author: Yasin Ugurlu, 2018-09-17 08:11:35
Tenho outra solução.:- A gerar uma chave 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
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.
 5
Author: Raman Bhasker, 2017-08-09 05:38:25

Vá ao directório do projecto e execute o comando:

cd android && ./gradlew assembleRelease
 2
Author: Sidharth Taneja, 2017-10-23 07:22:54
Espero que ajude novos principiantes. Aqui.

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
 0
Author: Abhishek Garg, 2018-09-08 16:00:25