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؟ (أو على الأقل ، أين يمكنني تهيئة عنوان الخادم؟)
تحديث
للتشغيل مع خادم محلي ، قم بتشغيل الأوامر التالية ضمن دليل جذر مشروع رد الفعل الأصلي
-
react-native start > /dev/null 2>&1 &
-
adb reverse tcp:8081 tcp:8081
يرجى إلقاء نظرة على إجابة dsissitka لمزيد من التفاصيل.
للتشغيل بدون خادم ، قم بتجميع jsfile في ملف apk عن طريق تشغيل:
-
إنشاء مجلد الأصول تحت
android/app/src/main
-
curl "http://localhost:8081/index.android.bundle?platform=android" -o "android/app/src/main/assets/index.android.bundle"
يرجى إلقاء نظرة على الجواب kzzzf لمزيد من التفاصيل.
احذف التطبيق من هاتفك! لقد جربت عدة خطوات ، لكن هذا فعلها في النهاية.
- إذا حاولت تشغيل تطبيقك من قبل ولكن فشلت ، احذفه من جهاز Android الخاص بك.
-
تشغيل
$ react-native run-android
-
افتح قائمة 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
. -
افتح قائمة 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 على المحاكي. عملت معي. آمل أن يساعد
على ما يبدو قدم ADB عكس في أندرويد 5.0
الحصول على "خطأ: مغلق" مرتين على "عكس بنك التنمية الآسيوي"
أعتقد أنه يتعين علينا المضي قدمًا في إجابة kzzzf
في التطبيق على نظام 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 للاختبار.
توليد ضربة المفتاح:
-
الانتقال إلى C: \ Program Files \ Java \ jdkx.x.x_x \ bin
-
يركض
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 المحلي