ข้อผิดพลาด“ ไม่สามารถรับ BatchedBridge ตรวจสอบให้แน่ใจว่ามัดแพคเกจของคุณถูกบรรจุอย่างเหมาะสม” เมื่อเริ่มต้นแอพ


167

พยายามที่จะสร้างโครงการตอบโต้พื้นเมืองบน Android 4.4.2 ฉันได้รับหน้าจอข้อผิดพลาดนี้

ข้อผิดพลาดดังกล่าว

และไม่สามารถหาวิธีแก้ไขได้ ฉันลองรีสตาร์ทเครื่องแพ็คเก็ตเชื่อมต่ออุปกรณ์ใหม่อีกครั้งแม้จะติดตั้งแบบโต้ตอบดั้งเดิมและเริ่มโครงการใหม่ ในเวอร์ชัน 6.0.0 และใหม่กว่ามันใช้งานได้


1
คุณได้รับข้อผิดพลาดนี้หลังจากดำเนินการreact-native run-androidหรือไม่ ฉันได้รับข้อผิดพลาดในกรณีนี้ซึ่งแปลกเพราะในโหมดดีบั๊กไม่จำเป็นต้องใช้ชุดรวม JS afaik เพราะมันควรจะเชื่อมต่อกับเซิร์ฟเวอร์แพคเกจ
Ryan H.

ฉันโพสต์คำตอบของปัญหาเดียวกันที่นี่: stackoverflow.com/a/45110063/706798
Anton

ฉันได้รับข้อความแสดงข้อผิดพลาดเดียวกันนี้ แต่สำหรับ iOS ใครมีคำแนะนำ? ฉันพยายามเรียกใช้ 'react-native run-ios' แต่มันไม่ทำงานเพราะ XCode อยู่บนไดรฟ์ภายนอกสำหรับฉัน
ryanwebjackson

คำตอบ:


145

ทางออกที่เป็นไปได้สำหรับกรณีนี้คือคุณอาจไม่รวมแอปพลิเคชันของคุณเป็นอันดับแรกทำตามขั้นตอนต่อไปนี้จากนั้นปรับใช้ app-debug.apk กับอุปกรณ์ของคุณ

$ cd myproject  
$ react-native start > /dev/null 2>&1 &  
$ curl "http://localhost:8081/index.android.bundle?platform=android" -o "android/app/src/main/assets/index.android.bundle"

(หากโฟลเดอร์assetsไม่มีอยู่ให้สร้างขึ้นใหม่)

จากนั้นเรียกใช้จากรูทโปรเจ็กต์

$> (cd android/ && ./gradlew assembleDebug)

ติดตั้ง apk ที่สร้างไปยังอุปกรณ์ของคุณจากตำแหน่ง: android/app/build/outputs/apk/app-debug.apk

แจ้งให้เราทราบหากวิธีการแก้ไขปัญหาของคุณ

แก้ไข :

คุณสามารถใส่ลงใน package.json ของคุณเป็นสคริปต์เพื่อทำให้มันเป็นแบบอัตโนมัติฉันเชื่อว่ามันจะได้รับการแก้ไขในรีลีสที่มีปฏิกิริยาตอบสนองและจะดำเนินการก่อนที่จะประกอบ APK สุดท้ายดังนั้นจึงไม่จำเป็น เช่นกัน)

ใส่:

"scripts": {
    "build": "(cd android/ && ./gradlew assembleDebug)",
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "bundle-android": "react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --sourcemap-output android/app/src/main/assets/index.android.map --assets-dest android/app/src/main/res/"
  },

หรือเท่าที่กล่าวถึงเทียบเท่าขด แต่สำหรับกรณีส่วนใหญ่ข้างต้นมีประสิทธิภาพมากขึ้น


4
ใช่มันทำงานได้ !!! ฉันทำอะไรไป ทำไมต้องม้วนงอ เช่นนี้เป็นไปโดยอัตโนมัติหรือไม่
Zygro

ขอบคุณมากเพราะแอปของฉันไม่ได้เชื่อมโยงชุดข้อมูลพื้นเมืองของ React
GeekHades

3
ดูเหมือนว่าแฮ็ค หากคุณบรรจุจาวาสคริปต์ไว้ในไฟล์เดียวคุณจะไม่ได้รับความสามารถในการรีโหลดสดขณะที่เรียกใช้แอประหว่างการพัฒนาหรือไม่?
Liron Yahdav

