Accetta automaticamente tutte le licenze SDK


441

Dal momento che plug -in Android Gradle 2.2-alpha4 :

Gradle tenterà di scaricare i pacchetti SDK mancanti da cui dipende un progetto

Il che è incredibilmente bello ed era noto per essere un progetto JakeWharton .

Ma per scaricare la libreria SDK devi: accettare gli accordi di licenza o gradle ti dice:

Non hai accettato gli accordi di licenza dei seguenti componenti SDK: [Android SDK Build-Tools 24, Android SDK Platform 24]. Prima di creare il tuo progetto, devi accettare gli accordi di licenza e completare l'installazione dei componenti mancanti utilizzando Android Studio SDK Manager. In alternativa, per informazioni su come trasferire gli accordi di licenza da una workstation all'altra, visitare il sito Web http://d.android.com/r/studio-ui/export-licenses.html

E questo è un problema perché mi piacerebbe installare tutte le dipendenze SDK mentre faccio un gradle build.

Sto cercando una soluzione per accettare automaticamente tutte le licenze. Forse una sceneggiatura graduale? Hai qualche idea ?

Grazie!

[MODIFICARE]

Una soluzione era eseguire:

android update sdk --no-ui --filter build-tools-24.0.0,android-24,extra-android-m2repository

E installalo manualmente, ma è la nuova funzione del gradle a farlo.

[MODIFICA 2]

Una soluzione migliore è usare sdkmananger:

yes | sdkmanager --licenses

12
Puoi anche far apparire un echo y |davanti a quel comando per accettare automaticamente la licenza. Utile quando si esegue su una scatola CI senza testa :)
Dori,

3
Ho dovuto farlo ~/.android/tools/android update sdk --no-ui --filter build-tools-25.0.0,android-25,extra-android-m2repositoryperché lo androidstrumento era localizzato a casa mia
Jacksonkr il

7
sdkmanager - Le licenze non funzionano più. Ho usato --upgrade, ignorato gli errori e questo ha risolto i problemi di licenza.
jcsubmit,

6
Ho usato questo comando per lo script di build dell'ambiente CI con piccole modifiche. Ho aggiunto --sdk_root = $ ANDROID_SDK_PATH. Il problema era che le licenze venivano accettate e non salvate nella cartella principale dell'SDK Android. Comando finale: si | sdkmanager --licenses --sdk_root = $ ANDROID_SDK_PATH (senza sudo)
adi9090

3
Assicuratevi di avere impostato $ANDROID_SDK_PATHal percorso principale effettiva in cui è stato installato l'SDK (ad esempio: /opt/android-sdk), o semplicemente mettere direttamente il percorso (ad esempio: yes | sdkmanager --licenses --sdk_root=/opt/android-sdk)
GMC

Risposte:


365

AndroidSDK può finalmente accettare le licenze.

yes | sdkmanager --licenses

MODIFICARE:

come sottolineato nei commenti di @MoOx, su macOS, puoi farlo

yes | sudo ~/Library/Android/sdk/tools/bin/sdkmanager --licenses

come sottolineato nei commenti di @pho, @mikebridge e @ Noitidart su Windows, puoi farlo

cmd.exe ""/K"%LocalAppData%\Android\sdk\tools\bin\sdkmanager.bat --licenses"

assicurati di installare java prima


4
Su Widows sono dovuto andare su Esegui, quindi C:\Users\x1\AppData\Local\Android\sdk\tools\androidè stata aperta una GUI e quindi l'installazione mancante, quindi fare clic su "Accetta i privilegi" nella nuova finestra di dialogo che viene visualizzata.
Noitidart,

8
Questo non funziona per Linux. Non esiste alcun file sdkmanager nella directory tools / bin o da qualche altra parte. Potete per favore aiutare?
Mehmed Mert,

36
Su macOS, puoi farloyes | sudo ~/Library/Android/sdk/tools/bin/sdkmanager --licenses
MoOx il

5
Come posso accettare automaticamente le licenze da Gradle Wrapper?
Howard Swope

7
ho votato a @Noitidart per il percorso, ma non ha funzionato, ho dovuto eseguire C: \ Users \ x1 \ AppData \ Local \ Android \ sdk \ tools \ bin \ sdkmanager --licenze dal prompt dei comandi e premere "y "+ Partecipa alle istruzioni
GaneshT

