Ich habe meine App erstellt und kann sie auf meinem lokalen Emulator (und auch auf meinem Android-Gerät im selben Netzwerk 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 er die Anwendung testen kann.
Ich sehe, dass es in der Dokumentation einen Abschnitt zum Verwenden des Offline-Bundles unter iOS gibt. Aber ich konnte nicht herausfinden, wie ich das gleiche für Android erreichen kann. Ist das möglich? Wenn das so ist, wie?
UPDATE: Bei der Beantwortung dieser Frage ( Android konnte das JS-Bundle nicht laden ) heißt es, dass das Offline-Bundle vom Entwicklungsserver heruntergeladen werden kann. Wenn ich das Bundle vom Entwicklungsserver erhalte, können die Bilddateien nicht geladen werden.
quelle
Antworten:
Nach der Antwort von Aditya Singh wurde die generierte (nicht signierte) apk nicht auf meinem Telefon installiert. Ich musste eine signierte apk mit den anweisungen hier generieren .
Folgendes hat bei mir funktioniert:
Legen Sie die
my-release-key.keystore
Datei unter demandroid/app
Verzeichnis in Ihrem Projektordner ab. Bearbeiten Sie dann die Datei~/.gradle/gradle.properties
und fügen Sie Folgendes hinzu (ersetzen Sie **** durch das richtige Keystore-Passwort, Alias und Schlüssel-Passwort).Wenn Sie MacOS verwenden, können Sie Ihr Kennwort anhand 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 signierenConfigs Signaturkonfiguration müssen möglicherweise hinzugefügt werden):
Dann führen Sie den Befehl
cd android && ./gradlew assembleRelease
,Für Windows 'cd android' und dann
gradlew assembleRelease
Befehl ausführen , und finden Sie Ihre signierte apk unterandroid/app/build/outputs/apk/app-release.apk
quelle
Sie müssen einen Schlüssel erstellen, um die apk zu signieren. Verwenden Sie unten, um Ihren Schlüssel zu erstellen:
Verwenden Sie ein Passwort, wenn Sie dazu aufgefordert werden
Sobald der Schlüssel generiert wurde, generieren Sie damit den installierbaren Build:
Generieren Sie den Build mit gradle
Laden Sie die APK auf Ihr Telefon hoch. Das
-r
Flag ersetzt die vorhandene App (falls vorhanden).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 Sie Fehler erhalten
Führen Sie mkdir android / app / src / main / assets aus
quelle
react-native bundle
Teil komplett weggelassen wurde . Danke für deine Antwort!gradlew.bat assembleRelease
auch damit.Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
. wenn ich versuche die apk zu installieren.ENOENT: no such file or directory, open 'android/app/src/main/assets/index.android.bundle'
Laufmkdir android/app/src/main/assets
Sie sollten nur Android Studio für diesen Prozess verwenden. Es ist einfach einfacher. Führen Sie diesen Befehl jedoch zuerst in Ihrem nativen App-Verzeichnis aus:
Für neuere Versionen von React-Native (z. B. React Native 0.49.0 usw.)
Für ältere Versionen von React-Native (0.49.0 und niedriger)
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. Gehen Sie zu build-> Generate signed APK und folgen Sie den Anweisungen von dort. Es ist wirklich einfach.
quelle
Führen Sie diesen Befehl aus:
quelle
cd android && ./gradlew installRelease
diesen Fehler zu bekommenTask 'assembleRelease.' not found in root project 'project'. Some candidates are: 'assembleRelease'.
für React Native 0.49 und höher
Sie sollten in das Projektverzeichnis auf dem Terminal gehen und diesen Befehl ausführen
wenn unter 0,49
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. Gehen Sie zu build-> Generate signed APK und folgen Sie den Anweisungen von dort. Das okey.
quelle
Wenn du bekommst
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
.Ich habe versucht, die Methode von @ Aditya zu verwenden, um eine nicht signierte APK-Datei zu generieren und diese zu installieren. Als ich sie jedoch auf meinem Android-Tablet installierte, gab es einen Fehler von
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. Nachdem ich die React Native-Bundle-Datei generiert hatte, konnte ich wie gewohnt eine signierte APK-Datei über Android Studio generieren.
Übrigens, unsere App ist eine voll funktionsfähige Android-App, die es bereits im Play Store gibt, und wir fügen React Native nur in mundgerechten Teilen hinzu, weil sie fantastisch ist.
Zusammenfassend waren hier meine Schritte:
1) React Native-Bundle generieren:
2) Generieren Sie eine signierte APK-Datei aus Android Studio.
3) Installieren Sie die signierte APK-Datei auf einem USB-Gerät:
Das
-d
Flag weist nur an, dassadb
es auf dem angeschlossenen USB-Gerät installiert werden soll, falls auch ein Emulator ausgeführt wird. Wenn Sie auf einem beliebigen Emulator installieren möchten, lassen Sie das-d
Flag fallen.4) Gewinn!
quelle
Versuchen Sie es unten, es wird eine app-debug.apk in Ihrem root / android / app / build / output / apk / debug Ordner generiert
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
Dann gehe zum Android-Ordner und starte
./gradlew assembleDebug
quelle
Wenn jemand ohne Playstore-Schlüssel bauen möchte, ist dieser Befehl sehr hilfreich.
# react-native run-android --variant=release
Nach Abschluss des Builds finden Sie die apk in der Release-Build-Datei.
quelle
Gehen Sie zum Projektverzeichnis und führen Sie den folgenden Befehl aus:
quelle
Wenn Sie eine Fehlermeldung 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".
quelle
Ich habe eine andere Lösung: - Generieren eines Signaturschlüssels Mit keytool können Sie einen privaten Signaturschlüssel generieren. Unter Windows muss das Keytool unter C: \ Programme \ Java \ jdkx.x.x_x \ bin ausgeführt werden.
Legen Sie die Datei my-release-key.keystore im Verzeichnis android / app in Ihrem Projektordner ab.
Bearbeiten Sie die Datei android / app / build.gradle in Ihrem Projektordner und fügen Sie die Signaturkonfiguration hinzu.
und Renn
Dadurch erhalten Sie zwei Dateien unter android \ app \ build \ output \ apk app-release.apk und app-release-unsigned.apk. Installieren Sie jetzt die app-release.apk auf Ihrem Android-Gerät.
quelle
Hoffentlich hilft es neuen Anfängern
Offizielles Dokument hier
Wenn Sie keinen Keystore haben, verwenden Sie ihn vor dem Befehl
Generieren eines Signaturschlüssels / einer Keystore-Datei Mit keytool können Sie einen privaten Signaturschlüssel generieren. Unter Windows muss das Keytool unter C: \ Programme \ Java \ jdkx.x.x_x \ bin ausgeführt werden.
Sie erhalten eine Datei wie my-release-key.keystore
Einrichten von Gradle-Variablen Legen Sie die Datei my-release-key.keystore im Verzeichnis android / app in Ihrem Projektordner ab. Bearbeiten Sie die Datei android / gradle.properties und die folgenden hinzufügen (ersetzen ***** mit den richtigen Kennwort für Schlüsselspeicher, alias und Key - Passwort), ist enableAapt2 Satz falsches Problem zu umgehen, als android gradle Version 3.0 Problem
dann füge diese app / buid.gradle (app) hinzu
unter der Standardkonfiguration
und Inside Build Typ Release {}
Führen Sie diesen Befehl dann einfach im Android Studio Terminal aus. Die folgenden Befehle automatisieren vor allem die Antworten
wenn Windows
wenn Linux / Mac
Wenn Sie eine Fehlermeldung erhalten, löschen Sie alle Build-Ordner und führen Sie den Befehl aus
als wieder
quelle
gradle clean
... Ich habe eine Weile damit zu kämpfen, diese Build-Fehler zu bekommen, vielen Dank für diese Antwort !!Für die neuesten reagieren native Versionen, 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
quelle
Die GUI-Methode in Android Studio
quelle
Die Verwendung von Android Studio zum Generieren von signierten Apk 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 generieren Sie Tastenanschläge und signierte Apk.
quelle
Weitere Informationen finden Sie in der offiziellen Dokumentation zum Generieren signierter APK
React-Native Generating Signed APK
quelle