Android Studio cara menjalankan sinkronisasi gradle secara manual?

135

Saya men-debug masalah Gradle di Android Studio dan melihat referensi untuk "Jalankan sinkronisasi gradle", tapi saya tidak yakin bagaimana menjalankan perintah ini.

Bagaimana cara menjalankan "Sinkronisasi tingkat" dari Android studio atau terminal Mac?

Alex Stone
sumber

Jawaban:

212

Studio Android harus memiliki tombol ini di bilah alat bertanda "Sinkronkan proyek dengan File Gradle"

EDIT: Saya tidak tahu kapan itu diubah tetapi sekarang terlihat seperti ini:

masukkan deskripsi gambar di sini

EDIT: Ini seperti apa pada 3.3.1 ATAU dengan membuka File -> Sync Project dengan Gradle Files dari menubar.masukkan deskripsi gambar di sini

Cai
sumber
2
hilang di Adnroid Studio 3.0.1
Roman M
10
@RomanM Itu tidak hilang ... Itu pindah ke "File" ... Jadi, itu di sebelah menyimpan ikon
W0rmH0le
49

PERINGATAN : --recompile-scriptsperintah telah ditinggalkan sejak gradleversi 5.0. Untuk memeriksa gradleversi Anda , jalankan gradle -v.

./gradlew --recompile-scripts

itu akan melakukan sinkronisasi tanpa membangun apa pun.


Atau, dengan baris perintah di proyek root Anda

./gradlew build

Ini akan menyinkronkan dan membangun aplikasi Anda, dan membutuhkan waktu lebih lama dari sekadar sinkronisasi Gradle

Untuk melihat semua tugas gradle yang tersedia, gunakan ./gradlew tasks

Hugo Gresse
sumber
2
Ya tapi build tidak lebih benar? Apa perbedaan antara sinkronisasi dan pembangunan?
JohnyTex
build adalah tugas yang sangat umum. itu seperti menggunakan palu untuk memecahkan kacang. Pada proyek Android, menjalankan tugas "build" bisa berlangsung selamanya!
cesards
10
Saya menggunakan com.android.tools.build:gradle:3.5.1,000 dan tidak memiliki opsi --recompile-scripts
geosmart
sejak gradle 5.0, --recompile-scripts telah menjadi opsi baris perintah yang tidak diketahui,
Francis Bacon
28

Di Android Studio 3.3 ada di sini:

masukkan deskripsi gambar di sini

Menurut jawaban https://stackoverflow.com/a/49576954/2914140 di Android Studio 3.1 ada di sini:

masukkan deskripsi gambar di sini

Perintah ini dipindahkan ke File > Sync Project with Gradle Files.

masukkan deskripsi gambar di sini

CoolMind
sumber
5
ROFL! Saya telah mencari 2 hari untuk tombol ini! Terima kasih!
swooby
1
@swooby, Anda dipersilakan. Saya juga menemukannya selama beberapa waktu, bahkan mengajukan pertanyaan, dan mereka membantu.
CoolMind
Opsi ini tampaknya tidak ada lagi? i.imgur.com/cNFUoxB.png (tangkapan layar baru saja diambil, di Android Studio 3.5.3)
Venryx
@Venryx, ini aneh. Saya memiliki 3.6.3 dan menu ini masih ada ( imgur.com/a/F8FCpvk ). Pokoknya, lebih baik menggunakan tombol di Toolbar.
CoolMind
Tampaknya masalah dengan beberapa file AndroidStudio / Gradle sudah usang. Setelah menghapus dan mengimpor kembali proyek, opsi muncul lagi.
Venryx
23

Pencinta pintasan keyboard dapat menambahkan pintasan untuk menjalankan sinkronisasi gradle secara manual dengan membuka File -> Settings -> Keymap -> Plugins -> Dukungan Android -> Sinkronisasi Proyek dengan file gradle (Klik kanan untuk menambahkan pintasan keyboard) -> Terapkan - > OK dan kamu sudah selesai. Pintasan keyboard Gradle SyncPilih tombol praktis apa pun sebagai pintasan sinkronisasi gradle Anda yang tidak bertentangan dengan tombol pintas lainnya, (Saya telah memilih Shift + 5 sebagai kunci sinkronisasi gradle saya), jadi selanjutnya ketika Anda ingin menjalankan sinkronisasi gradle secara manual cukup tekan tombol pintas keyboard ini.

Amrit Pal Singh
sumber
2
ini 'Android Studio-> Preferences' untuk dua langkah pertama di Mac OS X
CCJ
1
+1 jawaban terbaik untuk pertanyaan
nAkhmedov
Jawaban terbaik, Tidak perlu menemukan ikon Sync Project dari ikon serupa dari studio android. Cukup tekan Shift + 5 dan Anda selesai.
Er. Kaushik Kajavadara
13