177

Ho riscontrato questo con l' alpha5anteprima.

Jake Wharton mi ha fatto notare che attualmente puoi usare

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

per ricreare la $ANDROID_HOME/licensecartella corrente sul tuo computer. Ciò avrebbe lo stesso risultato del processo descritto nel collegamento dell'errore msg ( http://tools.android.com/tech-docs/new-build-system/license ).

Gli hash sono sha1s del testo della licenza, che immagino verranno periodicamente aggiornati, quindi questo codice funzionerà solo per così tanto tempo :)

E installalo manualmente, ma è la nuova funzione del gradle a farlo.

All'inizio sono stato sorpreso che questo non funzionasse immediatamente, anche quando avevo accettato le licenze per i componenti nominati tramite lo androidstrumento, ma mi è stato fatto notare che è il gestore SDK all'interno di AS che crea la /licensescartella.

Immagino che gli strumenti ufficiali non vorrebbero saltare questo passaggio per motivi legali.

Rileggere le note di rilascio che afferma

Download automatico dell'SDK: Gradle tenterà di scaricare i pacchetti SDK mancanti da cui dipende un progetto.

Ciò non significa che funzionerà se non hai ancora installato gli strumenti Android e hai già accettato le ultime licenze.

EDIT: Detto questo, non funziona ancora sulla mia casella di test gubuntu fino a quando non collego l'SDK a AS. L'IC funziona bene, non so quale sia la differenza ...


C'è una piccola anomalia nella funzione sdkDownload per quanto riguarda alcuni dei componenti, ad esempio support-v4. Esso sarà aggiornare i componenti ma Gradle non vedrà fino al prossimo aggiornamento invocazione. Una soluzione alternativa per eseguire il voto due volte, una volta da buttare via: dipendenze del grado || true - code.google.com/p/android/issues/detail?id=212309
Joe Bowbeer,

6
puoi usare al mkdir -pposto di || true.
oldergod,

Funziona grazie per questo problema tecnico, buono a sapersi. Per verificare se il percorso dell'SDK è definito come previsto: echo $ ANDROID_SDK
tryp

Nel mio ambiente ANDROID_SDK non è definito, ma funziona con ANDROID_HOME
Dimitri L.

5
@stack_ved: Ho appena aggiunto un altro echo: echo -e "\nd56f5187479451eabf01fb78af6dfcb131a6481e" >> "${ANDROID_HOME}/licenses/android-sdk-license". Ma penso che il tuo problema si nasconda da qualche altra parte.
Paolo,

132

Per il più recente Android Studio (2.3) il modo migliore per aggiornare / accettare tutte le licenze è eseguire:

cd $ANDROID_HOME
tools/bin/sdkmanager --licenses

potrebbe essere comunque necessario copiare i file della licenza in altre posizioni in base alla propria configurazione.


Questo sembra il modo migliore per andare e funziona anche su tutte le piattaforme, basta eseguiretools/bin/sdkmanager --licenses
jnv

Se hai un vecchio gestore SDK, le licenze non funzioneranno. È necessario copiare la cartella degli strumenti in un'altra posizione, quindi utilizzare --sdk_root = e puntarla sulla cartella sdk, quindi sarà possibile aggiornare gli strumenti alla versione più recente.
Mirek Michalak,

possiamo yesin qualche modo convogliare questo comando per i sistemi di build automatizzati? Non avrai sempre accesso alla console interattiva a queste macchine, quindi premendo yfisicamente la tastiera non funzionerà.
void.pointer

Qualcuno può guidarmi per favore come implementare questa soluzione? Devi aggiungere questa riga in build.sh?
stack_ved

1
ha funzionato per me, ma ho dovuto farlo cd $ANDROID_HOMEprima di eseguire questo comando
Inus Saha,

57

Per la nuova sdkmanagerutility:

yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;24.0.3"

C'è un po 'di ritardo tra i sì, quindi il comando potrebbe bloccarsi con la licenza mostrata per un po', ma non richiede l'intervento umano.


Nella mia installazione debian9 ho solo un sdkmanager.jar: android-sdk-linux / tools / lib / sdkmanager.jar e # java -jar /android-sdk-linux/tools/lib/sdkmanager.jar Errore: proprietà della directory degli strumenti non è impostato, assicurati di eseguire android
user3313834

