wake-up-neo.com

Wie kann ich eine apk generieren, die ohne server mit react-native laufen kann?

Ich habe meine App erstellt und kann sie auf meinem lokalen Simulator (und auch auf meinem Android Gerät innerhalb desselben Netzwerks durch Ändern des Debug-Servers) ausführen.

Ich möchte jedoch eine Apk erstellen, die ich an jemanden ohne Zugriff auf den Entwicklungsserver senden kann, und ich möchte, dass dieser die Anwendung testen kann.

Ich sehe, dass es einen Abschnitt Verwenden des Offline-Bundles unter iOS in der Dokumentation gibt. Aber ich konnte nicht herausfinden, wie ich dasselbe für Android erreichen kann. Ist das möglich? Wenn das so ist, wie?

UPDATE: Bei der Beantwortung dieser Frage ( Native reagieren Android JS-Bundle konnte nicht geladen werden ) Das Offline-Bundle kann vom Entwicklungsserver heruntergeladen werden. Wenn ich das Bundle jedoch vom Entwicklungsserver erhalte, können die Bilddateien nicht geladen werden.

156
Gokhan Sari

Nach der Antwort von Aditya Singh konnte das generierte (nicht signierte) Apk nicht auf meinem Telefon installiert werden. Ich musste eine signierte apk mit den anweisungen erstellen hier .

Folgendes hat für mich funktioniert:

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

Platzieren Sie die Datei my-release-key.keystore im Verzeichnis Android/app in Ihrem Projektordner. Bearbeiten Sie dann die Datei ~/.gradle/gradle.properties und fügen Sie Folgendes hinzu (ersetzen Sie **** durch das richtige Keystore-Passwort, Alias ​​und Schlüsselpasswort)

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

Wenn Sie MacOS verwenden, können Sie Ihr Kennwort mithilfe der Anweisungen hier im Schlüsselbund speichern, anstatt es im Klartext zu speichern.

Bearbeiten Sie dann app/build.gradle und stellen Sie sicher, dass Folgendes vorhanden ist (die Abschnitte mit signingConfigs signingConfig müssen möglicherweise hinzugefügt werden):

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

Dann den Befehl cd Android && ./gradlew assembleRelease ausführen,

Für Windows 'cd Android' und führen Sie dann den Befehl gradlew assembleRelease aus und suchen Sie Ihren signierten apk unter Android/app/build/outputs/apk/app-release.apk

136
Pedram

Du musst einen Schlüssel erstellen, um das Apk zu signieren. Verwenden Sie unten, um Ihren Schlüssel zu erstellen:

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

Verwenden Sie ein Passwort, wenn Sie dazu aufgefordert werden

Sobald der Schlüssel generiert ist, verwenden Sie ihn, um den installierbaren Build zu generieren:

 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/

Generieren Sie den Build mit gradle

 cd Android && ./gradlew assembleRelease

Laden Sie die APK auf Ihr Handy hoch. Das -r -Flag ersetzt die vorhandene App (falls vorhanden)

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

Eine detailliertere Beschreibung finden Sie hier: https://facebook.github.io/react-native/docs/signed-apk-Android.html

UPDATE: Basierend auf Kommentaren von @shashuec und @Fallen

wenn du eine Fehlermeldung bekommst

ENOENT: Keine solche Datei oder Verzeichnis, öffne 'Android/app/src/main/assets/index.Android.bundle'

führen Sie mkdir Android/app/src/main/assets aus

168
Aditya Singh

Führen Sie diesen Befehl aus:

react-native run-Android --variant=release

Beachten Sie, dass --variant=release nur verfügbar ist, wenn Sie das Signieren mit cd Android && ./gradlew assembleRelease eingerichtet haben.

25
Ahmed Ashraf

Verwenden Sie für diesen Vorgang einfach Android studio. Es ist einfach einfacher. Führen Sie jedoch zuerst diesen Befehl in Ihrem reaktiven nativen App-Verzeichnis aus:

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/

Verwenden Sie dann Android Studio, um den Ordner "Android" in Ihrem nativen App-Verzeichnis zu öffnen. Sie werden aufgefordert, gradle und einige andere Dinge zu aktualisieren. Gehe zu build-> Generate signed APK und folge den Anweisungen von dort. Es ist wirklich einfach.

25
Mike Axle

für React Native 0.49 und höher

sie sollten zum Projektverzeichnis auf dem Terminal gehen und diesen Befehl ausführen

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

wenn unter 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

Verwenden Sie dann Android Studio, um den Ordner "Android" in Ihrem nativen App-Verzeichnis zu öffnen. Sie werden aufgefordert, gradle und einige andere Dinge zu aktualisieren. Gehe zu build-> Generate signed APK und folge den Anweisungen von dort. Das okey.

17
Yasin Ugurlu

Wenn Sie Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES] bekommen.

Ich habe versucht, mit der Methode von @ Aditya eine nicht signierte APK-Datei zu generieren und diese zu installieren. Als ich sie jedoch auf meinem Android Tablet installierte, gab es den Fehler Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES].

Ich stelle mir das vor, weil die APK-Datei nicht signiert war und das Tablet damit nicht zufrieden war. Nach dem Generieren der React Native-Bundle-Datei konnte ich über Android Studio wie gewohnt eine signierte APK-Datei generieren.

Unsere App ist übrigens eine voll funktionsfähige Android App, die bereits im Play Store vorhanden ist, und wir fügen ihr lediglich React Native hinzu mundgerechte Stücke, weil es großartig ist.

Um es zusammenzufassen, hier sind meine Schritte:

