ตอบสนองดั้งเดิม: ไม่พบโครงการ Android อาจเรียกใช้ Android แบบตอบสนองก่อน?


90

ฉันมีปัญหาในโครงการ React-Native ซึ่งทำงานได้ดีก่อนหน้านี้ แต่จู่ๆมันก็หยุดทำงาน เมื่อใดก็ตามที่ฉันใช้คำสั่ง:

react-native run-android

ฉันได้รับข้อผิดพลาด :

ไม่พบโครงการ Android อาจเรียกใช้ Android แบบตอบสนองก่อน?

ฉันพยายามวิ่ง:

react-native android

แต่มันบอกว่า:

Unrecognized command 'android' Run react-native --help to see list of all available commands

หลังจากลอง:

D:\ProjectRoot\ReactNativeProjects\AwesomeProject>react-native eject

ข้อผิดพลาดที่ส่งกลับคือ:

การสแกนโฟลเดอร์สำหรับ symlink ใน D: \ ProjectRoot \ ReactNativeProjects \ AwesomeProject \ node_modules (48ms) App nameต้องกำหนดไว้ในapp.jsonไฟล์ config เพื่อกำหนดชื่อโปรเจ็กต์ ต้องไม่มีช่องว่างหรือขีดกลาง

นี่คือไฟล์ app.json:

{
  "expo": {
    "name": "AwesomeProject",
    "description": "A very interesting project.",
    "slug": "AwesomeProject",
    "privacy": "public",
    "sdkVersion": "30.0.0",
    "platforms": ["ios", "android"],
    "ios": {
      "supportsTablet": true
    },
    "android": {
      "package": "com.project.first"
    },
    "version": "1.0.0",
    "orientation": "portrait",
    "icon": "./assets/images/icon.png",
    "splash": {
      "image": "./assets/images/splash.png",
      "resizeMode": "contain",
      "backgroundColor": "#ffffff"
    },
    "updates": {
      "fallbackToCacheTimeout": 0
    },
    "assetBundlePatterns": [
      "**/*"
    ]
  }
}

1
หากโฟลเดอร์ android หายไปในคำสั่ง root ให้เรียกใช้ react-native eject
Khurshid Ansari

1
@Khurshid Ansari โซลูชันของคุณไม่ทำงานเนื่องจากมีข้อผิดพลาดเกิดขึ้น: "ต้องกำหนดชื่อแอปในไฟล์ config app.json เพื่อกำหนดชื่อโครงการ" แม้ว่าจะมีการกำหนดชื่อแล้วก็ตาม โปรดดูคำถามที่อัปเดต
Abhinav Saxena

คำตอบ:


156

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

หากต้องการแก้ไขปัญหาโปรดอัปเกรดแพ็กเกจตอบสนองดั้งเดิม

  1. ไปที่รูทโปรเจ็กต์

  2. อัปเกรดแพ็กเกจ React native ในCommand Promptโดยพิมพ์:

    react-native upgrade.

  3. แล้วยอมรับเพื่ออัปเดตทุกไฟล์โดยพิมพ์y (Yes)ในCommand Prompt

อ้างอิง: https://github.com/facebook/react-native/issues/9312


9
บันทึกวันนี้ :)
มูฮัมหมัด

พบแพ็คเกจเนทีฟของ React ที่ไหน โปรดระบุขั้นตอนที่ชัดเจน
Lutaaya Huzaifah Idris

@LutaayaHuzaifahIdris ดังที่ได้กล่าวไว้ในคำตอบแพ็คเกจเนทีฟตอบสนองสามารถอัพเกรดได้บนรูทโปรเจ็กต์ ดังนั้นเปิดพรอมต์คำสั่งและไปที่รูทโปรเจ็กต์ จากนั้นอัปเกรดแพ็กเกจตอบสนองดั้งเดิม
udai

มันได้รับการอัพเกรด react-native ซึ่งฉันไม่ต้องการ
Khurshid Ansari

