Secara otomatis menerima semua lisensi SDK

441

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
nsvir
sumber
12
Anda juga dapat memunculkan sebuah echo y |di depan perintah itu untuk secara otomatis menerima lisensi. Berguna saat berjalan pada kotak CI tanpa kepala :)
Dori
3
Saya harus melakukannya ~/.android/tools/android update sdk --no-ui --filter build-tools-25.0.0,android-25,extra-android-m2repositorykarena androidalat itu dilokalkan ke rumah saya
Jacksonkr
7
sdkmanager --lisensi tidak lagi berfungsi. Saya menggunakan --upgrade, mengabaikan kesalahan dan ini mengurutkan masalah lisensi.
jcsubmit
6
Saya telah menggunakan perintah ini untuk membangun CI script lingkungan dengan penyesuaian kecil. Saya telah menambahkan --sdk_root = $ ANDROID_SDK_PATH. Masalahnya adalah bahwa lisensi diterima dan tidak disimpan ke folder root Android SDK. Perintah terakhir: ya | sdkmanager --licenses --sdk_root = $ ANDROID_SDK_PATH (tanpa sudo)
adi9090
3
Pastikan untuk telah menetapkan $ANDROID_SDK_PATHuntuk 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)
gmc

Jawaban:

365

AndroidSDK akhirnya dapat menerima lisensi.

yes | sdkmanager --licenses

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

nsvir
sumber
4
Pada Janda saya harus pergi ke Jalankan kemudian C:\Users\x1\AppData\Local\Android\sdk\tools\androidmuncul membuka GUI dan kemudian menginstal hilang lalu klik "Terima Liscenses" dalam dialog baru yang muncul.
Noitidart
8
Ini tidak berfungsi untuk linux. Tidak ada file sdkmanager di bawah alat / direktori bin atau tempat lain. Bisakah Anda membantu?
Mehmed Mert
36
Di macOS, Anda bisa melakukannyayes | sudo ~/Library/Android/sdk/tools/bin/sdkmanager --licenses
MoOx
5
Bagaimana saya bisa menerima lisensi secara otomatis dari pembungkus gradle?
Howard Swope
7
naik ke @Noitidart untuk path, tetapi tidak berhasil, saya harus menjalankan C: \ Users \ x1 \ AppData \ Local \ Android \ sdk \ tools \ bin \ sdkmanager - lisensi dari command prompt dan tekan "y "+ Masuk ke prompt
GaneshT
177

Saya mengalami ini dengan alpha5pratinjau.

Jake Wharton menunjukkan kepada saya bahwa Anda saat ini dapat menggunakan

mkdir -p "$ANDROID_SDK/licenses"
echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"
echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_SDK/licenses/android-sdk-preview-license"

untuk membuat ulang $ANDROID_HOME/licensefolder 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 :)

Dan instal secara manual, tetapi itu adalah tujuan fitur baru Gradle untuk melakukannya.

Saya terkejut pada awalnya bahwa ini tidak bekerja di luar kotak, bahkan ketika saya telah menerima lisensi untuk komponen yang disebutkan melalui androidalat, tetapi itu menunjukkan kepada saya bahwa manajer SDK di AS yang membuat /licensesfolder.

Saya kira alat resmi tidak ingin melewati langkah ini karena alasan hukum.

Membaca ulang catatan rilis yang dinyatakannya

Unduhan otomatis SDK: Gradle akan berusaha mengunduh paket SDK yang hilang yang tergantung pada proyek.

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 ...

Dori
sumber
Ada kesalahan kecil dalam fitur Download SDK mengenai beberapa komponen, misalnya, dukungan-v4. Itu akan memperbarui komponen tetapi gradle tidak akan melihat pembaruan sampai doa berikutnya. Satu solusi untuk menjalankan gradle dua kali, sekali untuk membuang: dependensi gradle || true - code.google.com/p/android/issues/detail?id=212309
Joe Bowbeer
6
Anda bisa menggunakan mkdir -pbukan || true.
oldergod
Berhasil terima kasih atas kesalahan ini, senang tahu. Untuk memeriksa apakah jalur SDK Anda ditentukan seperti yang diharapkan: echo $ ANDROID_SDK
tryp
Di lingkungan saya ANDROID_SDK tidak ditentukan, tetapi berfungsi dengan ANDROID_HOME
Dimitri L.
5
@stack_ved: Saya baru saja menambahkan lain echo: echo -e "\nd56f5187479451eabf01fb78af6dfcb131a6481e" >> "${ANDROID_HOME}/licenses/android-sdk-license". Tapi saya pikir masalah Anda bersembunyi di tempat lain.
Paul
132

