Geliştirme sunucusu olmadan cihazda imzasız apk oluşturun ve yükleyin?


166

Reac-native'de yeniyim, bu yüzden adımlarda yanlış bir şey varsa bana bildirin.

Ben belgelere göre komutu kullanarak bir tepki yerli android uygulaması inşa var

tepki-yerli android

cihazda çalışırken aşağıdaki komut kullanıldı

tepki-yerli run-android

Bu da bana proje klasörümdeki 2 apk dosyasının çıktısını veriyor / android / app / build / outputs / apk

resim açıklamasını buraya girin

şimdi kurulumdan sonra bu apk yüklemek için kullandığımda JS paketlemek için bağlanmak için bir geliştirme sunucusu isteyin. Ancak benim gereksinimim, kullanıcının geliştirme sunucusuyla mücadele etmek zorunda olmaması, sadece apk'yi yüklemesi ve her şeyin yapılması.

Bazı stackoverflow Sorular geçti ama geliştirme sunucusu gerektirmeyen imzasız apk oluşturmak için yararlı değil.

Bana yerli tepki olarak imzasız ve inşa nasıl bir yol bulmak için bana yardımcı olabilir misiniz?


1
'Reac-native start' komutunu çalıştırın, js paketinizi geliştirme modunda sunucuya gönderir. Amaç böylece js dosyalarını anında düzenleyebilirsiniz. Yayın modunu kullan, gerekli paketi içereceğinden herhangi bir sunucuya ihtiyaç duymaz. Aşağıdaki cevaba bakınız
kar

Yanıtlar:


250

Bir hata ayıklama derlemesi için paketi el ile oluşturmanız gerekir.

Paket hata ayıklama derlemesi:

#React-Native 0.59
react-native bundle --dev false --platform android --entry-file index.js --bundle-output ./android/app/src/main/assets/index.android.bundle --assets-dest ./android/app/src/main/res

#React-Native 0.49.0+
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

#React-Native 0-0.49.0
react-native bundle --dev false --platform android --entry-file index.android.js --bundle-output ./android/app/build/intermediates/assets/debug/index.android.bundle --assets-dest ./android/app/build/intermediates/res/merged/debug

Daha sonra APK'ları paketledikten sonra oluşturmak için:

$ cd android
#Create debug build:
$ ./gradlew assembleDebug
#Create release build:
$ ./gradlew assembleRelease #Generated `apk` will be located at `android/app/build/outputs/apk`

Not: Gradle komut dosyalarını değiştirmek başka bir yaklaşım olabilir.


3
Birinin varlıklarının eksik olması durumunda: bu benim için çalıştı--assets-dest ./android/app/src/main/res/
Juan Solano

11
Uygulamayı başlattığımda bunu yapmak bana büyük bir kırmızı ekran verirse? (Not: Bunu çıkardıktan hemen sonra çalıştırıyorum)
Simon Forsberg

3
İndex.android.js dosyasını kullanmadığımız için en son sürüm için nasıl derleme yapılır?
Vivek

9
En son sürüme sahip kişiler, lütfen giriş noktasını --entry-file index.js olarak değiştirin, teşekkürler.
Rishabh Bhatia

4
tepki yerel paketi --dev yanlış - platform android - giriş dosyası index.js - paket çıktısı ./android/app/build/intermediates/assets/debug/index.android.bundle --assets-dest. index.js'nin
iOS

101

Lütfen şu adımları izleyin.

Js paketleyin:

proje kök dizininde index.android.js varsa o zaman çalıştırın

react-native bundle --dev false --platform android --entry-file index.android.js --bundle-output ./android/app/build/intermediates/assets/debug/index.android.bundle --assets-dest ./android/app/build/intermediates/res/merged/debug

proje kök dizininde index.js varsa o zaman çalıştırın

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

Hata ayıklama apk oluşturun:

cd android/
./gradlew assembleDebug

O zaman apk'nizi burada bulabilirsiniz:

cd app/build/outputs/apk/

11
Uygulamayı başlattığımda bunu yapmak bana büyük bir kırmızı ekran verirse? (Not: Bunu çıkardıktan hemen sonra çalıştırıyorum)
Simon Forsberg

2
@SimonForsberg reaktif ^ 0.5 kullanıyorsanız, giriş noktasını App.js veya index.android.js yerine index.js olarak değiştirin, 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
d.bayo

3
Çalışmıyor, bu bir apk oluşturma komutlarını veriyor ancak bu apk paketleyici sunucusu olmadan çalışmıyor.
Vishal Chhodwani

