web-dev-qa-db-fra.com

Comment puis-je générer un apk qui peut fonctionner sans serveur avec react-native?

J'ai construit mon application, je peux l'exécuter sur mon simulateur local (ainsi que sur mon appareil Android au sein du même réseau en modifiant le serveur de débogage).

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 puissent tester l'application.

Je vois qu’il existe une section Utilisation de l’ensemble hors connexion sur iOS dans la documentation. Mais je n'arrivais pas à comprendre comment accomplir la même chose pour Android. Est-ce possible? Si c'est le cas, comment?

UPDATE: Sur la réponse à cette question ( réagir natif Android n'a pas pu charger le bundle JS ) il est dit que le paquet en mode hors connexion peut être téléchargé à partir du serveur de développement. Mais lorsque j'obtiens le kit auprès du serveur de développement, les fichiers image ne peuvent pas être chargés.

156
Gokhan Sari

Suite à la réponse d'Aditya Singh, l'apk généré (non signé) ne serait pas installé sur mon téléphone. Je devais 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

Placez le fichier my-release-key.keystore dans le répertoire Android/app du dossier de votre projet. Editez ensuite le fichier ~/.gradle/gradle.properties et ajoutez le texte suivant (remplacez **** par le mot de passe du magasin de clés, le pseudonyme et le mot de passe correct)

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 trousseau à l'aide des instructions ici au lieu de le stocker en texte brut.

Ensuite, éditez app/build.gradle et assurez-vous que les éléments suivants sont présents (les sections dotées de signatureConfigs devront peut-être être ajoutées à signalisationConfig):

...
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 lancez la commande cd Android && ./gradlew assembleRelease,

Pour Windows , "cd Android", puis exécutez la commande gradlew assembleRelease et trouvez votre signé apk sous Android/app/build/outputs/apk/app-release.apk

136
Pedram

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 lorsque vous y êtes invité

Une fois la clé générée, utilisez-la pour générer la version 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 la construction en utilisant gradle

 cd Android && ./gradlew assembleRelease

Téléchargez le fichier 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 une erreur

ENOENT: aucun fichier ou répertoire de ce type, ouvrez "Android/app/src/main/assets/index.Android.bundle".

lancer mkdir Android/app/src/main/assets

168
Aditya Singh

Exécutez cette commande:

react-native run-Android --variant=release

Notez que --variant=release n'est disponible que si vous avez configuré la signature avec cd Android && ./gradlew assembleRelease.

25
Ahmed Ashraf

Vous devriez simplement utiliser Android studio pour ce processus. C'est simplement plus simple. Mais commencez par exécuter cette commande dans votre répertoire d’application natif:

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/

Ensuite, utilisez Android studio pour ouvrir le dossier "Android" dans le répertoire de votre application native, il vous demandera de mettre à niveau gradle et quelques autres éléments. allez à construire-> Générer un APK signé et suivez les instructions à partir de là. C'est vraiment simple.

25
Mike Axle

pour React Native 0.49 et plus

vous devriez aller dans le répertoire du 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

Ensuite, utilisez Android studio pour ouvrir le dossier "Android" dans le répertoire de votre application native, il vous demandera de mettre à niveau gradle et quelques autres éléments. allez à construire-> Générer un APK signé et suivez les instructions à partir de là. Ça va.

17
Yasin Ugurlu

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 lorsque je suis allé l'installer sur ma tablette Android, cela m'a donné une erreur de Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES].

J'imagine que c'est parce que le fichier APK n'a pas été signé et que la tablette n'en est pas satisfaite. Ainsi, après avoir généré le fichier de bundle natif React _, j'ai pu générer un fichier APK signé, comme d'habitude, via Android Studio.

En passant, notre application est une application Android qui fonctionne déjà et qui existe déjà dans le Play Store et nous ajoutons simplement React qui lui est natif dans bouchées, parce que c'est génial

Donc, pour résumer, voici mes étapes:

1) Génère React Bundle natif:

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érez un fichier APK signé à partir de Android Studio.

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

adb -d install -r <path_to_signed_apk> 

