Android Studio จะเรียกใช้ gradle sync ด้วยตนเองได้อย่างไร?


135

ฉันกำลังแก้ไขปัญหา Gradle ใน Android Studio และดูการอ้างอิงถึง "Run gradle sync" แต่ฉันไม่แน่ใจว่าจะเรียกใช้คำสั่งนี้อย่างไร

ฉันจะเรียกใช้ "Gradle sync" จาก Android studio หรือ Mac terminal ได้อย่างไร

คำตอบ:


213

Android Studio ควรมีปุ่มนี้ในแถบเครื่องมือที่ระบุว่า "Sync project with Gradle Files"

แก้ไข: ฉันไม่รู้ว่ามีการเปลี่ยนแปลงเมื่อใด แต่ตอนนี้ดูเหมือนว่า:

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

แก้ไข: นี่คือสิ่งที่ดูเหมือนใน 3.3.1 หรือโดยไปที่File -> Sync Project กับ Gradle Filesจากแถบเมนูป้อนคำอธิบายภาพที่นี่


2
หายไปใน Adnroid Studio 3.0.1
Roman M

10
@RomanM มันไม่หาย ... มันย้ายไปที่ "ไฟล์" ... ดังนั้นมันอยู่ถัดจากไอคอนบันทึก
W0rmH0le

49

คำเตือน : --recompile-scriptsคำสั่งเลิกใช้งานตั้งแต่gradleเวอร์ชัน 5.0 ในการตรวจสอบของคุณรุ่นเรียกใช้gradlegradle -v

./gradlew --recompile-scripts

มันจะทำการซิงค์โดยไม่ต้องสร้างอะไรเลย


หรือใช้บรรทัดคำสั่งในโปรเจ็กต์รูทของคุณ

./gradlew build

จะซิงค์และสร้างแอปของคุณและใช้เวลานานกว่าการซิงค์ Gradle

หากต้องการดูงาน gradle ที่มีอยู่ทั้งหมดให้ใช้ ./gradlew tasks


2
ใช่ แต่การสร้างทำได้มากกว่าใช่ไหม ความแตกต่างระหว่างการซิงค์และบิลด์คืออะไร?
JohnyTex

การสร้างเป็นงานทั่วไป มันเหมือนกับการใช้ค้อนขนาดใหญ่ทุบน็อต ในโครงการ Android การรันงาน "สร้าง" อาจใช้เวลาตลอดไป!
cesards

10
ฉันใช้ com.android.tools.build:gradle:3.5.1, และไม่มีตัวเลือก - recompile-scripts
geosmart

ตั้งแต่ gradle 5.0 - recompile-scripts ได้กลายเป็นตัวเลือกบรรทัดคำสั่งโดยไม่รู้ตัว
Francis Bacon

28

ใน Android Studio 3.3อยู่ที่นี่:

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

ตามคำตอบhttps://stackoverflow.com/a/49576954/2914140ใน Android Studio 3.1อยู่ที่นี่:

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

File > Sync Project with Gradle Filesคำสั่งนี้จะถูกย้ายไป

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


5
ROFL! ฉันมองหาปุ่มนี้มา 2 วันแล้ว! ขอบคุณ!
swooby

1
@swooby ยินดีต้อนรับครับ บางครั้งฉันก็พบเช่นกันแม้กระทั่งถามคำถามและพวกเขาก็ช่วยได้
CoolMind

ตัวเลือกนี้ดูเหมือนจะไม่มีอีกต่อไป? i.imgur.com/cNFUoxB.png (ภาพหน้าจอเพิ่งถ่ายใน Android Studio 3.5.3)
Venryx

@Venryx มันเป็นเรื่องแปลก ฉันมี 3.6.3 และเมนูนี้ยังคงมีอยู่ ( imgur.com/a/F8FCpvk ) อย่างไรก็ตามควรใช้ปุ่มใน Toolbar จะดีกว่า
CoolMind

เห็นได้ชัดว่าเป็นปัญหากับไฟล์ AndroidStudio / Gradle บางไฟล์ที่ล้าสมัย หลังจากลบออกและนำเข้าโครงการอีกครั้งตัวเลือกจะปรากฏขึ้นอีกครั้ง
Venryx

23