โซลูชันการทำงานของฉันอยู่ด้านล่างไม่มีวิธีใดข้างต้นที่ใช้ได้กับฉัน :: 1. เปิดตัวจัดการ AVD ใน Android Studio และเรียกใช้อุปกรณ์เสมือน (คุณสามารถปิด AS ได้ในภายหลัง) 2. CMD ลงในโฟลเดอร์โครงการของคุณและพิมพ์ 'expo start' 3. เมื่องานเอ็กซ์โปเริ่มต้นแล้วให้เลือกตัวเลือกที่ 2 ซึ่งเป็น "กด a สำหรับโปรแกรมจำลอง Android" มันจะติดตั้งงานแสดงสินค้าบนอุปกรณ์เสมือนและคุณสามารถทดสอบได้จากที่นั่น
Paul Gwamanda

24

เปิด React Native Project Root Directory และค้นหา android -> app -> build -> intermediates -> sign_config -> debug -> out -> sign-config.json ลบการลงนาม-config.json ไฟล์นี้ลองอีกครั้ง

หรือ

1) บางครั้งถ้าเรามี react native เวอร์ชันเก่าและแพ็คเกจที่ติดตั้งใหม่บางตัวก็ไม่รองรับเวอร์ชันเก่า จากนั้นคุณต้องอัปเดตโครงการ react native โดยใช้คำสั่ง react-native upgrade

  1. หลังจากอัปเดตโครงการปัจจุบันเป็นเวอร์ชันใหม่เสร็จแล้วข้อผิดพลาดนี้ควรได้รับการแก้ไข

23

ฉันรู้ว่ามันเป็นคำถามเก่า แต่วิธีแก้ปัญหาเหล่านั้นไม่ได้ผลสำหรับฉันและอาจมีคนอื่นเป็นเหมือนฉัน ฉันแก้ปัญหาที่เรียกใช้คำสั่งนี้มาก่อนrun-android

react-native eject

1
ด้วยเหตุผลบางอย่างนี่ก็เป็นเคล็ดลับสำหรับฉันเช่นกันฉันได้ลองใช้ react native upgrade เวอร์ชันที่ใหม่กว่าโดยใช้ "react-native-git-upgrade" ตามที่แนะนำเมื่อคุณเรียกใช้ "react-native upgrade" ซึ่งไม่ได้ผลสำหรับฉัน
Zaid Qureshi

2
คำสั่งนี้สร้างโฟลเดอร์ android และ ios ในโครงการของคุณอีกครั้ง
Khurshid Ansari

1
ฉันคิดว่านี่เป็นคำตอบที่เหมาะสม ไม่ใช่เพียงเพราะมันใช้ได้ผลสำหรับฉัน แต่เนื่องจากจากความเข้าใจของฉันจากเอกสารนี่เป็นวิธีที่ตั้งใจจะทำดังนั้นจึงไม่มีผลข้างเคียงอื่น ๆ
Daan

10
ejectคำสั่งได้ถูกลบออกreact-nativeจาก
Phantom Watson

9

อย่าลืมเริ่มโครงการโดยใช้คำสั่ง (ไม่ใช่งานแสดงสินค้า):

react-native init <your-project-name>

หากโฟลเดอร์ที่มีอยู่ให้ทำตาม:

ตอบสนองพื้นเมืองดีดออก


ในเวอร์ชันล่าสุดของ react-native คำแนะนำนี้เกิดขึ้นเมื่อคุณพยายามออกคำสั่ง:

react-native eject

การสแกนโฟลเดอร์สำหรับ symlink ใน D: \ ProjectRoot \ ReactNativeProjects \ AwesomeProject \ node_modules (48ms) App nameต้องกำหนดไว้ในapp.jsonไฟล์ config เพื่อกำหนดชื่อโปรเจ็กต์ ต้องไม่มีช่องว่างหรือขีดกลาง

ตอนนี้เมื่อคุณออกคำสั่งต่อไปนี้:

D:\ProjectRoot\ReactNativeProjects\AwesomeProject>react-native upgrade

สิ่งต่อไปนี้จะปรากฏขึ้น:

