ไม่สามารถโหลดสคริปต์ตรวจสอบให้แน่ใจว่าคุณกำลังเรียกใช้เซิร์ฟเวอร์ Metro หรือว่าชุด 'index.android.bundle' ของคุณบรรจุอยู่อย่างถูกต้องเพื่อการเปิดตัว


160

react-native run-androidคำสั่งยกเลิกโดยการฝากข้อความไว้ในโปรแกรมจำลอง android ข้อความดังต่อไปนี้:

ไม่สามารถโหลดสคริปต์ตรวจสอบให้แน่ใจว่าคุณกำลังเรียกใช้เซิร์ฟเวอร์ Metro หรือว่าชุด 'index.android.bundle' ของคุณถูกบรรจุอย่างถูกต้องสำหรับการเปิดตัว

ภาพหน้าจอ

ผมทำอะไรผิดหรือเปล่า?


คุณสามารถลองใช้ลิงค์นี้stackoverflow.com/questions/32572399/… ?
errorau

5
ฉันมีปัญหาเดียวกันเพราะอุปกรณ์ของฉันไม่ได้เชื่อมต่อกับอินเทอร์เน็ต
Huo Chhunleng

ข้อผิดพลาดนี้กำลังส่ง: Throw er; // เหตุการณ์ 'error' Unhandled
Saeed

ฉันพบแล้ววางstackoverflow.com/a/58570426/6852210
Alireza

@ โซลูชั่นเบลล์คุณพบวิธีการแก้ปัญหาใด ๆ ?
Hitesh

คำตอบ:


95

คุณยังไม่ได้เริ่มบันเดิล เรียกใช้npm startหรือในไดเรกทอรีรากของโครงการของคุณก่อนreact-native startreact-native run-android


ครั้งแรกที่ฉันเรียกใช้ react-native start แต่เมื่อเรียกใช้ react-native run-android มันจะถูกยกเลิกหลังจาก build successfull เสร็จสมบูรณ์
Belle Solutions

12
คุณต้องมี 2 โหนดคอนโซลพร้อมกัน หนึ่งเริ่มต้นและรันบันเดิลอีกอันหนึ่งรันอีมูเลเตอร์
Nerdragen

27
สำหรับฉันข้อผิดพลาดนี้จะปรากฏขึ้นแม้ว่าจะเริ่ม Bundler
P.Lorand

2
ตรวจสอบว่าพอร์ต 8081 ไม่ถูกบล็อก นอกจากนี้ตรวจสอบให้แน่ใจว่าคุณใช้เทอร์มินัลหนึ่งเพื่อเริ่มต้นบันเดิลรอให้มันเสร็จสิ้นการโหลดกราฟการพึ่งพาจากนั้นเรียกใช้ react-native run-android บนเทอร์มินัลอื่น
Nerdragen

1
ใน windows มันทำงานด้วยตัวเอง แต่ใน linux มันไม่ได้ขอบคุณ! ทำงานได้สมบูรณ์แบบ!
Adrian Serna

62

ขั้นตอนเหล่านี้ช่วยฉันได้มาก:

ขั้นตอนที่ 1:สร้างไดเรกทอรีใน android / app / src / main / assets

คำสั่ง Linux :mkdir android/app/src/main/assets

ขั้นตอนที่ 2:เปลี่ยนชื่อindex.android.js(ในไดเรกทอรีราก) เป็นindex.js( อาจมีindex.jsไฟล์ในกรณีที่คุณไม่จำเป็นต้องเปลี่ยนชื่อ ) จากนั้นเรียกใช้คำสั่งต่อไปนี้:

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: สร้าง APK ของคุณ:react-native run-android

โปรดใช้ index.js ในเวอร์ชั่นล่าสุด

สนุก :)


ที่ตั้งของไฟล์นี้อยู่ในการตอบสนองโครงการพื้นเมืองพื้นเมือง index.android.j
Arbaz.in

@ Arbaz.in ในไดเรกทอรีราก
Saeed