2
สิ่งนี้ไม่ได้มีไว้สำหรับการพัฒนา แต่สำหรับบรรจุภัณฑ์ APK ที่แท้จริง
tbo

ไม่มีอะไรเกิดขึ้นกับฉันยังคงได้รับข้อผิดพลาด: - com.facebook.react.devsupport.JSException: ไม่สามารถรับ BatchedBridge ตรวจสอบให้แน่ใจว่ากลุ่มของคุณได้รับการบรรจุอย่างถูกต้อง
Dinesh R Rajput

110

ฉันเจอปัญหานี้เช่นกัน สิ่งที่ฉันทำคือบังคับให้ฆ่าแอปบนอุปกรณ์ของฉันจากนั้นฉันเปิดคอนโซลอื่นขึ้นมาแล้ววิ่ง

react-native start

จากนั้นฉันก็เปิดแอปอีกครั้งจากอุปกรณ์ของฉันและมันก็เริ่มทำงานอีกครั้ง

แก้ไข: หากคุณใช้อุปกรณ์ Android ผ่าน USB และถอดปลั๊กหรือคอมพิวเตอร์เข้าสู่โหมดสลีปคุณอาจต้องเปิดใช้งานก่อน

adb reverse tcp:8081 tcp:8081

5
react-native run-androidนี้แก้ปัญหาของฉันเมื่อใช้ การใช้react-native startไม่จำเป็นสำหรับฉันเมื่อฉันทำreact-native run-ios
Dylan Pierce

2
สิ่งนี้ใช้ได้ผล แต่ทำไมสิ่งนี้ถึงเกิดขึ้น สิ่งนี้จะได้รับการแก้ไขหรือไม่ ฉันต้องเปิดเทอร์มินัล 2 เครื่องเสมอและทำ 'เริ่มต้น' ก่อนที่จะสามารถเรียกใช้ได้บนอุปกรณ์หรือไม่
Marko

มันเหมาะกับฉันด้วย! ใช้เวลาหลายชั่วโมงเพื่อหาทางแก้ปัญหา
dtjmsy

adb reverse tcp:8081 tcp:8081เพียงพอสำหรับตัวฉันเอง ขอบคุณมาก!
Darius

นี่เป็นสิ่งที่ยอดเยี่ยมหลังจากนั้นคุณสามารถทำการติดตั้ง. / adb
Faris Rayhan

27

เพิ่งได้รับข้อผิดพลาดนี้ นี่คือสิ่งที่ฉันทำเพื่อแก้ไข: ฉันเลือกDismissเข้าสู่เมนูนักพัฒนาจากนั้นDev SettingsเลือกDebug server host & port for deviceฉันเพิ่มที่อยู่ IP ของคอมพิวเตอร์และพอร์ต: 192.168.0.xx:8xxxใช้เครื่องอะไรก็ตามที่นักพัฒนาซอฟต์แวร์ของคุณกำหนดที่อยู่ IP ในเครือข่าย wifi ของคุณ พอร์ตมักจะ:8081

เมื่อฉันทำสิ่งนี้ทุกอย่างเป็นไปด้วยดี นอกจากนี้ในขณะที่คุณอยู่ในเมนู dev อย่าลืมเลือกEnable Live ReloadและDebug JS Remotelyทำให้ชีวิตของคุณง่ายขึ้นมากในขณะที่ดีบัก


Works! สำหรับผู้ใช้ Ubuntu: เรียกใช้ifconfigแล้วค้นหา inet addr: xxx.xxx.xxx.xxx โดยที่ xxx * เป็นเครื่องผู้พัฒนาเครื่อง ip ของคุณ
henggana

นี้ทำงานสำหรับฉันในระดับ API 19 / 4.4 ใช้ KitKat ดูstackoverflow.com/questions/31525431/... , facebook.github.io/react-native/docs/...
ไมเคิลริบบิ้น

ขอบคุณ! ฉันต้องตั้งค่าคอนฟิกนี้เฉพาะเมื่อฉันดีบักโดยไม่ใช้สาย USB (พร้อมเครื่องมืออย่าง WiFi ADB)
Fidan Hakaj

