android - شرح - دورة react native




أخفق Android في تحميل حزمة JS (16)

أنا أستخدم Ubuntu و Android فقط ، ولم أتمكن من تشغيله. لقد وجدت حلاً بسيطًا جدًا وهو تحديث ملف package.json ، وتغيير هذه الخطوط:

"scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start"
  },

إلى

"scripts": {
    "start": "adb reverse tcp:8081 tcp:8081 && node node_modules/react-native/local-cli/cli.js start"
  },

ثم تقوم بتشغيل الخادم عن طريق الكتابة

npm run start

هذا يضمن قيام جهاز Android بالبحث عن خادم العقدة على جهاز الكمبيوتر الخاص بك بدلاً من البحث محليًا على الهاتف.

أحاول تشغيل AwesomeProject على Nexus5 الخاص بي (android 5.1.1).

أنا قادر على بناء المشروع وتثبيته على الجهاز. ولكن عندما أركضها ، حصلت على شاشة حمراء تقول

غير قادر على تنزيل حزمة JS. هل نسيت بدء تشغيل خادم التطوير أو توصيل جهازك؟

في رد فعل iOS الأصلي ، يمكنني اختيار تحميل jsbundle دون اتصال. كيف يمكنني أن أفعل نفس الشيء لنظام Android؟ (أو على الأقل ، أين يمكنني تهيئة عنوان الخادم؟)

تحديث

للتشغيل مع خادم محلي ، قم بتشغيل الأوامر التالية ضمن دليل جذر مشروع رد الفعل الأصلي

  1. react-native start > /dev/null 2>&1 &
  2. adb reverse tcp:8081 tcp:8081

يرجى إلقاء نظرة على إجابة dsissitka لمزيد من التفاصيل.

للتشغيل بدون خادم ، قم بتجميع jsfile في ملف apk عن طريق تشغيل:

  1. إنشاء مجلد الأصول تحت android/app/src/main
  2. curl "http://localhost:8081/index.android.bundle?platform=android" -o "android/app/src/main/assets/index.android.bundle"

يرجى إلقاء نظرة على الجواب kzzzf لمزيد من التفاصيل.


احذف التطبيق من هاتفك! لقد جربت عدة خطوات ، لكن هذا فعلها في النهاية.

  1. إذا حاولت تشغيل تطبيقك من قبل ولكن فشلت ، احذفه من جهاز Android الخاص بك.
  2. تشغيل $ react-native run-android
  3. افتح قائمة React Rage Shake من داخل التطبيق الخاص بك على جهاز Android الخاص بك ، Dev Settings إلى Dev Settings ، ثم إلى Debug server host & port for device . هناك أدخل خادم IP الخاص بك (IP لجهاز الكمبيوتر الخاص بك) والمضيف 8081 ، على سبيل المثال 192.168.50.35:8081 . على نظام التشغيل mac ، يمكنك العثور على IP لجهاز الكمبيوتر الخاص بك في System Preferences -> Network -> Advanced... -> TCP/IP -> IPv4 Address .
  4. افتح قائمة Rage Shake مرة أخرى وانقر فوق Reload JS .

بدء تشغيل اثنين من محطة على نفس وتشغيل المحطة الأولى رد فعل أصلي ، وتشغيل محطة الروبوت الثانية رد فعل أصلي هذه المشكلة يتم حلها بطريقة بسيطة. حظا سعيدا


بعد تجربة مجموعة من الإجابات هنا ، هذا هو ما يناسبني.

أنا أستخدم Genymotion كمحاكي.

1 بدء تشغيل Genymotion المحاكي.

2 من محطة

cd AwesomeProject
react-native run-android # it loads in genymotion and fails with bundle error
react-native start > /dev/null 2>&1 & # from dsissitka
adb reverse tcp:8081 tcp:8081 # from dsissitka

3 تحديث من المحاكي.

الأحمال!

يمكنني الآن البدء في تطوير.


تحقق من اتصال wifi الخاص بك.

هناك احتمال آخر يتمثل في أنك إما غير متصل بشبكة wifi أو متصلة بشبكة خاطئة أو أن عنوان IP خاطئ في إعدادات مطور البرامج لديك. لسبب ما ، انقطع جهاز Android من wifi وبدأت في الحصول على هذا الخطأ ، بدون علم.


تشغيل npm start من دليل رد فعل أصلى .


حل سهل يناسبني مع Ubuntu 14.04.

react-native run-android

سيعود المحاكي (تم إطلاقه بالفعل): غير قادر على تنزيل JS Bundle؛ ابدأ من جديد خادم JS:

react-native start

ضرب تحديث JS على المحاكي. عملت معي. آمل أن يساعد



في التطبيق على نظام Android ، فتحت Menu (Command + M في Genymotion) -> إعدادات Dev -> مضيف خادم Debug ومنفذ للجهاز

عيّن القيمة إلى: المضيف المحلي: 8081

عملت معي.