การสแกนโฟลเดอร์สำหรับ symlink ใน D: \ ProjectRoot \ ReactNativeProjects \ AwesomeProject \ node_modules (56ms) คุณควรพิจารณาใช้เครื่องมืออัพเกรดใหม่ที่ใช้ Git ทำให้การอัปเกรดง่ายขึ้นโดยการแก้ไขความขัดแย้งส่วนใหญ่โดยอัตโนมัติ วิธีใช้: - กลับไปใช้ React Native เวอร์ชันเก่า - เรียกใช้ "npm install -g react-native-git-upgrade" - เรียกใช้ "react-native-git-upgrade" ดูhttps://facebook.github.io /react-native/docs/upgrading.html เวอร์ชัน react-native ใน "package.json" ไม่ตรงกับเวอร์ชันที่ติดตั้งใน "node_modules" ลองเรียกใช้ "npm install" เพื่อแก้ไขปัญหานี้ การยกเลิก

ในคำแนะนำคำสั่ง react-native ของ Facebook มีวิธีแก้ปัญหาที่ชัดเจน

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

อีกวิธีหนึ่ง:

react-native: run-androidไม่รู้จักคำสั่ง อาจเกิดจากการติดตั้ง npm

โปรดดู:

วิธีแก้ปัญหา "Expo: ไม่พบโมดูล LogReporter"


คำตอบที่ยอมรับสำหรับฉัน +10 ตัวแทน ถึง @Abhinav
Saeed

8

ฉันทำแบบนี้ ... ได้ผล !!

  1. ในระยะราก CMD โครงการตอบสนองพื้นเมืองอัพเกรด
  2. หากคุณยังคงได้รับปัญหาตรวจสอบให้แน่ใจว่าคุณมีreact-native ใน dependencies json ใน package.jsonแล้วเพิ่มถ้าไม่
  3. หากคุณยังคงพบปัญหาให้รับเวอร์ชัน react native ใน cmd โดยใช้react-native -vและตรวจสอบว่าค่าที่ส่งคืนใน cmd และ package.json เหมือนกันหรือไม่ อัพเดต package.json ด้วยค่าที่ส่งคืนใน cmd

ปัญหาของฉันได้รับการแก้ไขแล้ว


6

เปิด Command Prompt ในฐานะผู้ดูแลระบบและไปที่โฟลเดอร์โครงการเรียกใช้ android (npx react-native run-android)


4

ลบไฟล์: React Native Project Root Directory และค้นหา android -> app -> build -> intermediates -> sign_config -> debug -> out -> sign-config.json


4

ฉันต้อง Restyle AndroidManifest.xml ของฉันเพราะฉันมีข้อผิดพลาดทางไวยากรณ์ที่ใดที่หนึ่ง (ฉันมี "/" เพิ่มเติมอยู่ที่ไหนสักแห่ง) ตอนนี้ได้รับการแก้ไขแล้ว ระวังไวยากรณ์ของคุณให้มาก ...


นี่คือคำตอบอย่างไร?
theWellHopeErr

3

เราพบปัญหานี้เนื่องจากไฟล์จากโฟลเดอร์android gradlewและgradlew.bat (สคริปต์เริ่มต้น Gradle สำหรับ UN * X, Windows ตามลำดับ) เข้าสู่ไฟล์. gitignore ส่วนกลางดังนั้นจึงไม่ถูกนำเสนอในสภาพแวดล้อมท้องถิ่น

จริงๆแล้วการรันคำสั่งreact-native upgrade จะคืนค่าไฟล์เหล่านั้นดังนั้นจึงสามารถแก้ไขปัญหาได้


3

ในฐานะที่เป็นส่วนเติมเต็มในกรณีที่ไม่พบคำสั่ง react-native คุณควรติดตั้ง react-native CLI:

npm install -g react-native-cli

จากนั้นคุณสามารถทำตามขั้นตอนที่ผู้คนกล่าวไว้ข้างต้น

รายละเอียดเพิ่มเติม: react-native: ไม่พบคำสั่ง