4
โปรดทราบว่าคุณสามารถสร้างเมนูนักพัฒนาซอฟต์แวร์ที่ @cube อ้างอิงข้างต้นโดยการเขย่าอุปกรณ์ Android ของคุณ ที่อาจดูแปลก แต่นั่นคือสิ่งที่จะนำมันขึ้นมา จากนั้นทำตามคำแนะนำที่เหลือ สิ่งนี้แก้ไขได้สำหรับฉัน
flyingace

22

นี่คือสิ่งที่ใช้งานได้สำหรับฉัน (หลังจากลองวิธีแก้ปัญหาอื่น ๆ ทั้งหมดที่ฉันพบ ... ):

วิ่งadb reverse tcp:8081 tcp:8081เข้าไปข้างใน\Android\sdk\platform-tools


1
สามารถเรียกใช้คำสั่งนี้ได้ทุกที่โดยไม่จำเป็นต้อง b ในแพลตฟอร์มเครื่องมือ
goldylucks

1
ฉันพบว่าreact-native run-androidพยายามเรียกใช้คำสั่งนั้นและขึ้นอยู่กับตัวแปรสภาพแวดล้อมของ Windows pathเพื่อให้มีplatform-toolsเส้นทาง
59

1
ขอบคุณสิ่งนี้ได้ผล PATH คือ C: \ Users \ ชื่อผู้ใช้ \ AppData \ Local \ Android \ sdk \ platform-tools
chazefate

ไม่, ไม่ทำงานบน Windows 10 และ Android emulator
pixel

16

ฉันได้รับสิ่งนี้เช่นกันเมื่อฉันเริ่มเป็นครั้งแรกกับ React Native โดยใช้อุปกรณ์ทางกายภาพ หากเป็นกรณีนี้คุณต้องทำสิ่งพิเศษก่อนเริ่มใช้งาน คุณต้องป้อนข้อมูลบางอย่างเกี่ยวกับเครื่องพัฒนาของคุณใน 'การตั้งค่า Dev' ของ React Native

เมื่อคุณเห็นข้อผิดพลาดเขย่าอุปกรณ์ของคุณ กล่องโต้ตอบจะปรากฏขึ้นตัวเลือกสุดท้ายจะเป็น 'การตั้งค่า Dev' เลือก 'ดีบั๊กเซิร์ฟเวอร์ฮอต & พอร์ตสำหรับอุปกรณ์' แล้วป้อน IP ในเครื่องของคุณและพอร์ตที่ใช้ (ปกติคือ 8081)

ดูย่อหน้าสุดท้ายของhttps://facebook.github.io/react-native/docs/running-on-device-android.html


นี่คือการทำซ้ำคำต่อคำอย่างแท้จริงของสิ่งที่ฉันพูดข้างต้น (ในเดือนสิงหาคม)
cube

3
ฉันไม่รู้ว่าฉันต้องเขย่าอุปกรณ์ ก่อนอื่นฉันจะโพสต์เป็นความคิดเห็น แต่ฉันไม่มีคะแนนเพียงพอที่จะทำเช่นนั้น ฉันลงทะเบียนโพสต์ของคุณแล้ว
Richh94

ทางออกที่ง่ายและสะอาดที่สุด ขอบคุณ!
callOfCode

7

หากวิธีการใดไม่เหมาะกับคุณลอง:

ฉันพบว่า<root>/android/app/build/intermediates/assets/debugโฟลเดอร์ของฉันว่างเปล่าและโดยการเรียกใช้cd android && ./gradlew assembleDebugไม่ได้สร้างไฟล์เหล่านั้นซึ่งจำเป็นต้องใช้ซึ่งภายหลังถูกใช้งานโดยเธรด javascript ในแอปพื้นฐานของเรา

ฉันรันคำสั่งต่อไปนี้ด้วยตนเองซึ่งคำสั่ง debug build ควรสร้างขึ้นอย่างสมบูรณ์แบบ

node node_modules/react-native/local-cli/cli.js bundle --platform android --dev true --reset-cache --entry-file index.android.js --bundle-output /<path to dir>/android/app/build/intermediates/assets/debug/index.android.bundle --assets-dest /<path to dir>/android/app/build/intermediates/res/merged/debug

หลังจากรันคำสั่งเหล่านี้ฉันพบไฟล์บันเดิลสองไฟล์ในไดเรกทอรีนี้ <root>/android/app/build/intermediates/assets/debug