@ Arbaz.in อาจจะมีindex.jsไฟล์ในไดเรกทอรีรากซึ่งในกรณีนี้คุณไม่จำเป็นต้องเปลี่ยนชื่อมัน
Saeed

@Seed ใช่พบ
Arbaz.in

4
สิ่งนี้สามารถเรียกใช้แอพพลิเคชั่นได้ในขณะนี้ แต่จะทำให้การดีบั๊กและการโหลดแบบฮ็อตอย่างไร? นี่ไม่ใช่โซลูชันที่สมบูรณ์แบบสำหรับการทำสิ่งนี้
buddhiv

39

สำหรับฉันข้อผิดพลาดนี้เกิดจากการอัพเกรดของปฏิกิริยาพื้นเมือง

เริ่มต้นด้วย Android 9.0 (ระดับ API 28) การสนับสนุน cleartext จะถูกปิดใช้งานตามค่าเริ่มต้น

หากคุณตรวจสอบการอัปเกรดต่าง ๆ คุณจะต้องสร้างรายการแก้ไขข้อบกพร่อง android/app/src/debug/AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
    <application android:usesCleartextTraffic="true" tools:targetApi="28" tools:ignore="GoogleAppIndexingWarning" />
</manifest>

ดูข้อมูลเพิ่มเติมได้ที่: https://stackoverflow.com/a/50834600/1713216

https://react-native-community.github.io/upgrade-helper/


1
ทำงานให้ฉันใน RN 0.61.3
Żabojad

2
น่าเสียดายที่นี่ไม่ได้ผลสำหรับฉัน ฉันมีสิ่งนี้แล้วและยังคงได้รับข้อผิดพลาดเดิมแม้ว่า Metro Bundler กำลังทำงานอยู่
แอนดรู

ฉันพบว่าบางครั้งฉันต้องการการแทนที่พิเศษหากฉันกำหนด networkSecurityConfig แล้วดูเหมือนว่าจะเป็นการตั้งค่าเหล่านี้ที่ทำให้เกิดปัญหากับฉัน คุณสามารถลองลบการกำหนดค่าความปลอดภัยใด ๆ และระบุandroid:usesCleartextTraffic="true"ในหลักAndroidManifest.xmlดูว่ามันใช้งานได้หรือไม่
ทอม

สิ่งนี้ใช้ได้กับฉันใน RN 0.62
KevinAdu

ฉันมีการตั้งค่าทั้งหมดรวมถึง Android: usesCleartextTraffic = "true" แต่ฉันยังไม่สามารถเรียกใช้แอปบนอุปกรณ์จริงได้
Lucky_girl

25

ทำขั้นตอนที่ 4 และ 5 ก่อนจากนั้นคุณสามารถเรียกใช้โครงการของคุณ หากคุณไม่ได้รับผลลัพธ์ (ด้วยขั้นตอนที่ 4 และ 5) ให้ทำตามขั้นตอนต่อไปนี้

1-ลองปรับลดรุ่นโหนดของคุณ (รุ่นปัจจุบันคือ12.13.1)

  choco uninstall nodejs
  choco install nodejs --version 12.8

2-เพิ่มพา ธ ของโมดูล npm ( C:\Users\your user name\AppData\Roaming\npm) ไปยังตัวแปรระบบแทนตัวแปรผู้ใช้

3-ติดตั้งโต้ตอบพื้นเมืองทั่วโลกโดยใช้คำสั่ง

  npm install -g react-native-cli

4-ไปที่รูทของไดเรกทอรีโครงการของคุณและเรียกใช้คำสั่งต่อไปนี้:

  react-native start

5-เปิดเทอร์มินัลอื่นในรูทของโครงการของคุณและเรียกใช้คำสั่งต่อไปนี้:

   react-native run-android 

แก้ไข:

คุณใช้ Genymotion อยู่หรือเปล่า? ถ้าใช่ทำขั้นตอนต่อไปนี้:

หลังจากขั้นตอนข้างต้นหากคุณได้รับข้อผิดพลาดต่อไปนี้

error Failed to launch emulator. Reason: No emulators found as an output of `emulator -list-avds`.

