Comment puis-je générer un apk qui peut fonctionner sans serveur avec réagissent-natif?

j'ai construit mon application, je peux l'exécuter sur mon simulateur local (et aussi sur mon appareil android au sein du même réseau en changeant debug server).

cependant, je veux construire un apk que je peux envoyer à quelqu'un sans accès au serveur de développement et je veux qu'ils soient en mesure de tester l'application.

je vois qu'il y a une section utilisant le paquet hors ligne dans la section iOS de la documentation. Mais je ne pouvais pas trouver comment faire la même chose pour android. Être - ce possible? Si oui, comment?

mise à JOUR: Sur la réponse à cette question ( réagir natif android échec du chargement de JS bundle ), il est dit que hors ligne bundle peut être téléchargé à partir du serveur de développement. Mais quand j'obtiens le paquet du serveur de développement les fichiers image ne peuvent pas être chargés.

117
demandé sur Gokhan Sari 2016-03-11 11:02:10

9 réponses

suite à la réponse D'Aditya Singh l'apk générée (non signée) ne s'installerait pas sur mon téléphone. J'ai dû générer un apk signé en utilisant les instructions ici .

ce qui suit a fonctionné pour moi:

$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

placer le fichier my-release-key.keystore sous le android/app répertoire dans votre dossier de projet. Puis éditer le fichier ~/.gradle/gradle.properties et ajouter ce qui suit (remplacer **** avec le bon fichier de clés le mot de passe, pseudo et mot de passe de clé)

MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=****
MYAPP_RELEASE_KEY_PASSWORD=****

si vous utilisez MacOS, vous pouvez stocker votre mot de passe dans le porte-clés en utilisant les instructions ici au lieu de le stocker en clair.

puis éditer app/build.grader et s'assurer que les éléments suivants sont présents (les sections avec signingconfig signingConfig peuvent devoir être ajoutées):

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

puis exécutez la commande cd android && ./gradlew assembleRelease ,

Pour Windows 'CD android' et ensuite exécuter gradlew assembleRelease commande , et trouver votre signé apk sous android/app/build/outputs/apk/app-release.apk

79
répondu Pedram 2018-01-06 17:19:51

vous devrez créer une clé pour signer l'apk. Utilisez ci - dessous pour créer votre clé:

 keytool -genkey -v -keystore my-app-key.keystore -alias my-app-alias -keyalg RSA -keysize 2048 -validity 10000

utilisez un mot de passe lorsqu'on vous le demande

une fois la clé générée, utilisez-la pour générer le build installable:

 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/

Générer le construire à l'aide de gradle

 cd android && ./gradlew assembleRelease

téléchargez L'APK sur votre téléphone. Le drapeau -r remplacera l'application existante (si elle existe)

adb install -r ./app/build/outputs/apk/app-release-unsigned.apk

une description plus détaillée est mentionnée ici: https://facebook.github.io/react-native/docs/signed-apk-android.html

UPDATE : basé sur les commentaires de @shashuec et @Fallen

si vous obtenez l'erreur

ENOENT: aucun fichier ou répertoire, ouvrez android/app/src/main/assets/index.Android.paquet

exécuter mkdir android/app/src/main/actifs

143
répondu Aditya Singh 2018-08-29 21:44:19

vous devez juste utiliser android studio pour ce processus. C'est juste plus simple. Mais Lancez d'abord cette commande dans votre répertoire d'application natif 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/

puis utiliser android studio pour ouvrir le dossier "android" dans VOUS réagissez répertoire app native, il va demander de mettre à niveau gradle et d'autres choses. allez construire-> Générer signé APK et suivez les instructions à partir de là. C'est vraiment simple.

23
répondu mike axle 2017-02-14 16:57:43

exécuter cette commande:

react-native run-android --variant=release

notez que --variant=release n'est disponible que si vous avez mis en place la signature avec cd android && ./gradlew assembleRelease .

23
répondu Ahmed Ashraf 2017-06-15 21:29:27

si vous obtenez Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES] .

j'ai essayé d'utiliser la méthode de @Aditya pour générer un fichier APK non signé et l'installer, mais quand je suis allé l'installer sur ma tablette Android, il m'a donné une erreur de Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES] .