จากนั้นฉันก็cd android && ./gradlew installDebugเริ่มทำงานอีกครั้งแอพของฉันก็เริ่มทำงานอีกครั้ง

จะแก้ไขข้อบกพร่องเพิ่มเติมและจะอัปเดตสิ่งที่ผิดพลาดจริง ๆ


เพียงชี้แจงว่าเกิดอะไรขึ้นดูเหมือนว่าเมื่อรวมการโต้ตอบดั้งเดิมเข้ากับโครงการที่มีอยู่แล้วเส้นทางเอาต์พุตมัดรวมไม่ได้ถูกตั้งค่าโดยอัตโนมัติดังนั้นคุณต้องตั้งค่าด้วยตนเอง ดังนั้นเส้นทางออกมัด = / path / to / assets?
robsstackoverflow

คุณเป็น btw ที่ดีที่สุด
robsstackoverflow

7

ในเทอร์มินัลแยกต่างหากเชื่อมต่ออุปกรณ์ของคุณกับคอมพิวเตอร์และเรียกใช้คำสั่งต่อไปนี้:

react-native start 
cd user/Library/Android/sdk/platform-tools/
./adb reverse tcp:8081 tcp:8081

แอพลิเคชันขั้ว:

react-native run-android 
install apk on your device from this location android/app/build/outputs/apk/app-debug.apk

1
บางทีคุณอาจขยายคำตอบของคุณเพื่อเพิ่มรายละเอียดอีกเล็กน้อยเกี่ยวกับความหมายของแต่ละขั้นตอนในคำตอบของคุณจากไดเรกทอรีใดที่คำสั่งควรรัน ฯลฯ ฉันคิดว่านั่นจะทำให้คำตอบของคุณมีประโยชน์มากยิ่งขึ้น
niels

นี่คือคำตอบที่เหมาะสม สิ่งนี้ช่วยให้คุณสามารถวนซ้ำอย่างรวดเร็วโดยเชื่อมต่อกับเซิร์ฟเวอร์เนทีฟแบบตอบโต้แทนที่จะต้องทำแพ็กเกจบันเดิลใหม่ด้วยการเปลี่ยนแปลงแต่ละครั้ง
Joshua Pinter

6

มันสายเกินไปนิดหน่อย แต่มันใช้ได้สำหรับฉันจริงๆ

  1. react-native run-android.
  2. react-native start.

คำสั่งแรกจะสร้างapkสำหรับ Android และปรับใช้บนอุปกรณ์ของคุณหากมีการเชื่อมต่อ เมื่อคุณเปิดแอพมันจะแสดงหน้าจอสีแดงพร้อมข้อผิดพลาด จากนั้นเรียกใช้คำสั่งที่สองซึ่งจะเรียกใช้ packager และสร้างแอปมัดสำหรับคุณ


5

ลองใช้คำสั่งนี้ในเทอร์มินัลแล้วโหลดซ้ำ มันใช้งานได้สำหรับฉัน

adb reverse tcp: 8081 tcp: 8081



5
  1. รีสตาร์ทจีโนม
  2. วิ่ง react-native run-android
  3. ปัญหาได้รับการแก้ไข

จริงเหรอ restart the genymotion? ไทโวล
มิคาล

นั่นคือการพูดว่า "เว็บไซต์ของคุณไม่ทำงานลองเริ่มเซิร์ฟเวอร์ของคุณใหม่"
มิคาล

4

ฉันมีข้อยกเว้นเดียวกันบนอุปกรณ์ Z3 Compact D5803 - 6.0.1

ฉันไปเปิดไฟล์. buckconfig และเปลี่ยนบรรทัด:

target = Google Inc.:Google APIs:23

ถึง

target = Google Inc.:Google APIs:24

เพราะฉันเห็นใน SDK Manager ว่า Android 6.X มี api ระดับ 24


3

สำหรับผมมันเป็นเพราะไม่ได้อยู่ในadb PATHมันตั้งอยู่ /Users/man/Library/Android/sdk/platform-toolsสำหรับฉันมันอาจจะเป็นที่อื่นสำหรับคุณ แต่ต่อไปค้นหาและเพิ่มไปยังเส้นทางของคุณเพื่อดูว่าช่วยได้หรือไม่


3