1
Questo si basa sul presupposto che tu abbia scaricato gli strumenti dell'SDK come archivio da Google e li abbia decompressi in $ ANDROID_HOME
A. Rager il

Questa sembra la up-to-daterisposta migliore. Sembra --licensesche non esista più. Nota: per vedere l'elenco delle possibili versioni che possono essere fornite:$ANDROID_HOME/tools/bin/sdkmanager --list
Marinos il

2
Grazie per il suggerimento. Ho finito per usare yes | android-sdk-linux/tools/bin/sdkmanager --licenses || truenel mio CI.
iSWORD,

es | $ ANDROID_HOME / tools / bin / sdkmanager "build-tools; 28.0.3" -> la modifica della versione ha funzionato per me. Grazie !
Ishab Acharya,

43

Se stai usando Jenkins, puoi usare il seguente script bash come primo passo nel processo di compilazione:

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

Questo ovviamente installerà TUTTI gli aggiornamenti disponibili, ma ti farà risparmiare un po 'di tempo se puoi risparmiare spazio su disco. Il sonno è evitare la readline interrotta nel programma di installazione, poiché in questo caso "sì" non funziona correttamente.

EDIT: devi anche aggiungere il plug-in "Installa i prerequisiti del progetto Android" nella fase di compilazione per ottenere $ ANDROID_HOME corretti se stai usando il gestore SDK integrato.


Aggiungo la tua riga di codice prima di "piattaforma cordova aggiungi android" nella mia build jenkins che è in esecuzione su Ubuntu ma continua a ricevere il seguente errore: BUILD FAILED in 7s Error: / var / lib / jenkins / workspace / qa_global_php / platform / android / gradlew : Comando non riuscito con codice di uscita 1 Output errore: FAILURE: generazione non riuscita con un'eccezione. * Cosa è andato storto: si è verificato un problema durante la configurazione del progetto di root 'Android'. > Non hai accettato gli accordi di licenza dei seguenti componenti SDK:
Ashish Karpe,

[Android SDK Build-Tools 26.0.2]. Prima di creare il tuo progetto, devi accettare gli accordi di licenza e completare l'installazione dei componenti mancanti utilizzando Android Studio SDK Manager.
Ashish Karpe,

32

Sfortunatamente il modo in cui OP ha risolto inizialmente non sempre funziona. Se si trova dal messaggio di errore qual è il tuo costruisce attuali build-tools versione . Potrebbe essere che manchi una versione superiore di build-tools. In tal caso, è necessario avviare manualmente SDK Manager, aggiungere gli strumenti di compilazione e accettare la licenza.

Secondo le istruzioni OP, appare come segue.

$ ./gradlew build

 
Per onorare le impostazioni JVM per questa build verrà biforcuta una nuova JVM. Si prega di considerare l'utilizzo del demone: https://docs.gradle.org/2.14.1/userguide/gradle_daemon.html.

GUASTO: Build fallito con un'eccezione.

* Cosa è andato storto:
Si è verificato un problema durante la configurazione del progetto ': app'.
> Non hai accettato gli accordi di licenza dei seguenti componenti SDK:
  [Android SDK Build-Tools 24.0.2].

...
BUILD FAILED

NOTA: 16-04-2017

Lo androidstrumento è stato ora deprecato a favore del nuovo sdkmanager. Si prega di consultare la risposta di Joe Lawson e i post successivi da marzo (2017) in poi.

Quindi regola il comando come segue:

android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repository
Aggiorna fonti:
  Recupero https://dl.google.com/android/repository/addons_list-2.xml
  Convalida XML
  XML di analisi
  Elenco componenti aggiuntivi recuperato correttamente
  Aggiorna fonti
  Recupero URL: https://dl.google.com/android/repository/repository-11.xml
  Convalida XML: https://dl.google.com/android/repository/repository-11.xml
  XML di analisi: https://dl.google.com/android/repository/repository-11.xml
...
Errore: ignorare il filtro pacchetto sconosciuto 'build-tools-24.0.2'
-------------------------------
ID licenza: android-sdk-license-xxxxxxxx
Usato da: 
 - Piattaforma SDK Android 7.0, API 24, revisione 2
  - Repository di supporto Android, revisione 39