Saya kira itu merujuk ke Tools> Android> "Sync Project with Gradle Files" dari menu utama Android Studio.

CommonsWare
sumber
6
gradle --recompile-scripts

tampaknya melakukan sinkronisasi tanpa membangun apa pun. Anda dapat mengaktifkan bangunan otomatis dengan

gradle --recompile-scripts --continuous

Silakan merujuk dokumen untuk info lebih lanjut:

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

oc1d
sumber
gradle 5.1.1 tidak memiliki opsi --recompile-scripts
Francis Bacon
2

Pintasan (Ubuntu, Windows):

Ctrl + F5

Akan menyinkronkan proyek dengan file Gradle.

Andrey
sumber
1
pada pintasan MacOS tidak didefinisikan, seseorang harus menetapkannya. Dijelaskan di bawah ini stackoverflow.com/a/29642935/1839096
Silwester
1

Saya pikir ./gradlew taskssama dengan Android studio sync. Mengapa? Saya akan menjelaskannya.

Saya menemui masalah ketika saya menguji laporan cakupan jacoco. Ketika saya menjalankan ./gradlew clean :Test:testDebugUnitTestbaris perintah secara langsung, kesalahan muncul.

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

Namun, jika saya mengklik sinkronisasi studio android terlebih dahulu, itu berjalan OK. Karena build/../jacocoagent.jartampil alami. Saya tidak tahu mengapa, mungkin ada bug di plugin jacoco. Unit yang saya temukan berjalan .gradlew tasksmembuat tabung juga muncul. Jadi saya bisa mendapatkan hasil yang sama dalam skrip gralde.

Selain itu, gradle --recompile-scriptstidak berfungsi untuk masalah tersebut.

Victor Choy
sumber
Halo Victor, saya mempunyai masalah dapat membuktikan Anda salah, Inilah yang saya dapatkan, saya menetapkan configProductID = 11111 dari gradle.properties saya, dari build.gradle saya, saya menambahkan "resValue" string ". Jika saya melakukan build clean dari ADT, sumber daya R.string.ProductID dapat dihasilkan. Kemudian saya dapat melakukan gradlew assembleDebug untuk membangun. Kemudian saya mengubah nama konfigurasi saya dari "ProductID" menjadi "myProductID", saya akan mendapatkan kesalahan untuk melakukan 'tugas gradlew', juga Saya tidak bisa melakukan 'gradlew clean', semuanya hanya gagal. Saya masih berjuang. Karena ". \ Gradlew.bat --recompile-scripts" sepertinya tidak ada lagi?
yunfei
0

Saya memiliki masalah mungkin bukti gradlew clean tidak sama dengan ADT build clean. Dan sekarang saya berjuang untuk memperbaikinya.

Inilah yang saya dapatkan: Saya menetapkan configProductID = 11111 dari gradle.properties saya, dari build.gradle saya, saya tambahkan

resValue "string", "ProductID", configProductID

Jika saya melakukan build clean dari ADT, resource R.string.ProductID dapat dihasilkan. Maka saya bisa melakukan perintah di bawah dengan sukses.

gradlew assembleDebug

Tapi, ketika saya mencoba men-setup server build, saya tidak ingin bantuan dari ADT IDE, jadi saya harus menghindari penggunaan ADT build clean. Inilah masalah saya. Sekarang saya mengubah nama sumber daya saya dari "ProductID" menjadi "myProductID", saya lakukan:

gradlew clean

Saya mendapatkan kesalahan

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

Jika saya coba dengan:

.\gradlew.bat --recompile-scripts

Saya hanya mendapatkan kesalahan

Unknown command-line option '--recompile-scripts'.
yunfei
sumber
Saya memiliki pesan kesalahan yang sama beberapa menit yang lalu:> File utama versi tidak didukung versi utama 57 Masalahnya bagi saya adalah, gradle itu tidak berfungsi dengan openJdk13 saat ini di Linux (saya menggunakan Manjaro ... sebuah Arch-Like Linux). Jadi untuk memperbaikinya, saya telah melakukan ini: Saya telah memeriksa versi Java mana yang telah saya instal di pc saya, dan memilih versi 8: sudo archlinux-java stauts sudo archlinux-java set java-8-openjdk Mungkin ini membantu Anda keluar, bahkan jika sistem Anda tampaknya windows. Jadi coba Versi SDK lainnya. Mungkin itu juga menyelesaikan masalah Anda.
suther
Hai @suther, terima kasih banyak atas balasan Anda, saya telah menemukan akar penyebabnya dan memperbaikinya, saya rasa itu bukan karena versi JAVA. Tapi seperti yang saya jelaskan "gradlew clean" tidak sama dengan "ADT clean". Perbaikan saya cukup lakukan "gradlew: app: dependencies", ini akan menghasilkan ID sumber daya dari file konfigurasi gradle.
yunfei