فيما يلي الخطوات البسيطة لتشغيل تطبيقك على نظام أندرويد (إصدار):

1. انتقل إلى جذر التطبيق الخاص بك.

2. قم بتشغيل هذا الأمر.

رزمة رد فعل أصلية - platform android --dev false --entry-file index.android.js - رزمة / إخراج android / app / src / main / stocks / index.android.bundle --assets-dest android / app / SRC / / الرئيسية الدقة

يتم نسخ جميع الملفات الخاصة بك.

3. إنشاء موقع APK.

افتح استوديو android.

إنشاء> إنشاء توقيع APK> [املأ التفاصيل المطلوبة ، يجب إنشاء ضغط المفاتيح قبل هذه الخطوة]

يجب إنشاء ملف APK الخاص بك دون أي أخطاء. تثبيت على جهازك وهذا يجب أن تعمل دون أي مشاكل.

يمكنك أيضًا توصيل جهازك والضغط مباشرة على أيقونة Run في android studio للاختبار.

توليد ضربة المفتاح:

  1. الانتقال إلى C: \ Program Files \ Java \ jdkx.x.x_x \ bin

  2. يركض

keytool -genkey -v -keystore d: \ my_private_key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

ربما سيطلب منك ملء بعض التفاصيل. يمكنك القيام بذلك وملف ضغط المفاتيح الخاص بك ( my_private_key.keystore ) والذي يمكن استخدامه للتوقيع على apk.


كنت أحصل على هذا على نظام Linux بعد إيقاف عملية react-native run-android . يبدو أن خادم العقدة لا يزال قيد التشغيل ، لذا في المرة التالية التي تقوم فيها بتشغيله ، لن يتم تشغيله بشكل صحيح ولن يتمكن تطبيقك من الاتصال.

الإصلاح هنا هو قتل عملية العقدة التي تعمل في Xterm والتي يمكنك قتلها عن طريق ctrl-c تلك النافذة (أسهل) أو يمكنك العثور عليها باستخدام lsof -n -i4TCP:8081 ثم kill -9 PID .

ثم قم بتشغيل react-native run-android مرة أخرى.


لتجميع ملف JS في ملف apk بينما يعمل الخادم الخاص بك على ( react-native start ) ، قم بتنزيل الحزمة في دليل الأصول لتطبيقك:

curl "http://localhost:8081/index.android.bundle?platform=android" -o "android/app/src/main/assets/index.android.bundle"

مع الإصدار التالي (0.12) ، سنقوم بإصلاح أمر react-native bundle للعمل مع مشاريع android كما هو متوقع.


من دليل المشروع الخاص بك ، تشغيل

react-native start

فإنه ينتج ما يلي:

$ react-native start
 ┌────────────────────────────────────────────────────────────────────────────┐ 
   Running packager on port 8081.                                             
                                                                              
   Keep this packager running while developing on any JS projects. Feel       
   free to close this tab and run your own packager instance if you           
   prefer.                                                                    
                                                                              
   https://github.com/facebook/react-native                                  │ 
                                                                              
 └────────────────────────────────────────────────────────────────────────────┘ 
Looking for JS files in
   /home/user/AwesomeProject 


React packager ready.

[11:30:10 PM] <START> Building Dependency Graph
[11:30:10 PM] <START> Crawling File System
[11:30:16 PM] <END>   Crawling File System (5869ms)
[11:30:16 PM] <START> Building in-memory fs for JavaScript
[11:30:17 PM] <END>   Building in-memory fs for JavaScript (852ms)
[11:30:17 PM] <START> Building in-memory fs for Assets
[11:30:17 PM] <END>   Building in-memory fs for Assets (838ms)
[11:30:17 PM] <START> Building Haste Map
[11:30:18 PM] <START> Building (deprecated) Asset Map
[11:30:18 PM] <END>   Building (deprecated) Asset Map (220ms)
[11:30:18 PM] <END>   Building Haste Map (759ms)
[11:30:18 PM] <END>   Building Dependency Graph (8319ms)

هناك شيء واحد مهم للتأكد من عدم ذكر أي شخص حتى الآن: تحقق من جدار الحماية المحلي ، وتأكد من إيقاف تشغيله .

انظر ردي هنا: https://.com/a/41400708/1459275


يمكنك اتباع التعليمات المذكورة في الصفحة الرسمية لإصلاح هذه المشكلة. تحدث هذه المشكلة على الجهاز الحقيقي لأن حزمة JS موجودة على نظام التطوير الخاص بك والتطبيق الموجود داخل جهازك الحقيقي لا يعرف موقعه.


يعمل على الجهاز

لقد وجدت إجابة أخرى.

  • عكس adb: تعمل فقط على Android 5.0+ (API 21).
  • آخر: افتح قائمة Developer عن طريق هز الجهاز ، انتقل إلى إعدادات Dev ، انتقل إلى مضيف خادم Debug للجهاز ، واكتب عنوان IP لجهازك ومنفذ خادم dev المحلي




react-native