Untuk Android Studio terbaru (2.3) cara terbaik untuk memperbarui / menerima semua lisensi adalah dengan menjalankan:

cd $ANDROID_HOME
tools/bin/sdkmanager --licenses

Anda mungkin masih perlu menyalin file lisensi ke lokasi lain berdasarkan pengaturan Anda.

bgies
sumber
Ini sepertinya cara terbaik untuk pergi dan bekerja di semua platform juga, jalankan sajatools/bin/sdkmanager --licenses
jnv
Jika Anda punya manajer SDK lama - lisensi tidak akan berfungsi. Anda perlu menyalin folder alat ke lokasi lain kemudian menggunakan --sdk_root = dan arahkan ke folder SDK Anda, maka Anda dapat memperbarui alat ke versi yang lebih baru.
Mirek Michalak
dapatkah kita menyalurkan yesperintah ini entah bagaimana untuk sistem build otomatis? Anda tidak akan selalu memiliki akses konsol interaktif ke mesin ini, jadi menekan ykeyboard secara fisik tidak akan berfungsi.
void.pointer
Adakah yang bisa membimbing saya bagaimana menerapkan solusi ini? Harus menambahkan baris ini di build.sh?
stack_ved
1
itu bekerja untuk saya tetapi saya harus lakukan cd $ANDROID_HOMEsebelum menjalankan perintah ini
Inus Saha
57

Untuk sdkmanagerutilitas 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.

A. Rager
sumber
Di instal debian9 saya, saya hanya punya sdkmanager.jar: android-sdk-linux / tools / lib / sdkmanager.jar dan # java -jar /android-sdk-linux/tools/lib/sdkmanager.jar Kesalahan: Properti direktori alat tidak disetel, pastikan Anda menjalankan android
user3313834
1
Ini didasarkan pada asumsi bahwa Anda mengunduh alat SDK sebagai arsip dari Google dan membukanya menjadi $ ANDROID_HOME
A. Rager
Ini sepertinya up-to-datejawaban terbanyak . Sepertinya --licensessudah tidak ada lagi. Catatan: untuk melihat daftar versi yang memungkinkan yang dapat disediakan:$ANDROID_HOME/tools/bin/sdkmanager --list
Marinos An
2
Terima kasih atas petunjuknya. Saya akhirnya menggunakan yes | android-sdk-linux/tools/bin/sdkmanager --licenses || trueCI saya.
iSWORD
es | $ ANDROID_HOME / tools / bin / sdkmanager "build-tools; 28.0.3" -> mengubah versi berfungsi untuk saya. Terima kasih!
ishab acharya
43

Jika Anda menggunakan Jenkins, Anda dapat menggunakan skrip bash berikut sebagai langkah pertama dalam proses pembuatan:

(while sleep 3; do echo "y"; done) | $ANDROID_HOME/tools/android update sdk -u

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.

gagak
sumber
Saya menambahkan baris kode Anda sebelum "cordova platform add android" di jenkins build saya yang berjalan di Ubuntu tetapi masih mendapatkan kesalahan berikut: BUILD GAGAL dalam 7s Kesalahan: / var / lib / jenkins / workspace / qa_global_php / platform / android / gradlew : Perintah gagal dengan kode keluar 1 Output kesalahan: KEGAGALAN: Build gagal dengan pengecualian. * Apa yang salah: Terjadi masalah saat mengonfigurasi proyek root 'android'. > Anda belum menerima perjanjian lisensi dari komponen SDK berikut:
Ashish Karpe
[Android SDK Build-Tools 26.0.2]. Sebelum membangun proyek Anda, Anda harus menerima perjanjian lisensi dan menyelesaikan pemasangan komponen yang hilang menggunakan Android Studio SDK Manager.
Ashish Karpe
32

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

 
Untuk menghormati pengaturan JVM untuk build ini, JVM baru akan bercabang dua. Silakan pertimbangkan untuk menggunakan daemon: https://docs.gradle.org/2.14.1/userguide/gradle_daemon.html.

