programing

모든 SDK 라이센스 자동 수락

css3 2023. 6. 14. 22:05

모든 SDK 라이센스 자동 수락

gradle 안드로이드 플러그인 2.2-alpha4 이후:

Gradle은 프로젝트에 종속된 누락된 SDK 패키지를 다운로드하려고 시도합니다.

이것은 놀라울 정도로 멋지고 Jake Wharton 프로젝트로 알려져 있습니다.

그러나 SDK 라이브러리를 다운로드하려면 라이센스 계약에 동의하거나 다음과 같은 메시지를 표시해야 합니다.

[Android SDK Build-Tools 24, Android SDK Platform 24] SDK 구성 요소의 라이센스 계약에 동의하지 않았습니다.프로젝트를 빌드하기 전에 라이센스 계약에 동의하고 Android Studio SDK Manager를 사용하여 누락된 구성 요소의 설치를 완료해야 합니다.또는 한 워크스테이션에서 다른 워크스테이션으로 라이센스 계약을 전송하는 방법에 대해 알아보려면 http://d.android.com/r/studio-ui/export-licenses.html 을 방문하십시오.

. 왜냐하면 저는 하면서 sdk 종속성을 하고 입니다.gradle build.

모든 라이센스를 자동으로 수락하는 솔루션을 찾고 있습니다.그래들 대본?무슨 생각 있어요?

업데이트 2021 이것은 쉽고 최신이기 때문에 승인된 답변이어야 합니다.


Android SDK는 마침내 라이센스를 수락할 수 있습니다.

에 가다Android\sdk\tools\bin

yes | sdkmanager --licenses

편집:

@MoOx의 댓글에서 지적했듯이, 당신은 macOS에서 할 수 있습니다.

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

윈도우에서 @pho, @mikebridge, @ Noitidart의 코멘트에서 지적했듯이, 당신은 할 수 있습니다.

cmd.exe /C"%ANDROID_HOME%\tools\bin\sdkmanager.bat --licenses"

전에 Java를 설치해야 합니다.

다음 오류가 발생했습니다.

License for package Android SDK Build-Tools 30.0.2 not accepted.

그래서 저는 도구 -> SDK 매니저 -> SDK 도구로 이동했습니다.그런 다음 Google Play 라이선스 라이브러리를 설치했습니다.그것은 문제를 해결했습니다.

enter image description here

나는 이것을 그와 마주쳤습니다.alpha5시사회

제이크 와튼은 당신이 현재 사용할 수 있다고 나에게 지적했습니다.

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

의 조를재기를 $ANDROID_HOME/license컴퓨터에 있는 폴더.이는 오류 메시지(http://tools.android.com/tech-docs/new-build-system/license) 의 링크에 설명된 프로세스와 동일한 결과를 가져옵니다.

해시는 라이센스 텍스트의 sha1s이며, 주기적으로 업데이트될 것으로 예상되므로 이 코드는 매우 오랫동안만 작동할 것입니다 :)

수동으로 설치하지만 이를 수행하는 것이 Gradle의 새로운 기능입니다.

저는 처음에 이것이 즉시 작동하지 않는다는 것에 놀랐습니다. 심지어 제가 지정된 구성 요소에 대한 라이센스를 승인했을 때도 말입니다.android 매니저로, 이를 은 AS 내부의 SDK 매니저입니다./licenses폴더를 누릅니다.

공식 도구는 법적인 이유로 이 단계를 건너뛰고 싶어하지 않을 것이라고 생각합니다.

기재된 릴리스 노트를 다시 읽는 중

SDK 자동 다운로드: Gradle은 프로젝트에 종속된 누락된 SDK 패키지를 다운로드하려고 시도합니다.

즉, 아직 Android 도구를 설치하지 않고 최신 라이센스를 수락한 경우에는 작동하지 않습니다.

편집: 그렇다고 해도, SDK를 AS에 연결하기 전까지는 테스트 gubuntu 박스에서 작동하지 않습니다. CI는 잘 작동하지만 - 차이점이 무엇인지 잘 모르겠습니다...

최신 Android Studio(2.3)의 경우 모든 라이센스를 업데이트/승인하는 가장 좋은 방법은 다음을 실행하는 것입니다.

cd $ANDROID_HOME
tools/bin/sdkmanager --licenses

설치에 따라 라이센스 파일을 다른 위치에 복사해야 할 수도 있습니다.