L'indicateur -d indique simplement à adb de l'installer sur le périphérique USB connecté, dans le cas où vous auriez également un émulateur en cours d'exécution. Si vous souhaitez installer sur n'importe quel émulateur, supprimez l'indicateur -d.

4) Bénéfice!

11
Joshua Pinter

J'ai une autre solution: - Générer une clé de signature Vous pouvez générer une clé de signature privée à l'aide de keytool. Sous Windows, keytool doit être exécuté à partir de 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

Placez le fichier my-release-key.keystore dans le répertoire Android/app du dossier de votre projet.

Éditez le fichier Android/app/build.gradle dans votre dossier de projet et ajoutez la configuration 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 sous Android\app\build\sorties\apk app-release.apk et app-release-unsigned.apk maintenant installer app-release.apk sur votre appareil Android.

5
Raman Bhasker

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

cd Android && ./gradlew assembleRelease
5
Sidharth Taneja

Pour réagir aux dernières versions natives pour regrouper le projet

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

4
Phani Sai

Si vous obtenez une erreur impliquant index.Android.js. C'est parce que vous utilisez la nouvelle version native de React (j'utilise 0.55.4). Remplacez simplement "index.Android.js" par "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/
4
Usman Kazmi

Essayez ci-dessous, il va générer un app-debug.apk sur votre dossier racine/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

puis allez dans le dossier Android et lancez

./gradlew assembleDebug

3
bro

Espérons que cela aidera les nouveaux débutants

Doc officiel ici

Si vous ne possédez pas de magasin de clés, utilisez avant la commande, sinon sautez

Génération d'une clé de signature/fichier de clés Vous pouvez générer une clé de signature privée à l'aide de keytool. Sous Windows, keytool doit être exécuté à partir de 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

vous obtiendrez un fichier du type my-release-key.keystore

Configuration des variables de niveau Placez le fichier my-release-key.keystore dans le répertoire Android/app du dossier de votre projet. Modifiez le fichier Android/gradle.properties et ajoutez le texte suivant (remplacez ***** par le mot de passe de magasin de clés correct, alias et mot de passe de clé), enableAapt2 est défini sur false, comme Android 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

puis ajoutez 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 version de type Inside Build {}

 signingConfig signingConfigs.release

puis exécutez simplement cette commande dans Android terminal de studio Les commandes ci-dessous automatiseront toutes les réponses

si fenêtres

cd Android
gradlew assembleRelease

si linux/mac

$ cd Android
$ ./gradlew assembleRelease

si vous avez une erreur, supprimez tout le dossier de construction et exécutez la commande

gradlew clean

que de nouveau

gradlew assembleRelease
1
Abhishek Garg

Utiliser Android studio pour générer un apk signé pour le projet Android de rea est également une bonne option, ouvrez le projet Android de rea dans Android studio et générer une frappe et signé apk.

0
Ahmad Sadiq

Si quelqu'un veut construire sans les clés du magasin, cette commande serait très utile.

# react-native run-Android --variant=release

Une fois la construction terminée, vous pouvez trouver l’apk dans le fichier de version.

0
Akash Golui

La manière de l'interface graphique dans Android Studio

  • Ouvrez la partie Android de l'application React native dans Android Studio (cela signifie simplement que vous ouvrez le dossier Android de votre compte-). projet natif avec Android Studio)
  • Allez dans l'onglet "Construire" en haut
  • Descendez dans "Build Bundle (s)/APK (s)"
  • Puis sélectionnez "Construire APK (s)"
  • Cela vous guidera tout au long du processus de localisation de vos clés pour signer l'APK ou de création de vos clés si vous ne les avez pas déjà, ce qui est très simple. Si vous ne faites que vous entraîner, vous pouvez générer ces clés et les enregistrer sur votre bureau.
  • Une fois ce processus terminé et si la construction a réussi, il y aura une fenêtre contextuelle ci-dessous dans Android Studio. Cliquez sur le lien en son sein qui dit "localiser" (l'APK)
  • Cela vous mènera au fichier apk, déplacez-le sur votre appareil Android. Accédez ensuite à ce fichier sur le périphérique Android et installez-le.
0
David Hudman

Reportez-vous à la documentation officielle de react-native sur Generating Signed APK

APK générant une signature signée

0
Codemaker