KEGAGALAN: Build gagal dengan pengecualian.

* Apa yang salah:
Terjadi masalah saat mengonfigurasi proyek ': app'.
> Anda belum menerima perjanjian lisensi dari komponen SDK berikut:
  [Android SDK Build-Tools 24.0.2].

...
BANGUN GAGAL

CATATAN: 2017-04-16

The androidAlat kini telah usang dalam mendukung baru sdkmanager. Silakan lihat jawaban Joe Lawson dan posting selanjutnya dari Maret (2017) dan seterusnya.

Kemudian sesuaikan perintah Anda sebagai berikut:

android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repository
Segarkan Sumber:
  Mengambil https://dl.google.com/android/repository/addons_list-2.xml
  Validasikan XML
  Parse XML
  Daftar Pengaya yang Diambil berhasil
  Segarkan Sumber
  Mengambil URL: https://dl.google.com/android/repository/repository-11.xml
  Validasikan XML: https://dl.google.com/android/repository/repository-11.xml
  Parse XML: https://dl.google.com/android/repository/repository-11.xml
...
Kesalahan: Mengabaikan filter paket tidak dikenal 'build-tools-24.0.2'
-------------------------------
ID lisensi: android-SDK-lisensi-xxxxxxxx
Digunakan oleh: 
 - SDK Platform Android 7.0, API 24, revisi 2
  - Repositori Dukungan Android, revisi 39
-------------------------------

...

20 November 2015
Apakah Anda menerima lisensi 'android-sdk-license-xxxxxxxx' [y / n]: y

Menginstal Arsip:
  Bersiap untuk menginstal arsip
  Mengunduh SDK Platform Android 7.0, API 24, revisi 2
  Menginstal SDK Platform Android 7.0, API 24, revisi 2
    Instal SDK Platform Android 7.0, API 24, revisi 296%)
  Mengunduh Repositori Dukungan Android, revisi 39
  Menginstal Repositori Dukungan Android, revisi 39
    Repositori Dukungan Android Terpasang, revisi 3999%)
  Selesai 2 paket diinstal.

Menjalankan ini lagi, masih tidak membuat Gradle bahagia. Jadi penerimaan manual adalah satu-satunya solusi sampai seseorang menemukan sesuatu yang lebih baik. (Silakan lakukan!)

not2qubit
sumber
1
android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repositorymenjalankan ini melalui command prompt dengan admin memperbaiki kesalahan. Saya tidak dapat menginstal plugin manager phonegap
Ravimallya
32

ini menyelesaikan kesalahan saya

echo yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"
Cristian Agudelo
sumber
2
Untuk menyimpan beberapa karakter, yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"lakukan hal yang sama.
Flimzy
31

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 kemudian

yes | sdkmanager --licenses yang menerima lisensi baru yang sebelumnya tidak diterima

Ingat: jalankan commans ini dengan pengguna yang jenkinssama. Di Debian kami, pengguna Jenkins benar jenkins. Dengan kata lain: melakukan itu rootakan membuat lisensi yang diterima root, jadi Jenkins tidak akan membacanya.

Ngomong-ngomong, kami temukan sdkmanagerdi /var/lib/jenkins/tools/android-sdk/tools/bin. Jika milik Anda tidak ada di sana, temukan bersamafind / -name "sdkmanager"

Roc Boronat
sumber
2
ini memecahkan masalah dalam kasus saya juga (membangun alat 26.0.x), dengan Jenkins di Docker. Terima kasih!
Giordano
1
Sayangnya ini tidak termasuk bagian "otomatis" dari pertanyaan.
m0skit0
@ m0skit0 terima kasih atas komentar Anda! Saya telah memperbarui pertanyaan agar sesuai dengan fitur versi terakhir untuk secara otomatis menerima semua lisensi tanpa campur tangan manusia.
Roc Boronat
24

The androidalat sudah ditinggalkan dan Anda harus menggunakan sdkmanagersebagai gantinya. sdkmanagerjuga menulis file lisensi ketika Anda pertama kali menerimanya. Lisensi berubah tergantung pada SDK yang Anda gunakan meskipun perintah

echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"

bekerja 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 -nke perintah echo.

echo -n -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"

Jika itu tidak berhasil, Anda dapat mencoba menggunakan pengkodean base64 sebagai gantinya.

Jadi untuk menemukan lisensi saya:

$> rm ${ANDROID_HOME}/
$> unzip tools_r25.2.3-linux.zip -d ${ANDROID_HOME}
$> ${ANDROID_HOME}/tools/bin/sdkmanager "system-images;android-23;default;x86_64"

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 digunakan base64.

$> base64 ${ANDROID_HOME}/licenses/android-sdk-license
Cjg5MzNiYWQxNjFhZjQxNzhiMTE4NWQxYTM3ZmJmNDFlYTUyNjljNTU=

Kemudian Anda dapat menggunakan base64 -dmembuat ulang file dengan tepat.

$> echo Cjg5MzNiYWQxNjFhZjQxNzhiMTE4NWQxYTM3ZmJmNDFlYTUyNjljNTU= | base64 -d > ${ANDROID_HOME}/licenses/android-sdk-license

Anda dapat memverifikasi apakah file yang ditulis adalah yang diharapkan dengan menjalankan sha1sum di atasnya.

$> sha1sum ${ANDROID_HOME}/licenses/android-sdk-license
da6b80c9c47b41c0bf7032938e7137a58a3dc249
Joe Lawson
sumber
19

jika Anda menjalankan yes | sdkmanager --licenses, maka kami mencetak konten $ANDROID_HOME/licenses/android-sdk-license,

kami akan mendapatkan ini

# cat $ANDROID_HOME/licenses/android-sdk-license

8933bad161af4178b1185d1a37fbf41ea5269c55

d56f5187479451eabf01fb78af6dfcb131a6481e

Untuk GitLab CI, untuk menerima lisensi Android SDK Build-Tools 26.0.2, Anda harus menjalankan ini

before_script:
  - mkdir -p $ANDROID_HOME/licenses
  - echo "8933bad161af4178b1185d1a37fbf41ea5269c55" > $ANDROID_HOME/licenses/android-sdk-license
  - echo "d56f5187479451eabf01fb78af6dfcb131a6481e" >> $ANDROID_HOME/licenses/android-sdk-license
jk2K
sumber
Anda gema kedua akan sama $ANDROID_HOME/licenses/android-sdk-licenseapakah ini dimaksudkan? yaitu. menambahkan
Ryan R
1
@RyanR, ya, gema kedua menambahkan, Android SDK Build-Tools 26.02menambahkan lisensi baru sha1 string
jk2K
Saya menggunakan jaringan pipa bitbucket, tetapi konsepnya tampaknya sama dengan GitLab CI. Jawaban Anda membantu saya memahami seluruh proses dengan lebih baik. Terima kasih!
Ridcully
@ Sebenarnya saya juga menggunakan Bitbucket Pipelines dan mendapati diri saya di sini ketika kami memutakhirkan Build-Tools 26.0.2dan bangunan kami rusak. Solusi akhir saya adalah melakukannya yes | sdkmanager --licenses. Tidak echodiperlukan dan ini adalah bukti di masa depan.
Ryan R
@Ryan Maksud saya, saya bisa menambahkan 'ya | sdkmanager --licenses 'ke pipeline.yml? Itu akan luar biasa!
Ridcully
16

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:

 Error: Ignoring unknown package filter 'build-tools-24.0.2'

saat menjalankan berbagai perintah yang telah disarankan untuk menginstalnya.

Solusinya adalah dengan menambahkan --all:

android update sdk --no-ui --all --filter "build-tools-24.0.2"

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.

JosephH
sumber
1
Ya, build-tools baru saja ditabrak 25.0.1.
not2qubit
1
Solusi Anda adalah satu-satunya hal yang dapat saya temukan untuk bekerja pada mesin ubuntu 16 tanpa kepala untuk build-tools-25 dan gradle 4
spartygw
14

Jika Anda menggunakan tools/bin/sdkmanager --licensesAnda masih perlu memiliki interaksi manusia. Saya punya masalah menggunakan CI gitlab saya. Ini solusi saya:

wget --quiet --output-document=tools.zip https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
unzip -qq tools.zip
echo y | tools/bin/sdkmanager "platforms;android-25"
echo y | tools/bin/sdkmanager "platform-tools"
echo y | tools/bin/sdkmanager "build-tools;25.0.2"
echo y | tools/bin/sdkmanager "extras;android;m2repository"
echo y | tools/bin/sdkmanager "extras;google;m2repository"

echo y akan menjawab ya jika ada pertanyaan, tetapi Anda perlu membuat satu baris per paket installe

Thibaut Mottet
sumber
Masih cukup relevan setelah beberapa bulan. Terima kasih. Anda menyelamatkan hari saya :)
Prasanna Ramaswamy
Ini membantu saya, juga menggunakan GitLab
sebasira
13

Anda juga dapat menjalankan:

$ANDROID_HOME/tools/bin/sdkmanager --licenses

Dan di Windows, jalankan:

%ANDROID_HOME%/tools/bin/sdkmanager --licenses
r1si
sumber
11

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

ofir_aghai
sumber
10

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.

masukkan deskripsi gambar di sini

pengguna2967081
sumber
7

Saya memecahkan masalah ini dengan membuat repo git publik dengan file lisensi yang diterima. Kemudian saya gunakan wgetuntuk mengambil lisensi ini pada mesin apa pun yang saya perlukan ke direktori [sdk-dir] / licents sebelum menjalankan ./gradlew untuk membangun proyek saya.

IgorGanapolsky
sumber
6

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/licensesyang 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_HOMEuntuk menunjuk ke mana pun SDK Anda diinstal.

sksamuel
sumber
6

cd $ANDROID_HOME/tools/bin yes | ./sdkmanager --update

atau

yes | $ANDROID_HOME/tools/bin/sdkmanager --update

Jimmy Yin
sumber
"Otomatis"
m0skit0
6

untuk windows, buka cmd dan masuk ke bindirektori dengan menjalankan perintah:

cd C:\Users\username\AppData\Local\Android\sdk\tools\android\Sdk\tools\bin

kemudian jalankan sdkmanager --licensesperintah, ia meminta untuk menerima lisensi.

Deepak Kumalagi
sumber
1
Terima kasih ini yang saya lakukan
mynameisjohnj
Saya mendapatkanError: Unknown argument --licenses
deanwilliammills
4

Saya akhirnya menemukan solusi pada Windows, untuk memiliki instalasi senyap dan otomatis yang nyata:

Pada Windows, sintaks berikut tidak berfungsi:

echo y | sdkmanager --licenses

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

call sdkmanager --licenses < file-y.txt

Ini akan membuat file yang diperlukan dalam direktori lisensi. Masalahnya mungkin terkait dengan penggunaan BufferedReader di Jawa

moobyfr
sumber
3

Di Windows PowerShell, Anda bisa melakukannya

for($i=0;$i -lt 30;$i++) { $response += "y`n"}; $response | sdkmanager --licenses

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

Mark Johnson
sumber
Namun alasan lain untuk tidak menggunakan Windows.
m0skit0
3

Saya memiliki kesalahan yang sama saat menggunakan Cordova.

Masalahnya adalah karena fakta bahwa saya menginstal Android SDK melalui Android Studio dan melalui aptdengan apt 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:

# Change path
export ANDROID_HOME="$HOME/Android/Sdk/"
echo "Android home = $ANDROID_HOME"
# Accept licenses
eval "${ANDROID_HOME}/tools/bin/sdkmanager --licenses"
# Run Cordova
cordova build android

Kemudian saya dihapus file sistem yang tidak digunakan lagi: apt remove android-sdk adb.

AL
sumber
3

Ini adalah pengaturan Docker saya.
Anda dapat mengikuti dari lingkungan Linux biasa.

Catat itu yes |dan --licenses --sdk_root=${ANDROID_HOME}klausa.
Tampaknya sdkmanager --updatemembalikkan perjanjian, sehingga yes |muncul dua kali.

FROM openjdk:8
# Install dev-essential(gnumake)
RUN apt update
RUN apt install -y build-essential
# Set ENV
ENV SDK_URL="https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip" \
    ANDROID_HOME="/usr/local/android-sdk" \
    ANDROID_VERSION=28 \
    ANDROID_BUILD_TOOLS_VERSION=28.0.3 \
    GRADLE_VERSION=4.10.3 \
    NDK_VERSION=r16b