1) React Natives Bundle generieren:

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) Generiere eine signierte APK-Datei aus Android Studio.

) Installiere signierte APK-Datei auf ein USB-Gerät:

adb -d install -r <path_to_signed_apk> 

Das -d -Flag weist adb an, auf dem angeschlossenen USB-Gerät zu installieren, falls auch ein Emulator ausgeführt wird. Wenn Sie auf einem beliebigen Emulator installieren möchten, löschen Sie das Flag -d.

4) Gewinn!

11
Joshua Pinter

Ich habe eine andere Lösung: - Erstellen eines Signaturschlüssels Mit keytool können Sie einen privaten Signaturschlüssel erstellen. Unter Windows muss keytool unter C:\Programme\Java\jdkx.x.x_x\bin ausgeführt werden.

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

Platzieren Sie die Datei my-release-key.keystore im Verzeichnis Android/app in Ihrem Projektordner.

Bearbeiten Sie die Datei Android/app/build.gradle in Ihrem Projektordner und fügen Sie die Signaturkonfiguration hinzu.

Android {
....
signingConfigs { 
  release { 

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

  } 
}}}


buildTypes {release {signingConfig signingConfigs.release}}

und Renn

gradlew assembleRelease

Auf diese Weise erhalten Sie zwei Dateien unter Android\app\build\output\apk app-release.apk und app-release-unsigned.apk. Installieren Sie jetzt app-release.apk auf Ihrem Android Gerät.

5
Raman Bhasker

Gehen Sie in das Projektverzeichnis und führen Sie den Befehl aus:

cd Android && ./gradlew assembleRelease
5
Sidharth Taneja

Für neueste native Versionen reagieren, um das Projekt zu bündeln

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

Wenn Sie einen Fehler mit index.Android.js erhalten. Dies liegt daran, dass Sie die neue React-native Version verwenden (ich verwende 0.55.4). Ersetzen Sie einfach "index.Android.js" durch "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

Versuchen Sie es unten, es wird eine app-debug.apk in Ihrem root/Android/app/build/output/apk/debug-Ordner erzeugen

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

gehen Sie dann zum Ordner Android und führen Sie ihn aus

./gradlew assembleDebug

3
bro

Hoffentlich hilft es neuen Anfängern

Offizielles Dokument hier

Wenn Sie keinen Keystore haben, den Sie vor dem Befehl verwenden, überspringen Sie den Vorgang

Generieren eines Signaturschlüssels/einer Keystore-Datei Mit keytool können Sie einen privaten Signaturschlüssel generieren. Unter Windows muss keytool unter C:\Programme\Java\jdkx.x.x_x\bin ausgeführt werden.

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

sie erhalten eine Datei wie my-release-key.keystore

Gradle-Variablen einrichten Legen Sie die Datei my-release-key.keystore im Verzeichnis Android/app in Ihrem Projektordner ab. Bearbeiten Sie die Datei Android/gradle.properties und fügen Sie Folgendes hinzu (ersetzen Sie ***** durch das richtige Keystore-Passwort, Alias ​​und Schlüsselpasswort). EnableAapt2 set false ist eine Problemumgehung, da 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

dann füge diese App hinzu/buid.gradle (app)

unterhalb der Standardkonfiguration

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

Release vom Typ und Inside Build {}

 signingConfig signingConfigs.release

dann einfach diesen Befehl in Android Studio Terminal ausführen Unter Befehle werden vor allem Antworten automatisiert

wenn Windows

cd Android
gradlew assembleRelease

wenn Linux/Mac

$ cd Android
$ ./gradlew assembleRelease

wenn Sie einen Fehler haben, löschen Sie den gesamten Build-Ordner und führen Sie den Befehl aus

gradlew clean

als nochmal

gradlew assembleRelease
1
Abhishek Garg

Die Verwendung von Android Studio zum Generieren signierter APKs für das Android Projekt von react ist ebenfalls eine gute und einfache Option. Öffnen Sie das Android Projekt von react in Android Studio und generiere Tastendruck und signierte apk.

0
Ahmad Sadiq

Wenn jemand ohne Playstore-Schlüssel bauen möchte, wäre dieser Befehl sehr hilfreich.

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

Nach Abschluss des Builds finden Sie das apk in der Release-Build-Datei.

0
Akash Golui

Die GUI-Methode in Android Studio

  • Lassen Sie den Android App-Teil der React nativen App in Android Studio öffnen (dies bedeutet nur, dass Sie den Android Ordner Ihrer reaktiven App öffnen). natives Projekt mit Android Studio)
  • Gehen Sie oben auf die Registerkarte "Build"
  • Gehe runter zu "Build Bundle (s)/APK (s)"
  • Dann wähle "Build APK (s)"
  • Dies führt Sie durch den Prozess des Auffindens Ihrer Schlüssel zum Signieren der APK oder des Erstellens Ihrer Schlüssel, wenn Sie diese noch nicht haben, was alles sehr einfach ist. Wenn Sie nur üben, können Sie diese Schlüssel generieren und auf Ihrem Desktop speichern.
  • Sobald dieser Vorgang abgeschlossen ist und der Build erfolgreich war, wird unten in Android Studio ein Popup angezeigt. Klicken Sie auf den darin enthaltenen Link mit der Aufschrift "Lokalisieren" (die APK).
  • Damit gelangen Sie zur apk-Datei, die Sie auf Ihr Android Gerät übertragen. Navigieren Sie dann zu dieser Datei auf dem Android Gerät und installieren Sie sie.
0
David Hudman

Informationen zum Generieren signierter APK finden Sie in der offiziellen Dokumentation der reaktionsfähigen Benutzer

React-Native Generating Signed APK

0
Codemaker