Mahalliy ilovani qurilmada ochish ekraniga yopishtiriladi, lekin simulyatorda ishlaydi

My React native ilovasi XCode simulyatorida hech qanday muammosiz ishlaydi, lekin jismoniy qurilmada ishlayotgan vaqtimda mening iPhone, muammo bor. Ilova ishga tushiriladi va React native splash ekraniga yopishadi, 10-15 sekunddan so'ng dastur qulaydi/yopiladi. Buning sababi nima va uni qanday qilib oldini olishim mumkin?

22
Menda shunga o'xshash narsa bor. Mening ilovam iPhone 5S va yuqori simulyatorlari va qurilmalarida ishlaydi. Biroq login ilovasidan so'ng iphone 5 va 4S ga yopiladi.
qo'shib qo'ydi muallif milkersarac, manba
Aynan mana shu masalaga duch keldim, mening ilovam iOS simulyatorida to'liq ishlaydi, lekin birinchi yukdan keyin qurilmamda ishlamaydi.
qo'shib qo'ydi muallif Vipin Dubey, manba
Men shunga o'xshash masalaga duch kelmoqdaman. Buni kim hal qila olardi?
qo'shib qo'ydi muallif Nikant, manba

9 javoblar

Muammoni hal qildim. http://facebook.github.io/react-native/releases/0/45/docs/running-on-device.html#running-your-app-on-ios-devices , siz yaratishda va ilovani qurilmangizda ishga tushirsa, ilova sizning kompyuteringizdagi paketlardan JS fayllarini yuklaydi, shuning uchun ilovangizni qayta tiklashingiz mumkin. Ya'ni, qurilmangiz kompyuteringizga ulangan bo'lishi yoki kompyuteringiz bilan bir xil Wi-Fi tarmog'ida bo'lishi kerak. Qurilmangiz paketli qurilmaga kira olmasa, u displey ekraniga yopiladi va chiqadi.

Qurilmangizni ishonchli ishlatish uchun tuzilish diagrammasini tahrirlang va versiya versiyasini o'rnating.