-------------------------------

...

20 novembre 2015
Accettate la licenza 'android-sdk-license-xxxxxxxx' [y / n]: y

Installazione degli archivi:
  Preparazione all'installazione degli archivi
  Download della piattaforma SDK Android 7.0, API 24, revisione 2
  Installazione della piattaforma SDK Android 7.0, API 24, revisione 2
    Piattaforma SDK installata Android 7.0, API 24, revisione 296%)
  Download del repository di supporto Android, revisione 39
  Installazione del repository di supporto Android, revisione 39
    Repository di supporto Android installato, revisione 3999%)
  Fatto. 2 pacchetti installati.

Eseguendolo di nuovo, non rendere felice Gradle. Quindi l'accettazione manuale è l'unica soluzione finché qualcuno non trova qualcosa di meglio. (Per favore fallo!)


1
android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repositoryeseguendo questo tramite prompt dei comandi con admin right risolto l'errore. Non sono stato in grado di installare il gestore plugin
phonegap

32

questo ha risolto il mio errore

echo yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"

2
Per salvare alcuni personaggi, yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"fa la stessa cosa.
Flimzy,

31

Abbiamo riscontrato lo stesso problema durante la costruzione del progetto su Jenkins. Con buildToolsVersion '25.0.2', dobbiamo accettare le licenze prima di costruire. Nel nostro caso, dovevamo eseguire:

yes | sdkmanager --update che accetta le licenze per lo stesso sdkmanager e quindi

yes | sdkmanager --licenses che accetta nuove licenze non precedentemente accettate

Ricorda: esegui questi comandi con lo stesso utente jenkins. Nel nostro Debian, l'utente Jenkins è giusto jenkins. In altre parole: farlo come rootcreerà le licenze accettate come root, quindi Jenkins non le leggerà.

A proposito, abbiamo trovato sdkmanagera /var/lib/jenkins/tools/android-sdk/tools/bin. Se il tuo non è lì, trovalo confind / -name "sdkmanager"


2
questo ha risolto il problema anche nel mio caso (build tools 26.0.x), con Jenkins in Docker. Grazie!
Giordano,

1
Purtroppo questo non include la parte "automaticamente" della domanda.
m0skit0,

@ m0skit0 grazie per il tuo commento! Ho aggiornato la domanda in modo che corrisponda all'ultima versione per accettare automaticamente tutte le licenze senza intervento umano.
Roc Boronat,

24

Lo androidstrumento è obsoleto e dovresti usare sdkmanagerinvece. sdkmanagerscrive anche il file delle licenze quando lo si accetta per la prima volta. La licenza cambia a seconda dell'SDK in uso, anche se il comando

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

funziona su alcuni sistemi. Non funzionerà su tutti. Alcune installazioni di SDK prevedono che il file di licenza termini senza una nuova riga nel file, quindi prova ad aggiungere -na al comando echo.

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

Se non funziona, puoi provare a utilizzare la codifica base64.

Quindi per scoprire la mia licenza:

$> 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"

Ti verrà richiesto di accettare la licenza. Dopo aver accettato lo copierà su ${ANDROID_HOME}/licenses/android-sdk-license. Per assicurarti di ottenere sempre esattamente ciò che è scritto, usa base64.

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

Quindi è possibile utilizzare base64 -dricreare il file esattamente.

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

È possibile verificare se il file scritto è quello che ci si aspetta eseguendo uno sha1sum su di esso.

$> sha1sum ${ANDROID_HOME}/licenses/android-sdk-license
da6b80c9c47b41c0bf7032938e7137a58a3dc249

19

se corri yes | sdkmanager --licenses, stampiamo il contenuto di $ANDROID_HOME/licenses/android-sdk-license,

otterremo questo

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

8933bad161af4178b1185d1a37fbf41ea5269c55

d56f5187479451eabf01fb78af6dfcb131a6481e

Per GitLab CI, per accettare le licenze Android SDK Build-Tools 26.0.2, è necessario eseguirlo

before_script:
  - mkdir -p $ANDROID_HOME/licenses
  - echo "8933bad161af4178b1185d1a37fbf41ea5269c55" > $ANDROID_HOME/licenses/android-sdk-license
  - echo "d56f5187479451eabf01fb78af6dfcb131a6481e" >> $ANDROID_HOME/licenses/android-sdk-license

