Sejak plugin Android gradle 2.2-alpha4 :
Gradle akan berusaha mengunduh paket SDK yang hilang yang bergantung pada proyek
Yang luar biasa keren dan diketahui sebagai proyek JakeWharton .
Tetapi, untuk mengunduh perpustakaan SDK Anda perlu: menerima perjanjian lisensi atau gradle memberi tahu Anda:
Anda belum menerima perjanjian lisensi dari komponen SDK berikut: [Android SDK Build-Tools 24, Android SDK Platform 24]. Sebelum membangun proyek Anda, Anda harus menerima perjanjian lisensi dan menyelesaikan pemasangan komponen yang hilang menggunakan Android Studio SDK Manager. Atau, untuk mempelajari cara mentransfer perjanjian lisensi dari satu workstation ke workstation lain, kunjungi http://d.android.com/r/studio-ui/export-licenses.html
Dan ini adalah masalah karena saya ingin menginstal semua dependensi SDK saat melakukan gradle build
.
Saya mencari solusi untuk secara otomatis menerima semua lisensi. Mungkin skrip gradle? Apakah Anda punya ide?
Terima kasih!
[EDIT]
Solusi untuk mengeksekusi:
android update sdk --no-ui --filter build-tools-24.0.0,android-24,extra-android-m2repository
Dan instal secara manual, tetapi itu adalah tujuan fitur baru Gradle untuk melakukannya.
[EDIT 2]
Solusi yang lebih baik adalah dengan menggunakan sdkmananger:
yes | sdkmanager --licenses
echo y |
di depan perintah itu untuk secara otomatis menerima lisensi. Berguna saat berjalan pada kotak CI tanpa kepala :)~/.android/tools/android update sdk --no-ui --filter build-tools-25.0.0,android-25,extra-android-m2repository
karenaandroid
alat itu dilokalkan ke rumah saya$ANDROID_SDK_PATH
untuk jalur akar sebenarnya di mana Anda telah menginstal SDK (yaitu:/opt/android-sdk
), atau hanya menempatkan path langsung (yaitu:yes | sdkmanager --licenses --sdk_root=/opt/android-sdk
)Jawaban:
AndroidSDK akhirnya dapat menerima lisensi.
EDIT:
seperti yang ditunjukkan dalam komentar oleh @MoOx, di macOS, Anda bisa melakukannya
yes | sudo ~/Library/Android/sdk/tools/bin/sdkmanager --licenses
seperti yang ditunjukkan dalam komentar oleh @pho, @mikebridge dan @ Noitidart pada Windows, Anda dapat melakukannya
cmd.exe ""/K"%LocalAppData%\Android\sdk\tools\bin\sdkmanager.bat --licenses"
pastikan untuk menginstal java sebelumnya
sumber
C:\Users\x1\AppData\Local\Android\sdk\tools\android
muncul membuka GUI dan kemudian menginstal hilang lalu klik "Terima Liscenses" dalam dialog baru yang muncul.yes | sudo ~/Library/Android/sdk/tools/bin/sdkmanager --licenses
Saya mengalami ini dengan
alpha5
pratinjau.Jake Wharton menunjukkan kepada saya bahwa Anda saat ini dapat menggunakan
untuk membuat ulang
$ANDROID_HOME/license
folder saat ini di mesin Anda. Ini akan memiliki hasil yang sama dengan proses yang diuraikan dalam tautan pesan kesalahan ( http://tools.android.com/tech-docs/new-build-system/license ).Hash adalah sha1s dari teks lisensi, yang saya bayangkan akan diperbarui secara berkala, jadi kode ini hanya akan bekerja begitu lama :)
Saya terkejut pada awalnya bahwa ini tidak bekerja di luar kotak, bahkan ketika saya telah menerima lisensi untuk komponen yang disebutkan melalui
android
alat, tetapi itu menunjukkan kepada saya bahwa manajer SDK di AS yang membuat/licenses
folder.Saya kira alat resmi tidak ingin melewati langkah ini karena alasan hukum.
Membaca ulang catatan rilis yang dinyatakannya
Yang tidak berarti itu akan berfungsi jika Anda belum menginstal alat android dan telah menerima lisensi terbaru.
EDIT: Mengatakan itu, masih tidak berfungsi pada kotak gubuntu pengujian saya sampai saya menautkan SDK ke AS. CI berfungsi dengan baik - tidak yakin apa bedanya ...
sumber
mkdir -p
bukan|| true
.echo
:echo -e "\nd56f5187479451eabf01fb78af6dfcb131a6481e" >> "${ANDROID_HOME}/licenses/android-sdk-license"
. Tapi saya pikir masalah Anda bersembunyi di tempat lain.Untuk Android Studio terbaru (2.3) cara terbaik untuk memperbarui / menerima semua lisensi adalah dengan menjalankan:
Anda mungkin masih perlu menyalin file lisensi ke lokasi lain berdasarkan pengaturan Anda.
sumber
tools/bin/sdkmanager --licenses
yes
perintah ini entah bagaimana untuk sistem build otomatis? Anda tidak akan selalu memiliki akses konsol interaktif ke mesin ini, jadi menekany
keyboard secara fisik tidak akan berfungsi.cd $ANDROID_HOME
sebelum menjalankan perintah iniUntuk
sdkmanager
utilitas baru :yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;24.0.3"
Ada sedikit penundaan di antara yesses, jadi perintah itu dapat digantung dengan lisensi yang ditampilkan untuk sementara waktu, tetapi itu tidak memerlukan intervensi manusia.
sumber
up-to-date
jawaban terbanyak . Sepertinya--licenses
sudah tidak ada lagi. Catatan: untuk melihat daftar versi yang memungkinkan yang dapat disediakan:$ANDROID_HOME/tools/bin/sdkmanager --list
yes | android-sdk-linux/tools/bin/sdkmanager --licenses || true
CI saya.Jika Anda menggunakan Jenkins, Anda dapat menggunakan skrip bash berikut sebagai langkah pertama dalam proses pembuatan:
Ini tentu saja akan menginstal SEMUA pembaruan yang tersedia, tetapi ini akan menghemat waktu Anda jika Anda dapat menghemat ruang disk. Tidur adalah untuk menghindari garis baca yang rusak dalam program instalasi, karena "ya" tidak berfungsi dengan baik dalam kasus ini.
EDIT: Anda juga perlu menambahkan plugin "Instal proyek Android prasyarat" di langkah membangun untuk mendapatkan $ ANDROID_HOME yang benar jika Anda menggunakan pengelola SDK bawaan.
sumber
Sayangnya cara OP memecahkannya tidak selalu berhasil. Jika Anda menemukan dari pesan kesalahan apa versi build-tools Anda saat ini . Bisa jadi itu adalah versi yang lebih tinggi dari alat bantu yang hilang. Dalam hal ini, Anda perlu memulai SDK Manager secara manual dan menambahkan alat-alat build dan menerima lisensi.
Per instruksi OP, terlihat sebagai berikut.
$ ./gradlew build
Kemudian sesuaikan perintah Anda sebagai berikut:
Menjalankan ini lagi, masih tidak membuat Gradle bahagia. Jadi penerimaan manual adalah satu-satunya solusi sampai seseorang menemukan sesuatu yang lebih baik. (Silakan lakukan!)
sumber
android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repository
menjalankan ini melalui command prompt dengan admin memperbaiki kesalahan. Saya tidak dapat menginstal plugin manager phonegapini menyelesaikan kesalahan saya
sumber
yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"
lakukan hal yang sama.Kami menemukan masalah yang sama membangun proyek di Jenkins. Dengan
buildToolsVersion '25.0.2'
, kita harus menerima lisensi sebelum membangun. Dalam kasus kami, kami harus menjalankan:yes | sdkmanager --update
yang menerima lisensi untuk sdkmanager itu sendiri, dan kemudianyes | sdkmanager --licenses
yang menerima lisensi baru yang sebelumnya tidak diterimaIngat: jalankan commans ini dengan pengguna yang
jenkins
sama. Di Debian kami, pengguna Jenkins benarjenkins
. Dengan kata lain: melakukan ituroot
akan membuat lisensi yang diterimaroot
, jadi Jenkins tidak akan membacanya.Ngomong-ngomong, kami temukan
sdkmanager
di/var/lib/jenkins/tools/android-sdk/tools/bin
. Jika milik Anda tidak ada di sana, temukan bersamafind / -name "sdkmanager"
sumber
The
android
alat sudah ditinggalkan dan Anda harus menggunakansdkmanager
sebagai gantinya.sdkmanager
juga menulis file lisensi ketika Anda pertama kali menerimanya. Lisensi berubah tergantung pada SDK yang Anda gunakan meskipun perintahbekerja pada beberapa sistem. Itu tidak akan bekerja pada semua. Beberapa penginstalan SDK berharap agar file lisensi berakhir tanpa baris baru pada file tersebut, jadi cobalah menambahkan a
-n
ke perintah echo.Jika itu tidak berhasil, Anda dapat mencoba menggunakan pengkodean base64 sebagai gantinya.
Jadi untuk menemukan lisensi saya:
Ini akan meminta Anda untuk menerima lisensi. Setelah menerimanya akan menyalinnya ke
${ANDROID_HOME}/licenses/android-sdk-license
. Untuk memastikan Anda selalu mendapatkan apa yang tertulis digunakanbase64
.Kemudian Anda dapat menggunakan
base64 -d
membuat ulang file dengan tepat.Anda dapat memverifikasi apakah file yang ditulis adalah yang diharapkan dengan menjalankan sha1sum di atasnya.
sumber
jika Anda menjalankan
yes | sdkmanager --licenses
, maka kami mencetak konten$ANDROID_HOME/licenses/android-sdk-license
,kami akan mendapatkan ini
Untuk GitLab CI, untuk menerima lisensi Android SDK Build-Tools 26.0.2, Anda harus menjalankan ini
sumber
$ANDROID_HOME/licenses/android-sdk-license
apakah ini dimaksudkan? yaitu. menambahkanAndroid SDK Build-Tools 26.02
menambahkan lisensi baru sha1 stringBuild-Tools 26.0.2
dan bangunan kami rusak. Solusi akhir saya adalah melakukannyayes | sdkmanager --licenses
. Tidakecho
diperlukan dan ini adalah bukti di masa depan.Perhatikan bahwa bagi siapa pun yang datang ke pertanyaan ini saat ini, build-tools-24.0.2 adalah (saya pikir) sekarang dianggap usang, sehingga Anda akan mendapatkan:
saat menjalankan berbagai perintah yang telah disarankan untuk menginstalnya.
Solusinya adalah dengan menambahkan
--all
:Juga jika Anda menggunakan linux 32bit, semuanya setelah build tools 23.0.1 hanya 64bit , jadi tidak akan berjalan. Pengguna 32bit terjebak pada 23.0.1, satu-satunya cara untuk mendapatkan alat membangun yang lebih baru adalah beralih ke 64bit.
sumber
25.0.1
.Jika Anda menggunakan
tools/bin/sdkmanager --licenses
Anda masih perlu memiliki interaksi manusia. Saya punya masalah menggunakan CI gitlab saya. Ini solusi saya:echo y
akan menjawab ya jika ada pertanyaan, tetapi Anda perlu membuat satu baris per paket installesumber
Anda juga dapat menjalankan:
Dan di Windows, jalankan:
sumber
Untuk pesan kesalahan tentang SDK api nomor 25:
android update sdk --no-ui --all --filter build-tools-25.0.1,android-25,extra-android-m2repository
sumber
OK UNTUK SIAPA PUN YANG MEMILIKI MASALAH INI TAHUN 2018. Jawaban di atas TIDAK bekerja untuk saya sama sekali. Apa yang dilakukan DID adalah membuka Android SDK - mengklik tombol UNDUH pada bilah alat dan memilih paket yang sesuai. Setelah selesai mengunduh, Anda akan menerima perjanjian lisensi.
sumber
Saya memecahkan masalah ini dengan membuat repo git publik dengan file lisensi yang diterima. Kemudian saya gunakan
wget
untuk mengambil lisensi ini pada mesin apa pun yang saya perlukan ke direktori [sdk-dir] / licents sebelum menjalankan ./gradlew untuk membangun proyek saya.sumber
Bagi mereka yang memiliki masalah dengan SDK baris perintah, alasannya tidak akan menemukan lisensi yang Anda terima adalah karena mereka telah ditulis ke lokasi yang berbeda dari
$ANDROID_HOME/licenses
yang seharusnya.Saya menemukan solusi termudah adalah menerima lisensi seperti ini:
$ANDROID_HOME/bin/sdkmanager --licenses --sdk_root=$ANDROID_HOME
Catatan: Ini mengasumsikan Anda telah mengatur
ANDROID_HOME
untuk menunjuk ke mana pun SDK Anda diinstal.sumber
cd $ANDROID_HOME/tools/bin yes | ./sdkmanager --update
atau
yes | $ANDROID_HOME/tools/bin/sdkmanager --update
sumber
untuk windows, buka cmd dan masuk ke
bin
direktori dengan menjalankan perintah:kemudian jalankan
sdkmanager --licenses
perintah, ia meminta untuk menerima lisensi.sumber
Error: Unknown argument --licenses
Saya akhirnya menemukan solusi pada Windows, untuk memiliki instalasi senyap dan otomatis yang nyata:
Pada Windows, sintaks berikut tidak berfungsi:
Tampaknya "y" tidak dikirim dengan benar ke program java yang disebut dalam batch.
Solusinya adalah membuat file file-y.txt dengan beberapa "y", satu demi satu, dan untuk digunakan
Ini akan membuat file yang diperlukan dalam direktori lisensi. Masalahnya mungkin terkait dengan penggunaan BufferedReader di Jawa
sumber
Salin seluruh lisensi / direktori dan rekatkan ke direktori home Android SDK pada mesin tempat Anda ingin membangun proyek.
https://developer.android.com/studio/intro/update.html#download-with-gradle
ini menyelesaikan masalah bagi saya
sumber
Di Windows PowerShell, Anda bisa melakukannya
Ini jauh lebih fleksibel dan tidak memerlukan intervensi manual. Jumlah 30 adalah sewenang-wenang, harus cukup untuk menutupi jumlah penerimaan lisensi, tetapi dapat ditingkatkan jika diperlukan
sumber
Saya memiliki kesalahan yang sama saat menggunakan Cordova.
Masalahnya adalah karena fakta bahwa saya menginstal Android SDK melalui Android Studio dan melalui
apt
denganapt install android-sdk adb
. Dan Cordova memanggil file yang diinstal melaluiapt
bukan file di direktori rumah saya.Ini berhasil setelah saya mengubah path ke SDK di bash:
Kemudian saya dihapus file sistem yang tidak digunakan lagi:
apt remove android-sdk adb
.sumber
Ini adalah pengaturan Docker saya.
Anda dapat mengikuti dari lingkungan Linux biasa.
Catat itu
yes |
dan--licenses --sdk_root=${ANDROID_HOME}
klausa.Tampaknya
sdkmanager --update
membalikkan perjanjian, sehinggayes |
muncul dua kali.sumber
Anda dapat menerima semua lisensi dengan menjalankan perintah berikut:
Ini akan meminta Anda melalui setiap lisensi yang belum Anda terima dan Anda bisa masuk
y
untuk menerimanya masing-masing.sumber
Saya mencoba semua perintah di atas pada mesin windows 10 tetapi solusinya adalah menggunakan SDKMANAGER untuk memeriksa dan menerima lisensi membeli menginstal versi yang hilang
sumber
Jalur ini telah diubah di versi terbaru.
./sdkmanager
sekarang/Library/Android/sdk/cmdline-tools/latest/bin
dan kemudian lakukan sajasumber
Catatan: Ini hanya untuk pengguna Mac
Saya memiliki masalah yang sama tetapi tidak ada jawaban yang diposting karena tidak ada
tools
folderLibrary/Android/sdk.
(saya menggunakan Android 3.6.3 di Mac OS 10.14.4)Langkah-langkah di bawah ini membantu saya mengatasi kesalahan masalah lisensi:
Android Studio
cmd + shift + A
. Ini membukaActions
jendela sembul.SDK Manager
dan tekan enter untuk membuka.Android SDK
. Pilih beberapa versi Android lain selain yang sudah diinstal. (Dalam kasus saya Android 10.0 sudah diinstal jadi saya memilih Android 9.0)Apply
tombol. Ini akan menginstal SDK yang sesuai.sumber
saya berlari
dari terminal dan bertemu masalah itu. Untuk secara manual, buka Android Studio -> Android SDK -> Platform SDK Klik Tampilkan Paket Detail dan periksa:
Saat menginstal paket, periksa terima lisensi => dapat menyelesaikan masalah.
sumber
Pada Mac OSX, navigasikan ke menu
sdk/tools/bin
Kemudian jalankan
./sdkmanager --licenses
, dan terima semua lisensi.sumber