เนื่องจากคุณใช้ Android <5.0 คุณไม่สามารถใช้adb reverseวิธีการเริ่มต้นได้แต่ Facebook ได้เพิ่มเอกสารอย่างเป็นทางการเพื่อเชื่อมต่อกับเซิร์ฟเวอร์การพัฒนาผ่าน Wi-Fiซึ่งจะรองรับเวอร์ชันของคุณ การอ้างถึงคำแนะนำสำหรับ MacOS แต่มีไว้สำหรับ Linux และ Windows ด้วย:

วิธีที่ 2: เชื่อมต่อผ่าน Wi-Fi

คุณยังสามารถเชื่อมต่อกับเซิร์ฟเวอร์การพัฒนาผ่าน Wi-Fi ได้ ก่อนอื่นคุณจะต้องติดตั้งแอปในอุปกรณ์ของคุณโดยใช้สาย USB แต่เมื่อดำเนินการเสร็จแล้วคุณสามารถดีบักแบบไร้สายได้โดยทำตามคำแนะนำเหล่านี้ คุณจะต้องมีที่อยู่ IP ปัจจุบันของเครื่องพัฒนาของคุณก่อนดำเนินการต่อ

คุณสามารถค้นหาที่อยู่ IP ได้ในการตั้งค่าระบบ→เครือข่าย

ตรวจสอบให้แน่ใจว่าแล็ปท็อปและโทรศัพท์ของคุณอยู่ในเครือข่าย Wi-Fi เดียวกัน เปิดแอป React Native ของคุณบนอุปกรณ์ของคุณ คุณจะเห็นหน้าจอสีแดงพร้อมข้อผิดพลาด ไม่เป็นไร ขั้นตอนต่อไปนี้จะแก้ไขปัญหานั้น เปิดเมนูนักพัฒนาในแอป ไปที่การตั้งค่า Dev →โฮสต์เซิร์ฟเวอร์ดีบั๊กสำหรับอุปกรณ์ พิมพ์ที่อยู่ IP ของเครื่องและพอร์ตของเซิร์ฟเวอร์ dev ภายในเครื่อง (เช่น 10.0.1.1:8081) กลับไปที่เมนูนักพัฒนาและเลือก Reload JS


3

มันมีปัญหานี้ "สุ่ม" และเอาฉันบางครั้งเพื่อตระหนักถึงสิ่งที่ผิดในสถานการณ์ของฉัน

หลังจากฉันอัปเดตเป็น React-native-cli 2.0.1 แล้วก็มีข้อความที่ส่งออกไปยังบันทึกซึ่งช่วยให้ฉันขุดและค้นหาสาเหตุ:

เซิร์ฟเวอร์ JS ไม่ได้รับการยอมรับดำเนินการสร้าง ...

หลังจากค้นคว้าลิงค์บางอันฉันพบสิ่งนี้:

ไม่รู้จักเซิร์ฟเวอร์ JS

ตั้งแต่ฉันใช้ windows ฉันจึงใช้ netstat และพบว่าผู้เล่น VLC ของฉันก็ทำงานที่พอร์ต 8081 ซึ่งเป็นสาเหตุของปัญหา ดังนั้นในกรณีของฉันถ้าฉันเริ่มต้นเซิร์ฟเวอร์ vlc ก่อนเซิร์ฟเวอร์ตอบโต้มันจะไม่ทำงาน

ข้อความบันทึกเดียวกันนี้ไม่ได้แสดงผลในรุ่นก่อนหน้าของภาษา - พื้นเมือง - cli ทำให้มันล้มเหลวอย่างเงียบ ๆ

TL, DR: ตรวจสอบว่ามีอะไรทำงานในพอร์ตเดียวกันกับตัวจัดการแพคเกจ (8081 โดยค่าเริ่มต้น)


2

ปัญหาของฉันคือการที่ฉันผ่านAndroidManifest.xmlไฟล์ของฉันและได้ลบบรรทัด

<uses-permission android:name="android.permission.INTERNET" />

เพราะแอพของฉันไม่ต้องการอินเทอร์เน็ต อย่างไรก็ตามแอปตรวจสอบการแก้ไขข้อบกพร่องดั้งเดิมนั้นจำเป็นต้องมีการเข้าถึงอินเทอร์เน็ต (เพื่อเข้าถึงเครื่องห่อ) อ๊ะ :)