24
qo'shib qo'ydi
Ha, bu aniq muammo, rahmat!
qo'shib qo'ydi muallif Li357, manba
Biz shunga o'xshash narsani ko'rib qoldik, telefon Wi-Fi orqali ulanmasa, dastur vaqt tugashi bilan (yoki "to'plam URL-yo'q" ni ko'rsata olmadi). Mahsulot -> Sxema -> Tartibga solish sxemasi tomonidan ishga tushirildi va Ishga tushirish bosqichini qoldiring.
qo'shib qo'ydi muallif Luke Williams, manba
Men bir xil tarmoqda bo'lsam-da, lekin erkin rejimga o'tgandan keyin ham omadsizlikka uchrayman.
qo'shib qo'ydi muallif Sujit, manba
Bu men uchun ham edi. Rahmat.
qo'shib qo'ydi muallif xenetics, manba

Ilovani disk raskadroviy qurilmada, paketga ulanmasdan ishlatish juda yaxshi bo'lishi kerak! Agar siz oflayn paket hosil qilish uchun reaktsiyadan foydalanganlik uchun kodini ishlatishingiz kerak va uni Xcode loyihangizga qo'shing. Keyin sizning paketingiz paketga ega bo'lmaganda, sizning dasturingiz o'sha to'plamga tushishi kerak.

Bu FB docs qurilmasiga tarqatish uchun ishlatilgan, chunki u endi mavjud emas.

Misol chaqiriq (bizning index.ios.js , TypeScript tomonidan ./ dist -ga joylashtirilgan):

react-native bundle --dev true --assets-dest ./ios --entry-file ./dist/index.ios.js --platform iOS --bundle-output ios/main.jsbundle

Bundan tashqari, ilovangizni ishlab chiqarish serveriga kirishga urinishdan ko'ra to'g'ridan-to'g'ri to'plamdan foydalanishni ayta olasiz. Bu esa takrorlashning sababi (bizda OP bilan bir xil muammo yuzaga kelgan) kabi ko'rinadi.

Ushbu qatorni izohlang:

jsCodeLocation =//whatever

Ushbu qatorni qo'shing:

jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
3
qo'shib qo'ydi

Men iPhone-ni Internetdan uzib qo'yishga harakat qildim, keyinchalik ishga tushirildim.

Shunday qilib, bir narsa tarmoq narsalar qilishga va kechikishga sabab bo'lgan. Bu tezkor tuzatishlar, lekin biz aniq aybdorni topguncha qilamiz.

1
qo'shib qo'ydi

Ehtimol, ilovani imzolashingiz kerak.

Loyiha navigatori ostida ilovangizni bosing. Keyin loyiha va maqsadlar ro'yxatidan maqsadingizni tanlang. "Umumiy" ko'rinishida "Imzo qo'yish" bo'limini toping. Siz bu erda jamoani ko'rsatishingiz kerak.

See this link for more info: https://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/LaunchingYourApponDevices/LaunchingYourApponDevices.html#//apple_ref/doc/uid/TP40012582-CH27-SW4

1
qo'shib qo'ydi

One other thing to check - make sure that your device & your computer are on the same WiFi network.

IPhone mening uydagi Wi-Fi tarmog'imda bo'lganida, lekin mening kompyuterim optimal Wi-Fi ulanish nuqtasiga avtomatik ravishda ulangan bo'lsa edi.

1
qo'shib qo'ydi
Qabul qilingan javobning dublikati.
qo'shib qo'ydi muallif Thomas Charlesworth, manba

Men qurganimda, u simulyatorda yaxshi ishlagan, lekin asl qurilmada faqat ekranning ekrani paydo bo'ldi va boshqa hech narsa yo'q edi.

Buning sababi shundaki, mening konfiguratsiya konfiguratsion debugar rejimida sukut mavjud bo'lgan, deb o'ylayman, chunki disk raskadrovka versiyasidan ozod qilish/tuzish konfiguratsiyasini o'zgartirishga to'g'ri keldi va hamma narsa kutilganidek ishlaydi.

enter image description here

0
qo'shib qo'ydi
Bu disk raskadrovka/ishlab chiquvchi menyusini o'chiradi.
qo'shib qo'ydi muallif Mike Rodham, manba

I was having the same issue.
What I did was in Xcode go to Products -> Scheme -> Edit Scheme -> Select the Run tab -> Change the build configuration to Release ( default it was debug mode ) and run the app in the device.

Bu juda tez bo'ldi va uni mahalliy ilovaga o'xshatdi.

0
qo'shib qo'ydi

Men bu masala yuzaga kelganida, men o'zim javob berganman - mahalliy ekran. Uni olib tashlaganingizdan keyin u ishlaydi

0
qo'shib qo'ydi
Yo'q, bu paketni biz qayerdan foydalanmoqdamiz.
qo'shib qo'ydi muallif Thomas Charlesworth, manba
Men roziman. Lekin amin emasman, nega bu ishni paketni olib tashlaganingizdan keyin. Buni men javob sifatida qo'shdim, chunki bu mening muammomni hal qildi.
qo'shib qo'ydi muallif Sujit, manba

Ushbu masala quyidagi imkoniyatlardan kelib chiqishi mumkin:

  1. Your run schema set to release instead of debug, so always expect to load main.jsbundle, instead of running from the debug server. Change it by Product->Schema-> Edit Schema->Run-> Build Configuration: Debug

Check on Xcode log that any message like NSURLConnection finished with error - code -1004 or NSURLConnection finished with error - code -1022. Go to Project->Target->Build Phases-> + -> New Run Script Phase

  1. (- 1004) Siz XCode loyihangizni sketchdan tuzgansiz va unutishingiz kerak bo'lgan native xcode skriptiga quyidagini kiritishingiz mumkin:

For the below version of React Native 50: export NODE_BINARY=node ../node_modules/react-native/packager/react-native-xcode.sh

For the higher version of React Native 50: export NODE_BINARY=node ../node_modules/react-native/scripts/react-native-xcode.sh

  1. (-1022) Your app ATS issue, check on Info.plist, and you can turn off ATS using below code: NSAppTransportSecurity NSAllowsArbitraryLoads <true/>
0
qo'shib qo'ydi
ReactJS & ReactNative Uzbekistan
ReactJS & ReactNative Uzbekistan
81 ishtirokchilar

Guruh ReactJS va ReactNative bo'yicha muloqot qilish uchun ochilgan. Sizni qiziqtirsa: @nodejs_uz @react_uz @angular_uz @ngTashkent @yiiframework_uz @js_uzb @typescript_uzb @vuejs_uz @ngTashkent @laravel_uz @uzdevgroup Ish o'rinlari @UzDev_jobs