La tua seconda eco sta andando allo stesso modo, $ANDROID_HOME/licenses/android-sdk-licensequesto è previsto? vale a dire. aggiungendo
Ryan R l'

1
@RyanR, sì, il secondo eco è in aggiunta, Android SDK Build-Tools 26.02aggiunta una nuova stringa di licenza sha1
jk2K,

Sto usando pipeline bitbucket, ma il concetto sembra essere lo stesso di GitLab CI. La tua risposta mi ha aiutato a capire meglio l'intero processo. Grazie!
Ridcully,

@Ridcully Sto anche usando Bitbucket Pipelines e mi sono trovato qui quando ci siamo aggiornati Build-Tools 26.0.2e la nostra build si è rotta. La mia soluzione finale era semplicemente fare yes | sdkmanager --licenses. Non echoè necessario e questo è a prova di futuro.
Ryan R,

@Ryan Vuoi dire che posso solo aggiungere 'si | sdkmanager --licenses 'sul pipeline.yml? Sarebbe grandioso!
Ridcully,

16

Nota che per chiunque venga attualmente a questa domanda, build-tools-24.0.2 è (penso) ora considerato obsoleto, quindi otterrai:

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

quando si eseguono i vari comandi che sono stati suggeriti per installarli.

La soluzione è aggiungere --all:

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

Inoltre, se usi Linux a 32 bit, tutto ciò che segue gli strumenti di compilazione 23.0.1 è solo a 64 bit , quindi non funzionerà. Gli utenti a 32 bit sono bloccati su 23.0.1, l'unico modo per ottenere strumenti di build successivi è passare a 64 bit.


1
Sì, a build-tools è stato appena fatto un salto 25.0.1.
not2qubit

1
La tua soluzione è stata l'unica cosa che ho potuto trovare per lavorare su una macchina ubuntu 16 senza testa per build-tools-25 e grado 4
spartygw,

14

Se usi tools/bin/sdkmanager --licensesdevi comunque avere un'interazione umana. Ho il problema con il mio gitlab CI. Questa è la mia soluzione:

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 dirà di sì in caso di domande, ma è necessario creare una riga per pacchetto di installazione


Ancora abbastanza rilevante dopo diversi mesi. Grazie. Mi hai salvato la giornata :)
Prasanna Ramaswamy il

Questo mi è stato utile, anche usando GitLab
sebasira il

13

Puoi anche semplicemente eseguire:

$ANDROID_HOME/tools/bin/sdkmanager --licenses

E in Windows, esegui:

%ANDROID_HOME%/tools/bin/sdkmanager --licenses

11

Per un messaggio di errore su SDK api numero 25:

android update sdk --no-ui --all --filter build-tools-25.0.1,android-25,extra-android-m2repository


10

Ok PER CHIUNQUE HA QUESTO NUMERO DAL 2018. Le risposte di cui sopra NON hanno funzionato affatto per me. Ciò che DID ha funzionato è stato aprire Android SDK - facendo clic sul pulsante DOWNLOAD sulla barra degli strumenti e selezionando i pacchetti appropriati. Al termine del download, ti consentirà di accettare il contratto di licenza.

inserisci qui la descrizione dell'immagine


7

Ho risolto questo problema creando un repository git pubblico con i file di licenza accettati. Quindi utilizzo wgetqueste licenze su qualsiasi macchina di cui ho bisogno in una directory [sdk-dir] / licenze prima di eseguire ./gradlew per compilare il mio progetto.


6

Per coloro che hanno problemi con l'SDK della riga di comando, il motivo per cui non trova le licenze accettate è perché sono stati scritti in una posizione diversa da quella in $ANDROID_HOME/licensescui devono trovarsi.

Ho trovato la soluzione più semplice era accettare le licenze in questo modo:

$ANDROID_HOME/bin/sdkmanager --licenses --sdk_root=$ANDROID_HOME

Nota: questo presuppone che tu abbia impostato il ANDROID_HOMEpunto in cui è installato il tuo sdk.


6

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

o

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


"Automaticamente"
m0skit0,

6

per windows, apri cmd ed entra nella bindirectory eseguendo il comando:

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

quindi esegui il sdkmanager --licensescomando, chiede di accettare le licenze.