ผู้ที่ชื่นชอบแป้นพิมพ์ลัดสามารถเพิ่มทางลัดสำหรับการเรียกใช้การซิงค์แบบ gradle ด้วยตนเองได้โดยไปที่ไฟล์ -> การตั้งค่า -> คีย์แมป -> ปลั๊กอิน -> รองรับ Android -> ซิงค์โปรเจ็กต์กับไฟล์ gradle (คลิกขวาเพื่อเพิ่มแป้นพิมพ์ลัด) -> นำไปใช้ - > ตกลงและเสร็จสิ้น แป้นพิมพ์ลัด Gradle Syncเลือกปุ่มใดก็ได้ที่สะดวกเป็นทางลัดซิงค์การไล่ระดับสีของคุณซึ่งไม่ขัดแย้งกับปุ่มลัดอื่น ๆ (ฉันได้เลือก Shift + 5 เป็นปุ่มซิงโครไนซ์ไล่ระดับของฉัน) ดังนั้นถัดไปเมื่อคุณต้องการเรียกใช้การซิงค์แบบค่อยเป็นค่อยไปด้วยตนเองเพียงแค่กดแป้นพิมพ์ลัดนี้


2
มันคือ 'Android Studio-> Preferences' สำหรับสองขั้นตอนแรกบน Mac OS X
CCJ

1
+1คำตอบที่ดีที่สุดสำหรับคำถาม
nAkhmedov

คำตอบที่ดีที่สุดไม่จำเป็นต้องค้นหาไอคอน Sync Project จากไอคอนที่คล้ายกันของ android studio เพียงกด Shift + 5 เท่านี้ก็เสร็จแล้ว
เอ่อ. Kaushik Kajavadara

13

ฉันคิดว่ามันหมายถึง Tools> Android> "Sync Project with Gradle Files" จากเมนูหลักของ Android Studio


6
gradle --recompile-scripts

ดูเหมือนจะทำการซิงค์โดยไม่ต้องสร้างอะไรเลย คุณสามารถเปิดใช้งานการสร้างอัตโนมัติโดย

gradle --recompile-scripts --continuous

โปรดดูเอกสารสำหรับข้อมูลเพิ่มเติม:

https://docs.gradle.org/current/userguide/gradle_command_line.html


ยังระบุไว้ที่นี่: docs.gradle.org/current/userguide/upgrading_version_4.html
Luis

gradle 5.1.1 ไม่มีตัวเลือก - recompile-scripts
Francis Bacon


1

คิดว่า./gradlew tasksเหมือนกันกับ Android studio sync. ทำไม? ฉันจะอธิบายมัน

ฉันพบปัญหาเมื่อฉันทดสอบรายงานความครอบคลุมของจาโคโค เมื่อฉันเรียกใช้./gradlew clean :Test:testDebugUnitTestในบรรทัดคำสั่งโดยตรงข้อผิดพลาดปรากฏขึ้น

Error opening zip file or JAR manifest missing : build/tmp/expandedArchives/org.jacoco.agent-0.8.2.jar_5bdiis3s7lm1rcnv0gawjjfxc/jacocoagent.jar

อย่างไรก็ตามถ้าฉันคลิก android studio sync ในตอนแรกมันจะทำงานได้ดี เพราะสิ่งที่build/../jacocoagent.jarปรากฏตามธรรมชาติ ฉันไม่รู้ว่าทำไมอาจมีข้อผิดพลาดในปลั๊กอิน jacoco หน่วยที่ฉันพบว่ากำลังทำงานอยู่.gradlew tasksทำให้โถปรากฏขึ้นเช่นกัน ดังนั้นฉันจะได้ผลลัพธ์เดียวกันในสคริปต์ gralde

นอกจากนี้gradle --recompile-scriptsไม่ได้ผลสำหรับปัญหา


สวัสดีวิคเตอร์ฉันมีปัญหาในการพิสูจน์ว่าคุณผิดนี่คือสิ่งที่ฉันได้รับฉันตั้งค่า configProductID = 11111 จาก gradle.properties จาก build.gradle ของฉันฉันเพิ่มสตริง "resValue" ถ้าฉันสร้าง build clean จาก ADT ทรัพยากร R.string.ProductID สามารถสร้างได้จากนั้นฉันสามารถทำการ gradlew AssembleDebug เพื่อสร้างจากนั้นฉันเปลี่ยนชื่อ config จาก "ProductID" เป็น "myProductID" ฉันจะได้รับข้อผิดพลาดในการทำ 'งาน gradlew' ด้วย ฉันไม่สามารถทำ 'gradlew clean' ได้ทุกอย่างล้มเหลวฉันยังคงดิ้นรนขณะที่ ". \ gradlew.bat --recompile-scripts" ดูเหมือนจะไม่มีอยู่อีกต่อไป?
Yunfei