2

หากคุณเริ่มโครงการโดยทำตาม

npm install -g create-react-native-app
create-react-native-app MyReactNative
npm install -g react-native-cli
npm start

หลังจากนี้คุณสามารถเผชิญกับปัญหาที่กล่าวถึงข้างต้นได้ดังนั้นวิธีแก้ปัญหาคือ:

npm run eject

2

เปิด React Native Project Root Directory และค้นหา android -> app -> build -> intermediates -> sign_config -> debug -> out -> sign-config.json

ลบไฟล์แล้วลองอีกครั้ง


2

วันนี้ฉันประสบปัญหานี้และไม่มีวิธีแก้ไขใดที่ใช้ได้ผลสำหรับฉันฉันจึงพบวิธีอื่น

AndroidManifest.xml ที่จัดรูปแบบไม่ถูกต้องจะทำให้เกิดปัญหานี้บางทีคุณอาจตั้งค่าหน้าจอเริ่มต้นเหมือนฉันในวันนี้และไม่ได้ฟอร์แมต AndroidManifest ด้วยวิธีที่ถูกต้อง


1

ที่นี่ app.json ไม่มีชื่อ แต่มี config ที่เกี่ยวข้องกับ expo เพิ่มช่องชื่อและชื่อที่แสดงใน app.json

app.json (สองบรรทัดแรก):

{
"name": "AwesomeProject",
"displayName": "Awesome Project",
"expo": {
    "name": "AwesomeProject",
    "description": "A very interesting project.",
    "slug": "AwesomeProject",
    "privacy": "public",
    "sdkVersion": "30.0.0",
    "platforms": ["ios", "android"],
    "ios": {
      "supportsTablet": true
    },
    "android": {
      "package": "com.project.first"
    },
    "version": "1.0.0",
    "orientation": "portrait",
    "icon": "./assets/images/icon.png",
    "splash": {
      "image": "./assets/images/splash.png",
      "resizeMode": "contain",
      "backgroundColor": "#ffffff"
    },
    "updates": {
      "fallbackToCacheTimeout": 0
    },
    "assetBundlePatterns": [
      "**/*"
    ]
  }
}

หลังจากนี้ให้เรียกใช้:

$ react-native eject

ข้อมูลการสร้างโฟลเดอร์ iOS

ข้อมูลการสร้างโฟลเดอร์ Android

ไม่จำเป็นต้องทำการอัพเกรดแบบตอบสนอง


ที่จริงแล้ว "expo eject" ก็ทำงานได้ดีกว่าเช่นกัน มันทำให้ฉันมีตัวเลือกและอัปเดต app.json และสร้างไดเรกทอรี android / ios
hp2017

1

การเรียกใช้ Terminal ในฐานะผู้ดูแลระบบใน Windows เป็นเคล็ดลับสำหรับฉัน ... วิธีแก้ปัญหาอื่น ๆ ไม่ได้ผล


นี่เป็นเพียงการกล่าวขอบคุณคำตอบที่มีอยู่ของ karthik mano ไม่ใช่เหรอ? หากไม่โปรดอธิบายให้ชัดเจนยิ่งขึ้นว่าคำตอบนี้ให้ข้อมูลเชิงลึกเพิ่มเติมอย่างไร
Yunnosch

1

ฉันใช้ Android Studio (ไม่ใช่งานแสดงสินค้า) และใช้ได้กับฉัน

react-native init <your-project-name>

1

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


มีคำตอบที่คล้ายกันมากมายสำหรับคำถามเดียวกันนี้ แทนที่จะเพิ่มคำตอบคุณสามารถเพิ่มคะแนนคำตอบที่มีอยู่ได้หากคำตอบนั้นช่วยคุณได้
Deepak Terse


1

ลบการลงนาม config.jsonต่อไปลองอีกครั้งreact-native run-android

sign-config.json file Path: android -> app -> build -> intermediates -> sign_config -> debug -> out -> sign-config.json


1

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