เปิดจีโนมของคุณและไปที่:

genymotion menu -> Settings -> ADB -> จากนั้นเลือกuse custom android sdk tools(คลิกที่เบราส์เพื่อค้นหาตำแหน่ง sdk)

สุดท้ายให้คุณฉายภาพอีกครั้ง ..


1
12.9 ใช้งานได้กับฉันด้วยขอบคุณฉันได้อัปเกรดเป็นรุ่น 12.13.x แล้วและเริ่มพบปัญหาข้างต้น
Huey Mataruse

ที่มาของคำตอบนี้: github.com/facebook/react-native/issues/26598
Christian Davén

18

คุณสามารถลองต่อไปนี้:

เพิ่มบรรทัดนี้ใน AndroidManifest.xml ของคุณ

<application
[...]
android:usesCleartextTraffic="true"
/>
[...]
</application>

18

ปัญหาที่คล้ายกันเกิดขึ้นกับฉัน
เห็นได้ชัดว่า Mcafee ปิดกั้นพอร์ต 8081 ใช้เวลาหลายชั่วโมงในการคิดออก

ลองใช้:

react-native run-android --port=1234

เมื่อแอปปรากฏขึ้นพร้อมกับข้อผิดพลาดบนอีมูเลเตอร์ให้ไปที่การตั้งค่า dev ( Ctrl+ M)

เปลี่ยน "โฮสต์เซิร์ฟเวอร์ Debug และพอร์ตสำหรับอุปกรณ์" เป็น "localhost: 1234"

ปิดแอพแล้วเริ่มจากแอพ drawer


1
ขอบคุณสำหรับคำแนะนำฉันต้องเปิดพอร์ต 8081 ในไฟร์วอลล์ของฉันและมันก็เริ่มทำงาน
24894

โหวตขึ้นมากสำหรับเรื่องนี้ หากคุณมี Mcafee ฉันจะลองสิ่งนี้มันใช้ได้ผลสำหรับฉัน
ปวย

ขอขอบคุณบันทึกโครงการของฉัน
Rafid

ฉันติดอยู่ที่นี่สองวันคงไม่เคยคิดว่ามันจะเป็นพอร์ตที่ถูกบล็อก! ขอบคุณมาก!
P. Naoum

ฉันพยายามกด localhost: 8081 ในเบราว์เซอร์ แต่ก็ไม่มีโชค การวิจัยเพียงเล็กน้อยและพบว่า macafee ได้บล็อกพอร์ตนั้น ทำตามวิธีของคุณ เริ่มทำงานได้อย่างสมบูรณ์แบบดี
Tushar Jajodia

17

เพียงเพิ่มสาม splash ใน: node_modules \ metro-config \ src \ defaults \ blacklist.js

แทนที่ส่วนนี้:

var sharedBlacklist = [
  /node_modules[\/\\]react[\/\\]dist[\/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];

12

หากคุณมีการกำหนดค่าทุกอย่างถูกต้องลองทำสิ่งนี้:

adb reverse tcp: 8081 tcp: 8081

ทำไม? "เมื่อเครื่องแพ็คเก็ต RN กำลังทำงานจะมีเว็บเซิร์ฟเวอร์ที่ใช้งานได้ที่เบราว์เซอร์ของคุณที่ 127.0.0.1:8081 มันมาจากเซิร์ฟเวอร์นี้ที่บันเดิล JS สำหรับแอปพลิเคชันของคุณให้บริการและรีเฟรชเมื่อคุณทำการเปลี่ยนแปลง โทรศัพท์ของคุณจะไม่สามารถเชื่อมต่อกับที่อยู่นั้นได้ "

เครดิตทั้งหมดถึงSwingline0


คุณกรุณาเพิ่มคำตอบของคุณว่าทำไมจึงควรใช้งานได้และคำสั่งนี้ทำงานอย่างไร
creyD

ใช้เวลาทั้งวันพยายามสลับห้องสมุดและนี่คือปัญหาของฉัน
Adam Katz

10

[คำตอบที่รวดเร็ว]

หลังจากลองแก้ปัญหานี้ในพื้นที่ทำงานของฉันฉันพบวิธีแก้ไข

ข้อผิดพลาดนี้เป็นเพราะมีปัญหากับ Metro โดยใช้การรวมกันของรุ่น NPM และ Node

คุณมี 2 ทางเลือก:

  • ทางเลือก 1:ลองอัปเดตหรือดาวน์เกรด npm และเวอร์ชันโหนด
  • ทางเลือกที่ 2: ไปที่ไฟล์นี้: \node_modules\metro-config\src\defaults\blacklist.jsและเปลี่ยนรหัสนี้:

    var sharedBlacklist = [
      /node_modules[/\\]react[/\\]dist[/\\].*/,
      /website\/node_modules\/.*/,
      /heapCapture\/bundle\.js/,
      /.*\/__tests__\/.*/
    ];

    และเปลี่ยนเป็น:

    var sharedBlacklist = [
      /node_modules[\/\\]react[\/\\]dist[\/\\].*/,
      /website\/node_modules\/.*/,
      /heapCapture\/bundle\.js/,
      /.*\/__tests__\/.*/
    ];

    โปรดทราบว่าหากคุณเรียกใช้npm installหรือyarn installคุณจำเป็นต้องเปลี่ยนรหัสอีกครั้ง


8

สิ่งนี้ใช้ได้สำหรับฉันหลังจากลองหลายวิธี

ในส่วนของไฟล์ node_modules\metro-config\src\defaults\blacklist.js

แทนที่:

var sharedBlacklist = [
  /node_modules[/\\]react[/\\]dist[/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];

ด้วย:

var sharedBlacklist = [
  /node_modules[\/\\]react[\/\\]dist[\/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];

หวังว่านี่จะช่วยได้


ทำงานเหมือนเสน่ห์ขอบคุณ
CésarBermúdez

ทำงานให้ฉันด้วย แต่ทำไมฉันต้องแก้ไขให้ถูกต้อง? เกิดอะไรขึ้น
Mashrur

จากรูปลักษณ์ของมันให้metro-configใช้ \ for path แทน / ซึ่งคำตอบนี้แนะนำให้แก้ไข อย่าทำอย่างนี้ การแก้ไขแพ็กเกจ npm หมายถึงทีมของคุณทั้งหมดต้องทำสิ่งนี้บนเครื่องของพวกเขาใน CI, ในการจัดฉาก, ในการผลิตและทุกครั้งที่ metro-config ออกการปรับปรุง วิธีที่ดีกว่าคือแยก fork-metro บน GitHub ส่งการแก้ไขผลักและส่ง PR เพื่อแก้ไขให้ทุกคน
Cameron Wilby

6

เริ่มต้นด้วย Android 9.0 (ระดับ API 28) การสนับสนุน cleartext จะถูกปิดใช้งานตามค่าเริ่มต้น

นี่คือสิ่งที่คุณต้องทำเพื่อกำจัดปัญหานี้หากคุณทำคำสั่งรันปกติอย่างถูกต้อง

  1. ติดตั้ง NPM
  2. เริ่มต้นปฏิกิริยาพื้นเมือง
  3. react-native run-android

และแก้ไขไฟล์รายการ android ของคุณเช่นนี้

<application
    android:name=".MainApplication"
    android:icon="@mipmap/ic_launcher"
    android:usesCleartextTraffic="true" // add this line with TRUE Value.
android:theme="@style/AppTheme">

5

นอกเวลาทำการค้นหาคำตอบ วิธีแก้ไขคือสร้างโหนดปรับลดรุ่นเป็นเวอร์ชัน 12.4

ในกรณีของฉันฉันรู้ว่าข้อผิดพลาดเกิดขึ้นในรุ่นตอบสนองพื้นเมือง 0.60 กับโหนดรุ่น 12.6


4

ทางออกของฉันนี้เป็นดังนี้:

เริ่มเซิร์ฟเวอร์เมโทร

$ react-native start

เริ่ม Android

$ react-native run-android

หากพบข้อผิดพลาดว่า "พอร์ต 8081 มีการใช้งานแล้ว" คุณสามารถฆ่ากระบวนการนั้นและรันใหม่อีกครั้ง

$ react-native start

ดู การตอบสนองการแก้ไขปัญหาหน้าพื้นเมือง


4

หากคุณอยู่บน linux ให้เปิดเทอร์มินัลจากไดเรกทอรีรากของแอพและเรียกใช้

npm start

จากนั้นเปิดหน้าต่างเทอร์มินัลอื่นแล้วเรียกใช้:

react-native run-android

3

ฉันแค่ต้องการเพิ่มความเป็นไปได้ที่ไม่ชัดเจนซึ่งไม่ครอบคลุมในที่นี้ ฉันกำลังใช้@ react-native-community / netinfoเพื่อตรวจจับการเปลี่ยนแปลงเครือข่ายซึ่งส่วนใหญ่เป็นสถานะเครือข่าย ในการทดสอบสถานะปิดเครือข่ายจำเป็นต้องปิดสวิตช์ WIFI (บนตัวจำลอง) นอกจากนี้ยังตัดสะพานระหว่างตัวจำลองและสภาพแวดล้อมการดีบักได้อย่างมีประสิทธิภาพ ฉันไม่ได้เปิดใช้งาน WIFI อีกครั้งหลังจากการทดสอบของฉันเนื่องจากฉันอยู่ห่างจากคอมพิวเตอร์และลืมมันทันทีเมื่อฉันกลับมา

มีความเป็นไปได้ที่อาจเป็นกรณีสำหรับคนอื่นเช่นกันและคุ้มค่าการตรวจสอบก่อนที่จะทำตามขั้นตอนที่รุนแรงอื่น ๆ


3

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

เพิ่มตัวแปรสภาพแวดล้อม (ADB)

  1. ตัวแปรสภาพแวดล้อมแบบเปิด
  2. เลือกจากตัวแปร PATHเฟรมที่สองและคลิกตัวเลือกแก้ไขด้านล่าง
  3. คลิกที่เพิ่มตัวเลือก
  4. ส่งเส้นทางเครื่องมือแพลตฟอร์ม sdk C: \ Users \ My User \ AppData \ Local \ Android \ Sdk \ platform-tools

หมายเหตุ : หรือขึ้นอยู่กับตำแหน่งที่อยู่ adb.exe ในเครื่องของคุณ

  1. บันทึกการเปลี่ยนแปลง

เรียกใช้ Android build อีกครั้ง

$ react-native run-android

หรือ

$ react-native start

$ react-native run-android

3

ฉันยังต้องเผชิญกับปัญหานี้ ฉันแก้ไขขั้นตอนต่อไปนี้แล้ว

ตรวจสอบเส้นทาง android sdk ในEnvironment Veritable

เพิ่ม ANDROID_HOME = C:\Users\user_name\AppData\Local\Android\SdkในSystem Variable
และ C:\Users\user_name\AppData\Local\Android\Sdk\platform-toolsพา ธ ในSystem Variable

แทนที่ sharedBlacklistเป็นส่วนของรหัสด้านล่าง

var sharedBlacklist = [
  /node_modules[\/\\]react[\/\\]dist[\/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];

ในnode_modules / metro-config / src / default / blacklist.js

จากนั้นเรียกใช้ npx react-native run-android - พอร์ต 9001

Happy Coding .. !


2

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


2

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

 export ANDROID_HOME=/Users/microrentindia/Library/Android/sdk/
 export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

ไม่เคยคิดเรื่องนี้ แต่นี่คือคำตอบสำหรับฉัน
Siraj Alam

2

วิธีแก้ปัญหาสำหรับฉันมีดังต่อไปนี้:

var sharedBlacklist = [
  /node_modules[\/\\]react[\/\\]dist[\/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
]; 

ตัวอย่างรหัสของฉัน


2

อัปเดตส่วนนี้ในบัญชีดำเมโทร

var sharedBlacklist = [
  /node_modules[\/\\]react[\/\\]dist[\/\\].*/,
  /website\/node_modules\/.*/,
  /heapCapture\/bundle\.js/,
  /.*\/__tests__\/.*/
];

2

ฉันพบปัญหาเดียวกันในขณะที่ติดตามการสอนตามพื้นเมือง(การพัฒนาบน Linux และการกำหนดเป้าหมาย Android)

นี้ปัญหาช่วยให้ฉันแก้ไขปัญหาในขั้นตอนต่อไป เรียกใช้คำสั่งต่อไปนี้ตามลำดับด้านล่าง:

  1. (ในไดเรกทอรีโครงการ) mkdir android/app/src/main/assets
  2. 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. react-native run-android

คุณสามารถทำให้ขั้นตอนข้างต้นเป็นแบบอัตโนมัติได้โดยวางไว้ในscriptsส่วนของpackage.jsonสิ่งนี้:

"android-linux": "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 && react-native run-android"

จากนั้นคุณสามารถดำเนินการnpm run android-linuxจากบรรทัดคำสั่งของคุณทุกครั้ง


1

โดยค่าเริ่มต้นเซิร์ฟเวอร์ JavaScript ขนาดเล็กที่เรียกว่า "Metro Server" จะทำงานบนพอร์ต 8081

คุณต้องทำให้พอร์ตนี้พร้อมใช้งานเพื่อให้เซิร์ฟเวอร์นี้เริ่มทำงาน ดังนั้น,

  1. ปล่อยพอร์ต
  2. ปิดอุปกรณ์เสมือนของคุณ
  3. "ทำปฏิกิริยากับระบบรันดั้งเดิมของ Android" อีกครั้ง

วิธีการปลดพอร์ต

http://tenbull.blogspot.com/2019/05/how-to-kill-process-currently-using.html

วิธีการฆ่ากระบวนการในปัจจุบันโดยใช้พอร์ตบน localhost ใน windows?

และที่สำคัญที่สุดคือฉันอัพเกรดเวอร์ชั่นโหนดของฉันจาก 8.x เป็น 10.x (ล่าสุด) ตามที่แนะนำโดย facebook @ https://facebook.github.io/react-native/docs/getting-started


1

สำหรับฉันปัญหานี้เริ่มต้นด้วยการอัพเกรดปฏิกิริยาพื้นเมือง จำเป็นต้องมีการอัพเกรดเพื่อเพิ่มการรองรับ 64 บิต

Before:
-------- 
Environment:
Node: 10.15.0
npm: 6.9.0
Watchman: 4.9.0
Xcode: Not Found
Android Studio: 3.4 AI-183.6156.11.34.5692245

Packages: (wanted => installed)
react: 16.0.0-alpha.12 => 16.0.0-alpha.12
react-native: ~0.55.2 => 0.55.4
react-native-cli: 2.0.1

After:
------
info 
React Native Environment Info:
Binaries:
Node: 10.15.0
npm: 6.9.0
Watchman: 4.9.0
SDKs:
Android SDK:
API Levels: 23, 26, 27, 28
Build Tools: 27.0.3, 28.0.3
System Images: android-28 | Google APIs Intel x86 Atom
IDEs:
Android Studio: 3.4 AI-183.6156.11.34.5692245
Xcode: /undefined - /usr/bin/xcodebuild
npmPackages:
react: ^16.8.6 => 16.9.0 
react-native: 0.59.9 => 0.59.9 
npmGlobalPackages:
create-react-native-app: 2.0.2
react-native-cli: 2.0.1

นอกจากนี้การเปลี่ยนแปลงที่สำคัญอย่างหนึ่งที่ฉันทำสำหรับการอัปเกรดคือ ../android/build/build.gradle

android {
    ...
    defaultConfig {
        ...
        targetSdkVersion 28
        ...
    }
    ...
}

ฉันต้องเปลี่ยน targetSdkVersion จาก 27 เป็น 28 ตามคำเตือนเมื่อฉันพยายามอัปโหลด build (.apk) เป็น goole play console ฉันรู้บ้างเล็กน้อยว่านี่เป็นสาเหตุของข้อผิดพลาดด้านบนสำหรับฉัน คำตอบทันทีโดย @tom และ @tinmarfrutos มีเหตุผลอย่างสมบูรณ์

ฉันแก้ไขปัญหาด้วยการเพิ่ม android: usesCleartextTraffic = "true" ให้กับ android / app / src / debug / AndroidManifest.xml


1

ในกรณีของฉันฉันได้ตั้งค่าพร็อกซีในโปรแกรมจำลองการของฉัน ทำงานเป็นปกติหลังจากฉันลบพร็อกซีนั้น


1

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

ข้อมูลการดีบัก -

ในกรณีที่คุณพบข้อผิดพลาดข้างต้นคุณต้องตรวจสอบสิ่งที่ทำงานในพอร์ต 8081

วิธีที่เร็วที่สุดในการค้นหาที่ใช้คำสั่งต่อไปนี้ในเทอร์มินัล

netstat -aon | findstr 8081

ถ้านั่นแสดงให้คุณเห็นบางสิ่งมันหมายความว่าพอร์ตถูกบล็อก ถ้าเป็นไปได้ให้ปลดพอร์ตนั้นออก

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

react-native run-android --port=9001

ตรวจสอบให้แน่ใจว่าไม่มีการใช้งาน 9001 เช่นกัน :)


1

ลองขั้นตอนเหล่านี้หากคุณลองทุกอย่างที่กล่าวถึงในวิธีแก้ไขปัญหาด้านบน:

  1. สร้างไฟล์ใน android / app / src / main / assets
  2. รันคำสั่งต่อไปนี้:

มัดตอบสนองพื้นเมือง - แพลตฟอร์ม Android - เดฟเท็จ - ผู้เข้าร่วมไฟล์ index.js - กลุ่มเอาท์พุท android / app / src / หลัก / สินทรัพย์ / index.android.bundle - ชุดปลายทาง Android / app / src / ความละเอียด / หลัก

  1. ตอนนี้เรียกใช้คำสั่งของคุณเพื่อสร้างเช่นปฏิกิริยาตอบสนองพื้นเมือง run-android

ว้าวสิ่งนี้ช่วยฉันอคติ ฉันกำลังเตรียมแอพของฉันสำหรับตลาด google play ทั้งหมดที่ฉันทำคือเพิ่มไอคอนสินทรัพย์ใหม่สำหรับ Android และเปลี่ยนเป้าหมายเป็น 28 ฉันต้องเปลี่ยนกลับไปเป็นเวอร์ชั่น v27 และเริ่มทำงานอีกครั้ง ... ฉันไม่รู้ว่าทำไมตอบไม่ทำงานด้วย sdk v28
Michail Pidgorodetskiy

0

ลองทำสิ่งต่อไปนี้

  1. ลบโฟลเดอร์ Android และ IOS
  2. เรียกใช้การดีดออกแบบดั้งเดิม
  3. เรียกใช้ react-native run-android

บางทีหลังจากขั้นตอนก่อนหน้านี้คุณมีการดำเนินการ npm start - --reset-cache

ฉันทำงานฉันหวังว่ามันจะช่วยคุณ


0

หากคุณกำลังทำงานบน Linux OS อาจมีบางกรณีที่เซิร์ฟเวอร์ระยะไกล npm ของคุณไม่ทำงาน เปิดเทอร์มินัลอื่น (พร้อมไดเรกทอรีโครงการ) และเรียกใช้คำสั่งนี้sudo npm startหรือsudo react-native startก่อนที่จะทำsudo react-native run-android


0

ข้อความแสดงข้อผิดพลาดบนอีมูเลเตอร์นั้นเป็นสิ่งที่ทำให้เข้าใจผิด ในกรณีของฉันฉันใช้ Macbook ฉันต้องการเปลี่ยนการอนุญาตบน android / gradlew ด้วยการใช้งาน$ chmod 755 ./gradlewจากนั้นแอปสามารถสร้างและปรับใช้กับ android emulator ได้

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