1
ผู้ชายที่คุณช่วยชีวิตฉันไว้ ถูกฉีกผมออก :)
Christophe Cadilhac


2

โปรดตรวจสอบว่าคุณมีข้อผิดพลาดดังต่อไปนี้เมื่อคุณเรียกใช้react-native run-android: adb server version (XX) doesn't match this client (XX); killing...

ในกรณีนั้นให้แน่ใจ/usr/local/opt/android-sdk/platform-tools/adbและ/usr/local/bin/adbชี้ไปที่เดียวกันadb

ในกรณีของฉันมีคนชี้ไปที่/Users/sd/Library/Android/sdk/platform-tools/adb(Android SDK) แต่อีกคนชี้ไปที่/usr/local/Caskroom/android-platform-tools/26.0.2/platform-tools/adb(Homebrew)

และปัญหาได้รับการแก้ไขหลังจากที่ทั้งคู่ชี้ไปที่/Users/sd/Library/Android/sdk/platform-tools/adb(Android SDK)


1

ฉันได้รับข้อผิดพลาดนี้เช่นกันสับสนจริงๆ เพราะคำตอบทั้งหมดใช้ไม่ได้ หลังจากเพิ่มadbไปยังเส้นทาง


1

สำหรับฉันฉันเปิดใช้งานการซิงค์ด้านข้างและใช้งานอยู่ การปิดมันทำให้ปัญหาหายไปโดยไม่เจตนา มันอาจคุ้มค่าที่จะปิดการสื่อสารนี้หรือการสื่อสารอื่นระหว่างพีซีและอุปกรณ์


1

ฉันสิ้นสุดต้องเปิดพอร์ตที่ฉันใช้ (8081 โดยค่าเริ่มต้น) บน Linux คุณสามารถทำสิ่งต่อไปนี้

sudo iptables -A INPUT -p tcp --dport 8081 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 8081 -m conntrack --ctstate ESTABLISHED -j ACCEPT

คุณสามารถทดสอบเพื่อดูว่าคุณจำเป็นต้องทำเช่นนี้จริงหรือไม่ เพียงนำทางไปยังเซิร์ฟเวอร์ dev ของคุณใน Chrome บนอุปกรณ์ Android ของคุณ ถ้ามันไม่ตอบสนองนี่อาจเป็นสิ่งที่คุณต้องการ หากมันตอบสนองสิ่งนี้จะไม่ช่วยคุณ


1

ทางของฉันคือ:

react-native start

หลังจากนั้นในอุปกรณ์ของคุณโดยใช้:

click to Reload.

เห็นในคอนโซลปฏิกิริยาพื้นเมืองมันจะดึงข้อมูลบันเดิล js


นี่เป็นปัญหาของฉันเพราะเทอร์มินัลไม่เริ่มทำงาน ขอบคุณมาก!
Nicolas Leucci

1

ผมมีปัญหาเหมือนกัน. เมื่อฉันสร้างโครงการตอบโต้พื้นเมืองผ่านทางแบบโต้ตอบ createPro-native-app AwesomeProjectมันทำงานได้ดีในแอป Expo ทางโทรศัพท์ หลังจากนั้นฉันต้องการใช้โครงการเริ่มต้นอย่างรวดเร็วเพื่อพัฒนาโครงการของฉันและมีข้อผิดพลาดเช่นเดียวกับที่คุณทำ

หลังจากการวิจัยบางอย่างฉันพบว่าดีกว่าที่จะเริ่มต้นโครงการใหม่ด้วยAwesomePro-init initProject (พร้อมการตั้งค่าทั้งหมดใน Native docs แบบตอบโต้) จากนั้นเรียกใช้คำสั่งนี้:

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/

ที่ควรแก้ไขสิ่งที่มีมัด (- ลบเท็จไม่แสดงคำเตือน)

สิ่งที่คุณต้องทำเพื่อให้แอปทำงานบนอุปกรณ์เสมือน / จริงของคุณคือ:

react-native run-android

และมันควรจะทำงานได้ดี อย่างน้อยมันก็ใช้งานได้สำหรับฉัน


1

สำหรับผมปัญหาคือการที่ 'adb' ไม่ได้รับการยอมรับ - ตรวจสอบที่นี้คำตอบ