ฉันมีปัญหาคล้ายกันกับคำถามข้างต้นและเริ่มต้นเทอร์มินัลด้วยสิทธิ์ผู้ดูแลระบบ (บน Windows) ข้อผิดพลาดนี้หายไป
LakeRunner

1

ในกรณีของฉันฉันไม่มีสิทธิ์ที่ถูกต้องสำหรับโฟลเดอร์โครงการของฉัน

หากเป็นกรณีของคุณให้คลิกด้วยปุ่มขวาบนโฟลเดอร์> คุณสมบัติ> ความปลอดภัย> ขั้นสูงจากนั้นเปลี่ยนการเป็นเจ้าของโฟลเดอร์ให้กับผู้ใช้ของคุณรวมถึงโฟลเดอร์ย่อย ที่ควรทำ


1

สำหรับฉัน "rm -rf android / app / build /" ใช้งานได้

เรียกใช้คำสั่งของคุณด้วย "--verbose" ฉันได้รับข้อผิดพลาดว่ามันไม่สามารถอ่านไฟล์ได้ (ใน android / app / build / created / not_namespaced_r_class_sources /) ฉันลบโฟลเดอร์นี้และใช้งานได้


0

โซลูชันการทำงานของฉันอยู่ด้านล่างไม่มีวิธีใดที่ใช้ได้ผลสำหรับฉัน:

ซีดีลงในโฟลเดอร์โครงการของคุณแล้วพิมพ์ expo start --android

หรือทางยาว:

  1. เปิดตัวจัดการ AVD ใน Android Studio และเรียกใช้อุปกรณ์เสมือน (คุณสามารถปิด AS ได้ในภายหลัง)
  2. CMD ลงในโฟลเดอร์โครงการของคุณแล้วพิมพ์ 'expo start'
  3. เมื่อเริ่มงาน Expo แล้วให้เลือกตัวเลือกที่ 2 ซึ่งก็คือ "กด a สำหรับโปรแกรมจำลอง Android"

มันจะติดตั้งงานแสดงสินค้าบนอุปกรณ์เสมือนและคุณสามารถทดสอบได้จากที่นั่น


0

เมื่อฉันวิ่งreact-native ejectฉันได้รับข้อผิดพลาดนี้:

Both the iOS and Android folders already exist! Please delete `ios` and/or `android` before ejecting.
  • ลบMyProject/androidโฟลเดอร์
  • เรียกใช้react-native ejectสิ่งนี้สร้างandroidโฟลเดอร์

  • จากนั้นเรียกใช้react-native run-androidเพื่อสร้าง Android


0

คุณควรพิจารณาใช้เครื่องมืออัปเกรดใหม่ที่ใช้ Git ทำให้การอัปเกรดง่ายขึ้นโดยการแก้ไขความขัดแย้งส่วนใหญ่โดยอัตโนมัติ วิธีใช้: - กลับไปใช้ React Native เวอร์ชันเก่า - เรียกใช้ "npm install -g react-native-git-upgrade" - เรียกใช้ "react-native-git-upgrade" ดูhttps://facebook.github.io /react-native/docs/upgrading.html


0

หากคุณสร้างโปรเจ็กต์ด้วยexpoคำสั่งเช่นexpo init projectnameหลังจากนั้นคุณต้องดีดโปรเจ็กต์ของคุณ:

expo eject

หากคุณสร้างโครงการโดยreact-native init projectNameคุณต้องใช้

react-native eject

คำสั่ง eject ถูกลบออกจาก react-native github.com/react-native-community/cli/pull/275
Michimcchicken

0

อาจจะสายเกินไปฉันเปลี่ยนAndroidโฟลเดอร์จากไฟล์สำรอง มันได้ผลสำหรับฉัน



0

ฉันมีข้อผิดพลาดเดียวกันในโครงการ (สร้างด้วย React Native CLI):

ป้อนคำอธิบายภาพที่นี่

ปรากฎว่าฉันมีข้อผิดพลาดทางไวยากรณ์ในไฟล์รายการ android ของฉัน (android / app / src / main / AndroidManifest.xml)


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