1
Bu işe yaramayacak, çünkü bir dev sunucusu gerektiriyor
sheriff_paul

1
Aynı sorunu yaşıyorum, hata ayıklama-APK oluştururken yükleyebilirim, ancak dev sunucusuna ihtiyacım var ve APK'yı kullandığımda, telefonuma yükleyemiyorum, ne olduğunu bilmiyorum bu yanlış
aName

62

Son Güncelleme

Kök proje dizininizde

Emin olun var zaten dizin android / app / src / main / varlıklar / dizini oluşturmak değilse, bundan sonra yeni bir dosya oluşturur ve olarak kaydetmek index.android.bundleve böyle dosyanızı koymak android / app / src / main / varlıklar / index.android .bundle

Bundan sonra bunu çalıştırın

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

Sonra alabilirsiniz apkiçinde app / build / çıkış / apk / debug / app-debug.apk


Bu cevap gerçekten işe yarıyor, çok teşekkür ederim,
aName

Bu cevap gerçekten işe yarıyor, çok teşekkür ederim,
aName

@jeeva: uygulama yerel tepki geliştirme sunucusuna nasıl bağlanır?
Mayur Baldha

Oluşturma noktası index.android.bundle, ana bilgisayarda geliştirme sunucusunu kullanmamak için gerçekten önemlidir.
Lee Elton

@ Mayur Balha: USB veya wifi (aynı ağa bağlı) üzerinden tekrar bağlanabilirsiniz. Tepki uygulamanızda WiFi'ye sunucuya tekrar bağlanmak için cep telefonunuzu emülatörde sallayın Win + R tuşlarına basın ve ardından dev ayarlarına tıklayın "Sunucu Ana Bilgisayarında ve Bağlantı Noktasında Hata Ayıkla" aşağıya doğru ip adresinizi ve bağlantı noktanızı girin (pencerelerde açık cmd "ipconfig" girin veya Mac açık Terminal 192.168.1.1:8080 gibi "ifconfig") girin ve sonra tekrar ok sallayın veya emülatör basın yeniden yükleme için Win + R tuşlarına basın, şimdi uygulama geliştirmeye geri bağlanmayı görebilirsiniz (Sadece Release Apk için değil Debug için çalışacaktır).
Jeeva

29

Benimle, proje dizininde aşağıdaki komutları çalıştırın.