1
Grazie, è quello che ho fatto
mynameisjohnj,

RicevoError: Unknown argument --licenses
deanwilliammills l'

4

Finalmente ho trovato una soluzione su Windows, per avere una vera installazione silenziosa e automatica:

Su Windows, la sintassi seguente non funziona:

echo y | sdkmanager --licenses

Sembra che "y" non sia inviato correttamente al programma java chiamato nel batch.

La soluzione alternativa è creare un file file-y.txt con diversi "y", uno per riga, e da usare

call sdkmanager --licenses < file-y.txt

Ciò creerà i file necessari nella directory delle licenze. Il problema è probabilmente correlato all'uso di BufferedReader in Java



3

In Windows PowerShell, puoi farlo

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

Questo è molto più flessibile e richiede zero interventi manuali. Il numero 30 è arbitrario, dovrebbe essere sufficiente a coprire il numero di accettazioni della licenza, ma può essere aumentato se necessario


Ancora un altro motivo per non usare Windows.
m0skit0,

3

Ho avuto lo stesso errore durante l'utilizzo di Cordova.

Il problema era dovuto al fatto che ho installato Android Sdk tramite Android Studio e fino aptad ora apt install android-sdk adb. E Cordova stava chiamando i file installatiapt anziché i file nella mia directory home.

Ha funzionato una volta che ho cambiato il percorso di SDK in 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

Poi ho rimosso i file di sistema che non sono stati più utilizzati: apt remove android-sdk adb.


3

Ecco la mia configurazione Docker.
Puoi seguire da un semplice ambiente Linux.

Nota che yes |e --licenses --sdk_root=${ANDROID_HOME}clausole.
Sembra che sdkmanager --updateripristini gli accordi, quindi yes |è apparso due volte.

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

"Sembra sdkmanager - l'aggiornamento ripristina gli accordi, quindi sì | è apparso due volte." Wow, hai ragione. Questa è una scoperta molto frustrante ma buona.
Ceppo

2

Puoi accettare tutta la licenza eseguendo il seguente comando:

 sdkmanager --licenses

Questo ti chiederà tutte le licenze che non hai ancora accettato e puoi semplicemente inserire yper accettarle.


"Automaticamente"
m0skit0,

2

Ho provato tutti i comandi sopra su Windows 10 ma la soluzione era usare SDKMANAGER per controllare e accettare le licenze e acquistare le versioni mancanti

inserisci qui la descrizione dell'immagine


Nessuno dei comandi CMD ha funzionato per me, solo questa soluzione. Grazie
deanwilliammills l'

2

Questo percorso è stato modificato nelle versioni recenti. ./sdkmanagerè ora dentro /Library/Android/sdk/cmdline-tools/latest/bine poi basta

./sdkmanager --licenses

2

Nota: questo è solo per utenti Mac

Ho avuto lo stesso problema ma nessuna delle risposte pubblicate mi è stata di aiuto in quanto non era presente alcuna toolscartella Library/Android/sdk.(sto usando Android 3.6.3 su Mac OS 10.14.4)

screenshot dell'errore

I passaggi seguenti mi hanno aiutato a superare l'errore del problema di licenza:

  1. Aperto Android Studio
  2. Press cmd + shift + A. Questo apre Actionsla finestra pop-up.
  3. Cerca SDK Managere premi invio per aprire.
  4. Questo apre pop-up per Android SDK . Seleziona un'altra versione di Android oltre a quella già installata. (Nel mio caso Android 10.0 era già installato, quindi ho selezionato Android 9.0)
  5. Quindi selezionare il Applypulsante. Ciò installerà l'SDK corrispondente.

Soluzione

  1. Ora esegui la tua app, dovrebbe funzionare senza alcuna eccezione.

screenshot di successo


Ehi, questo risolve il mio in Linuxmint 19.3
GaryP

1

io corro

#react-native run-android 

dal terminale e ha incontrato quel problema. Per manualmente, vai su Android Studio -> Android SDK -> Piattaforma SDK Fai clic su Mostra dettagli pacchetti e verifica:

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

Quando si installano i pacchetti, selezionare accetta license => per risolvere il problema.


1

Su Mac OSX, vai al sdk/tools/bin

Quindi eseguire ./sdkmanager --licensese accettare tutte le licenze.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.