새로운 것을 위하여sdkmanager유틸리티:

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

예스 사이에 약간의 지연이 있기 때문에 잠시 동안 라이센스가 표시된 상태에서 명령이 중단될 수 있지만, 사람의 개입이 필요하지 않습니다.

Jenkins를 사용하는 경우 빌드 프로세스의 첫 번째 단계로 다음 bash 스크립트를 사용할 수 있습니다.

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

이렇게 하면 사용 가능한 모든 업데이트가 설치되지만 디스크 공간을 확보할 수 있으면 시간이 절약됩니다.이 경우 "예"가 제대로 작동하지 않으므로 설치 프로그램의 읽기 줄이 끊기는 것을 방지하기 위한 절전 모드입니다.

편집: 기본 제공 SDK 관리자를 사용하는 경우 올바른 $ANDROID_HOME을 얻으려면 빌드 단계에서 "Install Android project prequireds" 플러그인을 추가해야 합니다.

이것은 나의 실수를 해결했습니다.

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

젠킨스에게 프로젝트를 구축하는 것과 같은 문제를 발견했습니다.와 함께buildToolsVersion '25.0.2'우리는 건축하기 전에 허가증을 받아야 합니다.우리의 경우, 우리는 다음을 실행해야 했습니다.

yes | sdkmanager --update자체에 라이센스를 한 다음 sdkmanager 파일을 하십시오.

yes | sdkmanager --licenses되지 않은 새

다음과 같은 사용자와 함께 이 명령을 실행합니다.jenkins 그니다습입니다. 저희 데비안에서는 젠킨스 사용자가jenkins다른 말로: 그것을 하는 것.root된 라이센스를 된라생성니다합를로 합니다.root젠킨스가 읽을 수 없게 될 겁니다

그건 그렇고, 우리는 발견했습니다.sdkmanager/var/lib/jenkins/tools/android-sdk/tools/bin만약 당신의 것이 그곳에 없다면, 그것을 찾으세요.find / -name "sdkmanager"

안타깝게도 OP가 원래 해결했던 방식이 항상 작동하는 것은 아닙니다.오류 메시지에서 빌드 현재 빌드 도구 버전이 무엇인지 확인할 수 있습니다.누락된 빌드 도구의 상위 버전일 수 있습니다.이 경우 SDK Manager를 수동으로 시작하고 빌드 도구를 추가하고 라이센스를 수락해야 합니다.

작업 지침에 따라 다음과 같이 표시됩니다.

$ ./gradlew build

 
이 빌드에 대한 JVM 설정을 준수하기 위해 새 JVM이 분기됩니다.데몬(https://docs.gradle.org/2.14.1/userguide/gradle_daemon.html )을 사용하는 것을 고려해 보십시오.
실패: 예외가 발생하여 빌드에 실패했습니다.

무엇이 잘못되었습니까?프로젝트 ':app'을(를) 구성하는 동안 문제가 발생했습니다.> 다음 SDK 구성 요소의 라이센스 계약에 동의하지 않았습니다.
[Android SDK 빌드-툴 24.0.2].

...빌드 실패

참고: 2017-04-16

android도구는 이제 새로운 것을 위해 더 이상 사용되지 않습니다.sdkmanagerJoe Lawson님의 답변과 3월(2017) 이후의 게시물을 참고하시기 바랍니다.

그런 다음 명령을 다음과 같이 조정합니다.

android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repository
소스 새로 고침:
https://dl.google.com/android/repository/addons_list-2.xml 를 가져오는 중XML 유효성 검사XML 구문 분석추가 기능 목록을 가져왔습니다.소스 새로 고침URL을 가져오는 중: https://dl.google.com/android/repository/repository-11.xmlXML 검증: https://dl.google.com/android/repository/repository-11.xml구문 분석 XML: https://dl.google.com/android/repository/repository-11.xml...오류: 알 수 없는 패키지 필터 'build-tools-24.0.2'을(를) 무시합니다.-------------------------------라이센스 ID: rodroid-sdk-license-xxxxxxxxxxxxxxxx사용자:SDK 플랫폼 Android 7.0, API 24, 리비전 2Android 지원 저장소, 개정판 39-------------------------------
...
2015년 11월 20일'Android-sdk-license-xxxxxxx' 라이센스에 동의하십니까 [y/n]: y
보관 파일 설치 중:
아카이브 설치 준비SDK Platform Android 7.0, API 24, 리비전 2 다운로드SDK Platform Android 7.0, API 24, 리비전 2 설치SDK Platform Android 7.0, API 24, 리비전 296% 설치Android 지원 저장소 다운로드, 개정판 39Android 지원 저장소 설치, 개정판 39Android 지원 저장소 설치, 개정판 3999%)완료. 2개의 패키지가 설치되었습니다.