Reaksiyon yerel eski sürümü için (root'ta index.android.js dosyasını göreceksiniz):

mkdir -p android/app/src/main/assets && rm -rf android/app/build && 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 && cd android && ./gradlew clean assembleRelease && cd ../

Yerel yeni sürümü tepki için (root'ta index.js'yi görürsünüz):

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 clean assembleRelease && cd ../

Apk dosyası şurada oluşturulacak:

  • Gradle <3.0: android / uygulama / derleme / çıkışlar / apk /
  • Gradle 3.0+: android / app / build / output / apk / release /

lütfen biraz ayrıntı verebilir misiniz ve sorunu nasıl çözer?
Priyal

İndex.android.bundle'da açılış hatası alıyordum ve önerinizle çözdüm. Thank you ... :)
zephyr

6
Benim için$ 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
Arif

Dosya bulunamadı: herhangi bir proje kökünde index.android.js
Anuj

1
Bunun, proje dizinlerinin kök yerine yeni projeler için --entry-file index.android.jsdeğiştirilmesi gerektiğini unutmayın . --entry-file index.jsindex.jsindex.android.js
daka

8

İlk yanıtı izledikten sonra uygulamanızı kullanarak

react-native run-android --variant=debug

Uygulamanız paketleyiciye gerek kalmadan çalışacak


1
en basit cevap, en verimli yanı idi, kusursuz çalıştı, günleri farklı komut satırlarını ve ton js yapılandırmalarını test ederek geçirdi ve her şey bu şekilde devam etti
Nicolas Silva

4

Tepki-yerel 0.57 itibariyle, daha önce verilen cevapların hiçbiri çalışmayacaktır, çünkü sınıfın paketi bulmayı beklediği dizinler ve varlıklar değişmiştir.

Reaksiyona özgü paket olmadan basit yol

Bir hata ayıklama derlemesi oluşturmanın en basit yolu, react-native bundlekomutu hiç kullanmadan, sadece app/build.gradledosyanızı değiştirmektir .

İçinde project.ext.reactharitanın app/build.gradledosyası eklemek bundleInDebug: truegirişi. Eğer bir --devyapı olmamasını istiyorsanız (uyarı ve simge demeti yok), devDisabledInDebug: truegirişi aynı haritaya da eklemelisiniz .

Reaksiyona özgü paket ile

Herhangi bir nedenle react-native bundle, paketi oluşturmak için komutu kullanmanız veya kullanmak istiyorsanız ve daha sonra ./gradlew assembleDebugAPK'yı paket ve varlıklarla oluşturmak için, paketi ve varlıkları doğru yollara yerleştirdiğinizden emin olun. bul onları.

Reaksiyona özgü 0.57'den itibaren bu yollar android/app/build/generated/assets/react/debug/index.android.jspaket içindir

ve android/app/build/generated/res/react/debugvarlıklar için. APK'yı paket ve varlıklarla manuel olarak gruplamak ve oluşturmak için tam komutlar:

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

ve sonra

./gradlew assembleDebug

Paket ve varlık yolu

Sınıfın paketi aradığı ve varlıkların değişebileceğini unutmayın. Bu yolların nerede olduğunu bulmak react.gradleiçin node_modules/react-nativedizininizdeki dosyaya bakın . İle başlayan def jsBundleDir =ve def resourcesDir =sınıfın sırasıyla grubun paketi ve varlıkları aradığı dizinleri belirtir.


3

Windows kullanıcıları için tüm adımlar bundan sonra doğru bir şekilde uygulandıysa: https://facebook.github.io/react-native/docs/signed-apk-android.html

Yalnızca şunu çalıştırmanız gerekir: gradlew assembleRelease

Ve dosyanız:

  • app-release.apk
  • Uygulama salım-unaligned.apk

Yer: E:\YourProjectName\android\app\build\outputs\apk


Herhangi bir cihaza app-release.apk yükleyebilir / paylaşabilirsiniz
Dharam Mali

2
Genellikle, hata ayıklama derlemesi, sürüm derlemesinden farklı bir yapılandırmaya sahiptir (örneğin bir hazırlama API'sı kullanır). Sürümden farklı bir yapılandırma yapılandırması kullanan bağımsız bir APK istiyorsanız
Josh

Bu APK sadece geliştirme / Test amaçlıdır.
Dharam Mali

3

Ben tepki yerel 0.55.4, temelde elle paket vardı:

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

Sonra cihazınızı usb ile bağlayın, usb hata ayıklamayı etkinleştirin. Bağlı cihazı ile doğrulayın adb devices.

Son olarak react-native run-android, hata ayıklama apk'sını telefonunuza yükleyecek şekilde çalıştırın ve dev sunucusu ile sorunsuz çalıştırabilirsiniz

Not:

  • 0.49.0'dan itibaren, giriş noktası tek bir index.js
  • gradlew assembleRelease sadece kurulamayan ve imzalanmamış apksleri üretir

3

Cep telefonunuzda çalıştırabilmeniz için test amacıyla imzasız bir apk sürümü oluşturmak mümkün olabilir.

Başlangıçta burada belirtildiği gibi kırmızı ekran hataları var. ama ben burada belirtilen aynı izledi ve benim için çalıştı.

Konsolunuzda çalışma dizininden bu dört komutu çalıştırın

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

cd android

gradlew assembleDebug

gradlew assembleRelease

Ve sonra APK dosyası şunlarda üretilir: android \ app \ build \ outputs \ apk \ debug \ app-debug.apk


3

Yakın zamanda başka birisinin aynı soruna girmesi durumunda React Native 0.59.8 kullanıyorum (RN 0.60 ile de test edildi) ve diğer cevapların bazılarını doğrulayabilirim, adımlar şunlardır:

  1. Uygulamanızın cihazınızda yüklü olan en son derlenmiş sürümünü kaldırın

  2. Çalıştırmak 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

  3. Çalıştırmak cd android/ && ./gradlew assembleDebug

  4. App-debug.apk klasörünü android / app / build / output / apk / debug klasörüne alın

iyi şanslar!


1
Çalışmıyor !!!, hata ayıklama APK'sını oluşturur, ancak uygulama hala dev sunucusuna ihtiyaç duyar
aName

Bu, tepkimeye giren paketin içinde olmasını android/app/build/generated/assets/react/debug/index.android.jsve varlıkların android/app/build/generated/res/react/debugtepkimeye özgü 0.57 olarak olmasını beklediği için reaksiyona özgü 0.59.8'de çalışamaz .
TheBaj

Tepki yerli için iyi çalışıyor 0.60>
Moso Akinyemi

0

BuildTypes değiştiren bir çözüm buldum:

buildTypes {
  release {
    signingConfig signingConfigs.release
  }
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.