j'imagine que c'est parce que le fichier APK n'était pas signé et que la tablette n'était pas contente de cela. Ainsi, après avoir généré le fichier de paquet natif React, j'ai pu générer un fichier APK signé, comme d'habitude, via Android Studio.

soit dit en passant, notre application est une application Android entièrement fonctionnelle qui existe déjà dans le magasin de jeux et nous sommes en train d'ajouter réagir natif à elle en morceaux de taille, parce que c'est génial.

donc pour résumer, voici mes étapes:

1) Générer Réagir Native bundle:

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) générer un fichier APK signé à partir D'Android Studio.

3) Installer le fichier APK signé sur le périphérique USB:

adb -d install -r <path_to_signed_apk> 

le drapeau -d indique juste adb à installer sur le périphérique usb attaché, dans le cas où vous avez un émulateur fonctionnant aussi bien. Si vous voulez installer sur n'importe quel émulateur, laissez tomber le drapeau -d .

4) bénéfice!

10
répondu Joshua Pinter 2017-11-17 03:32:27

pour Réagir Natif de 0,49 et plus

vous devriez aller dans le répertoire de projet sur le terminal et exécuter cette commande

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

si moins de 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

puis utiliser android studio pour ouvrir le dossier "android" dans VOUS réagissez répertoire app native, il va demander de mettre à niveau gradle et d'autres choses. allez construire-> Générer signé APK et suivez les instructions à partir de là. Que okey.

7
répondu Yasin Ugurlu 2018-09-17 08:11:35

j'ai une autre solution:- Création d'une clé de signature Vous pouvez générer une clé de signature privée en utilisant keytool. Sur Windows keytool doit être exécuté à partir de C:\Program fichiers\Java\jdkx.x.x_x\bin.

$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

placez la my-release-key.le fichier keystore sous le répertoire android/app dans votre dossier de projet.

éditez le fichier android/app/build.graver dans votre dossier de projet et ajouter la config de signature,

android {
....
signingConfigs { 
  release { 

      storeFile file('my-release-key.keystore') 
      storePassword 'yourpassword' 
      keyAlias 'my-key-alias' 
      keyPassword 'yourpassword' 

  } 
}}}


buildTypes {release {signingConfig signingConfigs.release}}

et courir

gradlew assembleRelease

Cela vous donnera deux fichiers android\app\build\sorties\apk app-libération.apk et app-release-non signé.apk maintenant, installez l'Application-release.apk dans votre appareil android.

5
répondu Raman Bhasker 2017-08-09 05:38:25

allez dans le répertoire du projet et lancez la commande:

cd android && ./gradlew assembleRelease
2
répondu Sidharth Taneja 2017-10-23 07:22:54

espérons qu'il aidera les nouveaux débutants

Doc officiel ici

Si vous n'avez pas de fichier de clés que de l'utiliser avant la commande else skip

Génération d'une clé de signature du / fichier de magasin de clés Vous pouvez générer une clé de signature privée en utilisant keytool. Sur Windows keytool doit être exécuté à partir de C:\Program fichiers\Java\jdkx.x.x_x\bin.

$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

, vous obtiendrez un fichier comme ma libération-clé.keystore

Configuration de gradle variables Placez le mon-release-clé.le fichier keystore sous le répertoire android/app dans votre dossier de projet. Modifier le fichier android / gradle.propriétés et ajouter ce qui suit (remplacer ***** avec le mot de passe keystore correct, alias et mot de passe clé), enableAapt2 mettre false est une solution de contournement, comme android Grad version 3.0 problème

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

ajouter ensuite ces app / buid.gradle (app)

en dessous de la configuration par défaut

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
            }
        }

et à l'Intérieur type de Build version { }

 signingConfig signingConfigs.release

puis il suffit d'exécuter cette commande dans android studio terminal Les commandes ci-dessous vont automatiser toutes les réponses

si windows

cd android
gradlew assembleRelease

si linux / mac

$ cd android
$ ./gradlew assembleRelease

si vous avez une erreur, supprimez tous les dossiers de compilation et lancez la commande

gradlew clean

que de nouveau

gradlew assembleRelease
0
répondu Abhishek Garg 2018-09-08 16:00:25