이것을 다시 실행하는 것은 여전히 Gradle을 행복하게 하지 않습니다.그래서 누군가가 더 좋은 것을 생각해 낼 때까지 수동적인 수용만이 유일한 해결책입니다. (제발!)

android는 사용하지 는 도는더사사않합니야다용해으를 사용해야 합니다.sdkmanager대신. sdkmanager또한 사용자가 처음 라이센스 파일을 수락할 때 라이센스 파일을 참조하십시오.을 사용해도 됩니다.

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

일부 시스템에서 작동합니다.모두에게 효과가 없을 겁니다.새 상태에서 를 부여할 수 에 "" SDK를 .-n 명령어에됩니다.

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

작동하지 않으면 base64 인코딩을 대신 사용할 수 있습니다.

내 라이센스를 검색하려면:

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

라이센스에 동의하라는 메시지가 표시됩니다.인승후다복로다니됩사으음으로 됩니다.${ANDROID_HOME}/licenses/android-sdk-license 것을 얻으려면 항상기된용정를파게악할수위있해보기장하도록하확도록을 사용합니다.base64.

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

그러면 사용할 수 있습니다.base64 -d파일을 정확하게 다시 만듭니다.

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

작성된 파일이 sha1sum을 실행하여 예상되는 파일인지 확인할 수 있습니다.

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

yes | sdkmanager --licenses는 그런다의내인다니쇄합의 합니다.$ANDROID_HOME/licenses/android-sdk-license,

우리는 이것을 얻을 것입니다.

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

8933bad161af4178b1185d1a37fbf41ea5269c55

d56f5187479451eabf01fb78af6dfcb131a6481e

GitLab CI의 경우 Android SDK Build-Tools 26.0.2 라이센스를 수락하려면 다음을 실행해야 합니다.

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

현재 이 질문을 받고 있는 사람들은 build-tools-24.0.2가 이제 쓸모없는 것으로 간주되므로 다음과 같은 정보를 얻을 수 있습니다.

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

설치하도록 제안된 다양한 명령을 실행하는 경우

솔루션은 다음을 추가하는 것입니다.--all:

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

또한 32bit Linux를 사용하는 경우 빌드 도구 23.0.1 이후의 모든 작업은 64bit 전용이므로 실행되지 않습니다. 32bit 사용자는 23.0.1에 고정되어 있으므로 나중에 빌드 도구를 사용할 수 있는 유일한 방법은 64bit로 전환하는 것입니다.

사용하는 경우tools/bin/sdkmanager --licenses당신은 여전히 인간적인 상호작용이 필요합니다.Gitlab CI를 사용하는 데 문제가 있습니다.이것이 제 해결책입니다.

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마다 한 .

다음을 실행할 수도 있습니다.

$ANDROID_HOME/tools/bin/sdkmanager --licenses

Windows에서 다음을 실행합니다.

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

2018년 기준으로 이 문제가 있는 모든 사용자에게 OK.위의 답변들은 저에게 전혀 통하지 않았습니다.DID 작업은 Android SDK를 열고 도구 모음의 Download 버튼을 클릭한 다음 적절한 패키지를 선택하는 것이었습니다.다운로드가 완료되면 사용권 계약에 동의할 수 있습니다.

enter image description here

Android Studio for Windows의 솔루션은 다음과 같습니다.

에 가다File->Settings->Appearance & Behaviour->System Settings->Android SDK->SDK Tools -> 인확Google Play Licensing Library -> 릭클Apply,그리고 나서.Ok

설치 후 응용 프로그램을 빌드합니다.그건 작동할 것이다.

SDK API 번호 25에 대한 오류 메시지가 표시되는 경우:

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

참고: Mac 사용자 전용입니다.

저도 같은 문제가 있었지만 게시된 답변이 없어서 도움이 되지 않았습니다.tools가 더있음에 .Library/Android/sdk. 10 3Mac OS 10.14).4에서 Android 3.6.3을 사용하고 있습니다.)

error screenshot