0

ฉันมีปัญหาอาจพิสูจน์ได้ว่า gradlew clean ไม่เท่ากับ ADT build clean และตอนนี้ฉันกำลังดิ้นรนเพื่อแก้ไข

นี่คือสิ่งที่ฉันได้รับ: ฉันตั้งค่า configProductID = 11111 จาก gradle.properties จาก build.gradle ของฉันฉันเพิ่ม

resValue "string", "ProductID", configProductID

ถ้าฉันสร้าง build clean จาก ADT ทรัพยากร R.string.ProductID จะถูกสร้างขึ้น จากนั้นฉันสามารถทำคำสั่งร้องได้สำเร็จ

gradlew assembleDebug

แต่ในขณะที่ฉันพยายามตั้งค่าเซิร์ฟเวอร์บิลด์ฉันไม่ต้องการความช่วยเหลือจาก ADT IDE ดังนั้นฉันจึงต้องหลีกเลี่ยงการใช้ ADT build clean นี่คือปัญหาของฉัน ตอนนี้ฉันเปลี่ยนชื่อทรัพยากรจาก "ProductID" เป็น "myProductID" ฉันทำ:

gradlew clean

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

PS D:\work\wctposdemo> .\gradlew.bat clean

FAILURE: Build failed with an exception.

* Where:
Build file 'D:\work\wctposdemo\app\build.gradle'

* What went wrong:
Could not compile build file 'D:\work\wctposdemo\app\build.gradle'.
> startup failed:
  General error during semantic analysis: Unsupported class file major version 57

ถ้าฉันลองใช้:

.\gradlew.bat --recompile-scripts

ฉันเพิ่งได้รับข้อผิดพลาดของ

Unknown command-line option '--recompile-scripts'.

ฉันมีข้อความแสดงข้อผิดพลาดเดียวกันเมื่อไม่กี่นาทีที่แล้ว:> ไฟล์คลาสที่ไม่รองรับเวอร์ชันหลัก 57 ปัญหาสำหรับฉันคือ gradle นั้นใช้ไม่ได้กับ openJdk13 ปัจจุบันบน Linux (ฉันใช้ Manjaro ... ซึ่งเป็น Arch-Like Linux) เพื่อแก้ไขปัญหานี้ฉันได้ทำสิ่งนี้แล้ว: ฉันได้ตรวจสอบเวอร์ชัน Java ที่ฉันติดตั้งในพีซีของฉันแล้วและเลือกเวอร์ชัน 8: sudo archlinux-java stauts sudo archlinux-java set java-8-openjdk อาจจะช่วยได้ คุณออกแม้ว่าระบบของคุณดูเหมือนจะเป็น windows ดังนั้นลอง SDK เวอร์ชันอื่น บางทีมันอาจช่วยแก้ปัญหาของคุณได้
suther

สวัสดี @suther ขอบคุณมากสำหรับการตอบกลับของคุณฉันพบสาเหตุที่แท้จริงและแก้ไขแล้วฉันไม่คิดว่าเป็นเพราะเวอร์ชัน JAVA แต่อย่างที่ผมอธิบายว่า "gradlew clean" ไม่เท่ากับ "ADT clean" การแก้ไขของฉันทำได้เพียงแค่ทำ "gradlew: app: dependencies" ซึ่งจะสร้างรหัสทรัพยากรจากไฟล์การกำหนดค่า gradle
yunfei

0

ใครก็ตามที่ต้องการใช้ command line เพื่อซิงค์โปรเจ็กต์กับไฟล์ gradle โปรดทราบ:

ตั้งแต่ Gradle 5.0

อ็อพชันบรรทัดคำสั่ง --recompile-scripts ถูกลบออก

https://docs.gradle.org/current/userguide/command_line_interface.html https://github.com/gradle/gradle/issues/1425

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