ในการแก้ไขปัญหานี้ให้เพิ่ม C: \ Users \ USERNAME \ AppData \ Local \ Android \ sdk \ platform-tools ไปยังตัวแปรสภาพแวดล้อม


นี่คืออะไรมากกว่าความคิดเห็น แต่ถ้าคุณวางบรรทัดสุดท้ายของคำตอบที่เชื่อมโยงไว้ที่นี่นี่จะกลายเป็นคำตอบที่ถูกต้อง มิฉะนั้นจะมีโอกาสคำตอบนี้จะถูกลบออก
Amit Joshi

1

พวกเราส่วนใหญ่ประสบปัญหานี้เป็นครั้งแรกเมื่อเราเริ่มตอบสนองโครงการพื้นเมือง # 1

ขั้นตอนง่ายๆไม่กี่แก้ไขปัญหาของฉัน:

ฉันสร้างโครงการตัวอย่างโดยใช้คำสั่ง:

react-native init ReactProject1

สารละลาย

การแก้ไขคือการช่วยlocal-cli\runAndroid\adb.jsในการค้นหาadb.exeเช่นเดียวกับlocal-cli\runAndroid\runAndroid.js:

ค้นหาคำสั่ง replace ภายใต้ projectname (ทุกสิ่งที่คุณกำหนด)\node_modules\react-native\local-cli\runAndroid

แทนที่:

const devicesResult = child_process.execSync('adb devices');

โดย:

const devicesResult = child_process.execSync( (process.env.ANDROID_HOME ? process.env.ANDROID_HOME + '/platform-tools/' : '') + 'adb devices');

หลังจากดำเนินการเปลี่ยนข้างต้นแล้วให้เรียกใช้ react-native run-android ใน cmd ของคุณมันจะรวม apk และในตอนแรกลองติดตั้ง js bundle ในเครื่องของคุณ (สำเร็จแล้ว)


0

ฉันลองคำแนะนำหลายข้อด้านบน / ล่าง แต่ท้ายที่สุดปัญหาที่ฉันต้องเผชิญคือสิทธิ์ใช้งานสำหรับยามซึ่งติดตั้งโดยใช้ homebrew ก่อนหน้านี้ หากคุณดูข้อความเทอร์มินัลของคุณในขณะที่พยายามใช้ตัวจำลองและพบข้อผิดพลาด 'การอนุญาตที่ถูกปฏิเสธ' เกี่ยวกับผู้เฝ้าดูพร้อมกับข้อความ "ไม่สามารถรับ BatchedBridge" บนตัวจำลองได้ให้ทำดังนี้

ไปที่/Users/<username>/Library/LaunchAgentsไดเรกทอรีของคุณและเปลี่ยนการตั้งค่าการอนุญาตเพื่อให้ผู้ใช้ของคุณสามารถอ่านและเขียน สิ่งนี้ไม่ว่าคุณจะมีcom.github.facebook.watchman.plistไฟล์อยู่ในนั้นหรือไม่ก็ตาม


0

ฉันพบว่าฉันต้องเพิ่มใน

การอัพเกรดที่ตอบสนองต่อเจ้าของภาษา

เพื่อให้แอปพลิเคชันทำงานอย่างถูกต้อง


0

ฉันได้รับปัญหาเดียวกัน แต่มันเป็นความผิดพลาดที่โง่เขลาจากตัวเอง ...

จากAndroid สตูดิโอผมก็เปิดตัวinstallDebug/installReleaseสคริปต์ gradle จากappProjet แทนrootProjet


0

วิธีที่ง่ายที่สุด!

  • หยุดการสร้างเซิร์ฟเวอร์และสิ้นสุดโครงการ
  • เปิดเทอร์มินัล 'Node.js'
    • นำทางไปยังโฟลเดอร์ที่มีโปรเจ็กต์ 'react-native'
    • พิมพ์ 'react-native start' - เริ่มต้นเซิร์ฟเวอร์เนทีฟแบบตอบโต้ด้วยตนเอง
  • ไปที่เทอร์มินัลแก้ไขรหัสของคุณและพิมพ์ 'react-native run-android

คุณดีไปแล้ว!


0

เพียงแค่รีสตาร์ทระบบของคุณหรือมัดสมบูรณ์ของคุณและปัญหาอาจได้รับการแก้ไข

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.