다음 단계는 라이센스 문제 오류를 해결하는 데 도움이 되었습니다.

  1. 을 엽니다.Android Studio
  2. 를 누릅니다.cmd + shift + A 하면 열니다립이 열립니다.Actions팝업 창
  3. 을 합니다.SDK ManagerEnter 키를 눌러 엽니다.
  4. 다음에 대한 팝업이 열립니다.Android SDK 버전 Android ( Android 설치되어 Android 했습니다)
  5. 다음 런그다선택을 선택합니다.ApplySDK가 됩니다.해당 SDK를 설치합니다.

Solution

  1. 이제 앱을 실행하면 예외 없이 작동합니다.

success screenshot

승인된 라이센스 파일로 공용 git repo를 생성하여 이 문제를 해결했습니다. 저는 그면저는을 합니다.wget./gradlew를 실행하여 프로젝트를 빌드하기 전에 필요한 모든 컴퓨터에서 이러한 라이센스를 [sdk-dir]/licenses 디렉토리로 가져옵니다.

SDK에 수 는 해당 가 "" ""와 다른 에 기록되었기 입니다.$ANDROID_HOME/licenses그들이 있어야 할 곳입니다.

가장 쉬운 해결책은 다음과 같은 라이센스를 수락하는 것이었습니다.

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

설정한합니다.ANDROID_HOMEsdk가 설치된 위치를 가리킵니다.

도구 -> SDK 매니저 -> SDK 도구로 이동하였습니다.그런 다음 Google Play 라이선스 라이브러리를 설치했습니다.그것은 문제를 해결했습니다.

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

또는

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

cmd 파일을 합니다.bin명령을 :

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

그 다음에 달려라sdkmanager --licenses라이센스를 수락하도록 요청하는 명령입니다.

Windows에서 자동으로 자동으로 자동 설치할 수 있는 솔루션을 찾았습니다.

Windows에서는 다음 구문이 작동하지 않습니다.

echo y | sdkmanager --licenses

배치에서 호출된 자바 프로그램에 "y"가 올바르게 전송되지 않은 것 같습니다.

해결 방법은 여러 개의 "y"가 있는 file-y.txt 파일을 한 줄씩 만들어 다음을 사용하는 것입니다.

call sdkmanager --licenses < file-y.txt

이렇게 하면 라이센스 디렉토리에 필요한 파일이 생성됩니다.이 문제는 Java에서 BufferedReader를 사용하는 것과 관련이 있을 수 있습니다.

Windows PowerShell에서 다음 작업을 수행할 수 있습니다.

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

이는 훨씬 더 유연하며 수동 개입이 필요하지 않습니다.30개의 숫자는 임의이며, 라이센스 수락 수를 감당하기에 충분해야 하지만 필요한 경우 늘릴 수 있습니다.

위의 모든 명령어를 윈도우 10 컴퓨터에서 시도했지만, 해결책은 SDK Manager를 사용하여 누락된 버전을 설치하는 라이센스 구매를 확인하고 수락하는 것이었습니다.

enter image description here

링크에서 SDK 관리자를 다운로드합니다.그런 다음 압축을 풀고 터미널에서 다음 명령을 사용합니다.

!tools/bin/sdkmanager --sdk_root=/usr/lib/android-sdk --licenses <<< $'y\ny\ny\ny\ny\ny\ny\n'

전체 라이센스/디렉토리를 복사하여 프로젝트를 빌드하려는 컴퓨터의 Android SDK 홈 디렉토리에 붙여넣습니다.

https://developer.android.com/studio/intro/update.html#download-with-gradle

이것은 나를 위해 그 문제를 해결했습니다.

나는 코르도바를 사용하는 동안 같은 오류가 발생했습니다.

가 안드로이드 스튜디오를 입니다.apt와 함께apt install android-sdk adb를 통해 설치된 파일을 부르고 있었습니다.apt내 홈 디렉토리에 있는 파일 대신에.

bash에서 SDK로 경로를 변경하면 작동했습니다.

# 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

파일을 했습니다.apt remove android-sdk adb.

다음 명령을 실행하여 모든 라이센스를 수락할 수 있습니다.

 sdkmanager --licenses

아직 수락하지 않은 각 라이센스를 확인하는 메시지가 표시되고 입력하면 됩니다.y그들 각각을 받아들이는 것.

언급URL : https://stackoverflow.com/questions/38096225/automatically-accept-all-sdk-licences