# Download Android SDK
RUN mkdir "$ANDROID_HOME" .android \
    && cd "$ANDROID_HOME" \
    && curl -o sdk.zip $SDK_URL \
    && unzip sdk.zip \
    && rm sdk.zip \
    && yes | $ANDROID_HOME/tools/bin/sdkmanager --licenses --sdk_root=${ANDROID_HOME}
# Install Android Build Tool and Libraries
RUN $ANDROID_HOME/tools/bin/sdkmanager --update
RUN yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS_VERSION}" \
    "platforms;android-${ANDROID_VERSION}" \
    "platform-tools" --sdk_root=${ANDROID_HOME}
# Install Gradle
RUN wget https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-all.zip
RUN mkdir /opt/gradle
RUN unzip gradle-${GRADLE_VERSION}-all.zip -d /opt/gradle
ENV PATH=${PATH}:/opt/gradle/gradle-${GRADLE_VERSION}/bin
# Install NDK
RUN wget https://dl.google.com/android/repository/android-ndk-${NDK_VERSION}-linux-x86_64.zip
RUN mkdir /opt/ndk-bundle
RUN unzip android-ndk-${NDK_VERSION}-linux-x86_64.zip -d /opt/ndk-bundle
ENV PATH=${PATH}:/opt/ndk-bundle

RUN mkdir /application
WORKDIR /application
Youngjae
sumber
"Tampaknya sdkmanager --perbarui menolak perjanjian, jadi ya | muncul dua kali." Wow, kamu benar. Ini sangat frustasi tapi bagus.
cephus
2

Anda dapat menerima semua lisensi dengan menjalankan perintah berikut:

 sdkmanager --licenses

Ini akan meminta Anda melalui setiap lisensi yang belum Anda terima dan Anda bisa masuk yuntuk menerimanya masing-masing.

Manoj Shrestha
sumber
"Otomatis"
m0skit0
2

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

masukkan deskripsi gambar di sini

Aymen Boumaiza
sumber
Tidak ada perintah CMD yang bekerja untuk saya, hanya solusi ini. Terima kasih
deanwilliammills
2

Jalur ini telah diubah di versi terbaru. ./sdkmanagersekarang /Library/Android/sdk/cmdline-tools/latest/bindan kemudian lakukan saja

./sdkmanager --licenses
Sukeesh
sumber
2

Catatan: Ini hanya untuk pengguna Mac

Saya memiliki masalah yang sama tetapi tidak ada jawaban yang diposting karena tidak ada toolsfolder Library/Android/sdk.(saya menggunakan Android 3.6.3 di Mac OS 10.14.4)

tangkapan layar kesalahan

Langkah-langkah di bawah ini membantu saya mengatasi kesalahan masalah lisensi:

  1. Buka Android Studio
  2. Tekan cmd + shift + A. Ini membuka Actionsjendela sembul.
  3. Cari SDK Managerdan tekan enter untuk membuka.
  4. Ini membuka pop-up untuk 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)
  5. Kemudian pilih Applytombol. Ini akan menginstal SDK yang sesuai.

Larutan

  1. Sekarang jalankan aplikasi Anda itu harus berfungsi tanpa kecuali.

tangkapan layar sukses

Jayprakash Dubey
sumber
Hei, ini menyelesaikan tambang di Linuxmint 19.3
GaryP
1

saya berlari

#react-native run-android 

dari terminal dan bertemu masalah itu. Untuk secara manual, buka Android Studio -> Android SDK -> Platform SDK Klik Tampilkan Paket Detail dan periksa:

+ Google APIs
+ Android SDK Platform 23
+ Intel x86 Atom_64 System Image
+ Google APIs Intel x86 Atom_64 System Image

Saat menginstal paket, periksa terima lisensi => dapat menyelesaikan masalah.

Phuc Nguyen
sumber
1

Pada Mac OSX, navigasikan ke menu sdk/tools/bin

Kemudian jalankan ./sdkmanager --licenses, dan terima semua lisensi.

Micheal C Wallas
sumber