Ponieważ jestem nowy w React-Native, więc jeśli coś jest nie tak w krokach, daj mi znać.
Zbudowałem natywną aplikację na Androida, używając polecenia zgodnie z dokumentacją
Natywny Android
podczas pracy na urządzeniu użyto następującego polecenia
reaguj natywnym run-android
co daje mi wyjście 2 plików apk w moim folderze projektów / android / app / build / output / apk
teraz, kiedy używam do zainstalowania tego apk po instalacji, prosi on o połączenie serwera programistycznego w celu dołączenia JS. Ale moim wymaganiem jest to, aby użytkownik nie musiał walczyć z serwerem programistycznym, tylko musi zainstalować apk i wszystko jest gotowe.
Przeszedłem przez kilka pytań dotyczących przepływu stosów, ale nie były pomocne przy tworzeniu niepodpisanego apk, który nie wymaga serwera programistycznego.
Czy możecie mi pomóc znaleźć sposób, w jaki można zbudować i niepodpisany apk w reagowaniu natywnym?
źródło
Odpowiedzi:
Musisz ręcznie utworzyć pakiet dla kompilacji debugowania.
Kompilacja debugowania pakietu:
Następnie, aby zbudować pakiet APK po pakowaniu:
PS Innym podejściem może być modyfikacja skryptów gradle.
źródło
--assets-dest ./android/app/src/main/res/
Wykonaj te kroki.
Dołącz swój js:
jeśli masz index.android.js w katalogu głównym projektu, uruchom
jeśli masz plik index.js w katalogu głównym projektu, uruchom
Utwórz plik APK do debugowania:
Następnie możesz znaleźć swój apk tutaj:
źródło
react-native bundle --dev false --platform android --entry-file index.js --bundle-output ./android/app/build/intermediates/assets/debug/index.android.bundle --assets-dest ./android/app/build/intermediates/res/merged/debug
Najnowsza aktualizacja
W głównym katalogu projektu
Upewnij się, że masz już katalog android / app / src / main / asset / , jeśli nie, utwórz katalog, po tym utwórz nowy plik i zapisz jako
index.android.bundle
i umieść plik w tym android / app / src / main / asset / index.android .pakietNastępnie uruchom to
Następnie można uzyskać
apk
w app / Build / wyjść / apk / debug / app-debug.apkźródło
index.android.bundle
jest naprawdę ważny, aby nie używać serwera programistycznego na hoście.Ze mną w katalogu projektu uruchom następujące polecenia.
Dla Reaguj natywnej starej wersji (zobaczysz index.android.js w katalogu głównym):
Dla nowej wersji reaktywnej (po prostu zobacz index.js w katalogu głównym):
Plik APK zostanie wygenerowany pod adresem:
źródło
$ mkdir -p android/app/src/main/assets && rm -rf android/app/build && 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 && cd android && ./gradlew assembleDebug
--entry-file index.android.js
w--entry-file index.js
przypadku nowszych projektów, któreindex.js
zamiastindex.android.js
w katalogu głównym ich projektów , należy je zastąpić .Po wykonaniu pierwszej odpowiedzi możesz uruchomić aplikację za pomocą
Twoja aplikacja będzie działać bez programu pakującego
źródło
Od respons-native 0.57 żadna z wcześniej podanych odpowiedzi nie będzie już działać, ponieważ katalogi, w których gradle spodziewa się znaleźć paczkę i zasoby uległy zmianie.
Prosty sposób bez pakietu reagującego
Najprostszym sposobem zbudowania kompilacji do debugowania jest
react-native bundle
całkowite bez użycia polecenia, ale po prostu zmodyfikowanieapp/build.gradle
pliku.Wewnątrz
project.ext.react
mapy wapp/build.gradle
pliku dodajbundleInDebug: true
wpis. Jeśli chcesz, aby nie była to--dev
kompilacja (bez ostrzeżeń i zminimalizowanego pakietu), powinieneś również dodaćdevDisabledInDebug: true
wpis do tej samej mapy.Z pakietem React-Native
Jeśli z jakiegoś powodu potrzebujesz lub chcesz użyć
react-native bundle
polecenia, aby utworzyć pakiet, a następnie,./gradlew assembleDebug
aby utworzyć APK z pakietem i zasobami, musisz upewnić się, że pakiet i zasoby są umieszczone we właściwych ścieżkach, gdzie gradle może znajdź je.W przypadku responsywności 0.57 te ścieżki są
android/app/build/generated/assets/react/debug/index.android.js
dla pakietui
android/app/build/generated/res/react/debug
majątku. Tak więc pełne polecenia do ręcznego łączenia i budowania pakietu APK z pakietem i zasobami to:react-native bundle --dev false --platform android --entry-file index.js --bundle-output ./android/app/build/generated/assets/react/debug/index.android.bundle --assets-dest ./android/app/build/res/react/debug
i wtedy
./gradlew assembleDebug
Pakiet i ścieżka zasobów
Zwróć uwagę, że ścieżki, w których Gradle szuka pakietu i zasobów, mogą ulec zmianie. Aby dowiedzieć się, gdzie są te ścieżki, spójrz na
react.gradle
plik w swoimnode_modules/react-native
katalogu. Wiersze zaczynające się oddef jsBundleDir =
idef resourcesDir =
określają katalogi, w których gradle szuka odpowiednio pakietu i zasobów.źródło
Dla użytkownika systemu Windows, jeśli wszystkie kroki zostały wykonane prawidłowo: https://facebook.github.io/react-native/docs/signed-apk-android.html
Musisz tylko uruchomić:
gradlew assembleRelease
Twój plik będzie:
Lokalizacja:
E:\YourProjectName\android\app\build\outputs\apk
źródło
Jestem na reagowaniu natywnym 0.55.4, w zasadzie musiałem spakować ręcznie:
Następnie podłącz urządzenie przez USB, włącz debugowanie USB. Sprawdź podłączone urządzenie za pomocą
adb devices
.Wreszcie biegnij
react-native run-android
który zainstaluje apk debugowania na twoim telefonie i możesz go dobrze uruchomić na serwerze deweloperskimUwaga:
index.js
gradlew assembleRelease
generuje tylko apki bez znaku wydania, których nie można zainstalowaćźródło
Możliwe jest wygenerowanie niepodpisanej wersji apk do celów testowych, aby można było uruchomić ją na telefonie komórkowym.
Początkowo otrzymałem błędy czerwonego ekranu, jak większość wspomniano tutaj. ale poszedłem za tym samym, o którym wspomniano tutaj i zadziałało to dla mnie.
Na konsoli z katalogu roboczego uruchom te cztery polecenia
Następnie plik APK zostanie utworzony na: android \ app \ build \ output \ apk \ debug \ app-debug.apk
źródło
Na wypadek, gdyby ktoś inny zaczął ostatnio zajmować się tym samym problemem, używam React Native 0.59.8 (testowany również z RN 0.60) i mogę potwierdzić niektóre inne odpowiedzi, oto kroki:
Odinstaluj najnowszą skompilowaną wersję aplikacji zainstalowanej na urządzeniu
Biegać
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
biegać
cd android/ && ./gradlew assembleDebug
Pobierz plik app-debug.apk w folderze android / app / build / output / apk / debug
powodzenia!
źródło
android/app/build/generated/assets/react/debug/index.android.js
a zasoby będą dostępne wandroid/app/build/generated/res/react/debug
natywnym reagowaniu 0.57.Znalazłem rozwiązanie zmieniające typy buildType takie jak:
źródło