Programming

모든 SDK 라이센스 자동 수락

procodes 2020. 2. 21. 22:35
반응형

모든 SDK 라이센스 자동 수락


gradle android plugins 2.2-alpha4 이후 :

Gradle은 프로젝트가 의존하는 누락 된 SDK 패키지 다운로드를 시도합니다

그것은 놀랍도록 시원하며 JakeWharton 프로젝트 인 것으로 알려졌습니다 .

그러나 SDK 라이브러리를 다운로드하려면 라이센스 계약에 동의하거나 gradle이 알려줍니다.

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

그리고 이것은 sdk 의존성을 설치하는 동안 모든 SDK 종속성을 설치하고 싶기 때문에 문제 gradle build입니다.

모든 라이센스를 자동으로 수락하는 솔루션을 찾고 있습니다. 어쩌면 gradle 스크립트입니까? 당신은 어떤 아이디어가 있습니까?

감사!

[편집하다]

해결책은 다음과 같습니다.

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

수동으로 설치하지만 gradle의 새로운 기능 목적입니다.

[편집 2]

더 나은 해결책은 sdkmananger를 사용하는 것입니다.

yes | sdkmanager --licenses

AndroidSDK는 최종적으로 라이센스를 수락 할 수 있습니다.

yes | sdkmanager --licenses

편집하다:

macOS에서 @MoOx의 의견에서 지적했듯이 할 수 있습니다.

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

Windows에서 @pho, @mikebridge 및 @ Noitidart의 의견에서 지적했듯이 할 수 있습니다

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

Java를 설치하기 전에 반드시


alpha5미리보기 에서이 문제가 발생했습니다 .

Jake Wharton은 현재 사용할 수 있다고 지적했습니다.

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 )에 설명 된 프로세스와 동일한 결과를 가져옵니다 .

해시는 라이센스 텍스트의 sha1이며 주기적으로 업데이트 될 것이라고 생각 하므로이 코드는 오랫동안 작동합니다. :)

수동으로 설치하지만 gradle의 새로운 기능 목적입니다.

android도구 를 통해 명명 된 구성 요소에 대한 라이센스를 수락 한 경우에도 처음에는 이것이 작동하지 않는다는 사실에 놀랐지 /licenses폴더 를 만드는 AS 내부의 SDK 관리자가 나에게 지적되었습니다 .

공식 도구는 법적 이유로이 단계를 건너 뛰지 않으려는 것 같습니다.

릴리스 노트 다시 읽기

SDK 자동 다운로드 : Gradle은 프로젝트가 의존하는 누락 된 SDK 패키지 다운로드를 시도합니다.

아직 안드로이드 도구를 설치하지 않았고 이미 최신 라이센스를 수락 한 경우 작동한다는 의미는 아닙니다.

편집 : 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"

yesses 사이에 약간의 지연이 있으므로 명령이 라이센스 표시와 함께 잠시 중단 될 수 있지만 사람의 개입이 필요하지 않습니다.


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

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

물론 사용 가능한 모든 업데이트가 설치되지만 디스크 공간을 절약 할 수 있으면 시간이 절약됩니다. 이 경우에는 "yes"가 제대로 작동하지 않으므로 설치 프로그램에서 readline이 끊어지지 않도록해야합니다.

편집 : 또한 내장 SDK 관리자를 사용하는 경우 빌드 단계에서 "Android 프로젝트 필수 구성 요소 설치"플러그인을 추가하여 올바른 $ ANDROID_HOME을 가져와야합니다.


이 내 오류를 해결

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

불행히도 OP가 원래 해결했던 방식이 항상 작동하는 것은 아닙니다. 오류 메시지에서 현재 빌드 도구 버전 은 무엇입니까 ? 상위 버전의 빌드 도구가 누락되었을 수 있습니다. 이 경우 SDK Manager를 수동으로 시작하고 빌드 도구를 추가하고 라이센스에 동의해야합니다.

OP 지침에 따라 다음과 같이 보입니다.

$ ./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도구는 이제 새로운 도구를 위해 더 이상 사용되지 않습니다 sdkmanager. Joe Lawson의 답변 과 2017 년 3 월 이후의 게시물을 참조하십시오 .

그런 다음 다음과 같이 명령을 조정하십시오.

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.xml
  XML 확인 : 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 : android-sdk-license-xxxxxxxx
사용 : 
 -SDK 플랫폼 Android 7.0, API 24, 개정 2
  -Android 지원 리포지토리, 개정 39
-------------------------------

...

2015 년 11 월 20 일
'android-sdk-license-xxxxxxxx'라이센스 [y / n]에 동의하십니까 : y

아카이브 설치 :
  아카이브 설치 준비
  SDK Platform Android 7.0, API 24, 개정 2 다운로드
  SDK 플랫폼 Android 7.0, API 24, 개정 2 설치
    SDK Platform Android 7.0, API 24, 개정판 296 % 설치)
  Android Support Repository, 개정판 39 다운로드
  Android Support Repository 설치, 개정 39
    설치된 Android Support Repository, 개정판 3999 %)
  끝난. 2 개의 패키지가 설치되었습니다.

다시 실행해도 Gradle을 행복하게 만들지 마십시오. 따라서 수동 수락은 누군가가 더 나은 것을 생각 해낼 때까지 유일한 솔루션입니다. (제발!)


Jenkins에서 프로젝트를 빌드하는 것과 동일한 문제가 발견되었습니다. 를 사용하여 buildToolsVersion '25.0.2'빌드하기 전에 라이센스를 수락해야합니다. 이 경우 다음을 실행해야했습니다.

yes | sdkmanager --update sdkmanager 자체에 대한 라이센스를 수락 한 다음

yes | sdkmanager --licenses 이전에 승인되지 않은 새 라이센스를 수락하는

기억하십시오 : 동일한 사용자로이 comman을 실행하십시오 jenkins. 데비안에서 Jenkins 사용자는 단지 jenkins입니다. 다시 말해 root, 승인 된 라이센스는로 작성 root되므로 Jenkins는 라이센스를 읽지 않습니다.

그건 그렇고, 우리는 sdkmanager에서 찾았 습니다 /var/lib/jenkins/tools/android-sdk/tools/bin. 당신이 없다면,find / -name "sdkmanager"


android도구는 더 이상 사용되지 않으며 sdkmanager대신 사용해야합니다 . sdkmanager또한 라이센스 파일을 처음 승인 할 때 라이센스 파일을 작성합니다. 라이센스는 명령을 통해 사용중인 SDK에 따라 변경됩니다.

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

일부 시스템에서 작동합니다. 전혀 작동하지 않습니다. 일부 SDK 설치는 파일에 줄 바꿈없이 라이센스 파일이 종료 될 것으로 예상하므로 -necho 명령에를 추가하십시오 .

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"

또한 32 비트 리눅스를 사용하는 경우 빌드 도구 23.0.1 이후의 모든 것은 64 비트 전용 이므로 실행되지 않습니다. 32 비트 사용자는 23.0.1을 고수하고 이후 빌드 도구를 얻는 유일한 방법은 64 비트로 전환하는 것입니다.


당신이 사용하는 경우 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 질문이 있으면 예라고 대답하지만 installe 패키지 당 한 줄을 만들어야합니다.


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

$ANDROID_HOME/tools/bin/sdkmanager --licenses

그리고 Windows에서 다음을 실행하십시오.

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

SDK API 번호 25에 대한 오류 메시지 :

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


2018 년 현재이 문제를 겪고있는 사람에게는 좋습니다. 위의 답변은 전혀 효과가 없었습니다. DID가 수행 한 작업 Android SDK를 여는 중-도구 모음에서 다운로드 버튼을 클릭하고 적절한 패키지를 선택하십시오. 다운로드가 완료되면 라이센스 계약에 동의 할 수 있습니다.

여기에 이미지 설명을 입력하십시오


승인 된 라이센스 파일을 사용하여 공개 자식 리포지토리를 만들어이 문제를 해결했습니다. 그런 다음 프로젝트를 빌드하기 위해 ./gradlew실행하기 전에 wget필요한 모든 컴퓨터에서이 라이센스를 [sdk-dir] / licenses 디렉토리 로 가져옵니다 .


명령 행 SDK에 문제가있는 사용자가 승인 한 라이센스를 찾지 못하는 이유는 라이센스 $ANDROID_HOME/licenses가 필요한 위치와 다른 위치에 작성 되었기 때문 입니다.

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

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

참고 : ANDROID_HOMESDK가 설치되는 곳을 가리 키도록 설정 했다고 가정합니다 .


마침내 Windows에서 자동 자동 설치를 수행하는 솔루션을 찾았습니다.

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

echo y | sdkmanager --licenses

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

해결 방법은 파일 "y.txt"를 여러 "y"(한 줄씩)로 만들고 사용하는 것입니다.

call sdkmanager --licenses < file-y.txt

라이센스 디렉토리에 필요한 파일이 생성됩니다. 이 문제는 아마도 Java에서 BufferedReader 사용과 관련이 있습니다.


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

또는

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


전체 라이센스 / 디렉토리를 복사하여 프로젝트를 빌드하려는 머신의 Android SDK 홈 디렉토리에 붙여 넣으십시오.

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

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


Cordova를 사용하는 동안 동일한 오류가 발생했습니다.

이 문제로 인해 내가 안드로이드 스튜디오를 통해 통해 안드로이드 SDK를 설치한다는 사실이었다 aptapt install android-sdk adb. 그리고 Cordova는 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하기 위해 입력 하기 만하면 됩니다.


내 Docker 설정입니다.
일반 Linux 환경에서 따를 수 있습니다.

yes |--licenses --sdk_root=${ANDROID_HOME}조항에 유의하십시오 . 계약을 되 돌리는
것처럼 sdkmanager --update보이므로 yes |두 번 나타납니다.

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

Windows의 경우 cmd를 열고 bin다음 명령을 실행 하여 디렉토리에 입력하십시오 .

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

그런 다음 sdkmanager --licenses명령 을 실행 하면 라이센스 수락을 요청합니다.


Windows PowerShell에서 할 수있는 작업

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

이것은 훨씬 더 융통성이 있으며 수동 개입이 필요 없습니다. 30 개의 숫자는 임의적이며 라이센스 승인 수를 포함하기에 충분해야하지만 필요한 경우 증가시킬 수 있습니다


2019 년 7 월 현재 가장 쉬운 방법은 flutter doctor --android-licenses명령 프롬프트에서 다음 을 사용 하는 것입니다.

허용되지 않는 SDK의 T & C를 하나씩 표시하고 'y / n'을 선택할 수있는 옵션이 제공됩니다. 모두 y를 선택하십시오.

또는을 실행할 때 flutter doctor아직 승인되지 않은 라이센스 수를 표시하는 Android 툴체인 진단을 실행하고 --android-licenses 플래그로 실행하도록 제안합니다.


난 달린다

#react-native run-android 

터미널에서 그 문제를 만났습니다. 수동으로 Android Studio-> Android SDK-> SDK 플랫폼으로 이동하십시오. 패키지 세부 사항 표시를 클릭하고 확인하십시오.

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

패키지를 설치할 때 라이센스 승인 =>을 확인하면 문제를 해결할 수 있습니다.


Mac OSX에서 sdk/tools/bin

그런 다음를 실행 ./sdkmanager --licenses하고 모든 라이센스를 승인하십시오.


Windows에서 명령 프롬프트로 이동하여 다음 명령을 입력하십시오.

cd C:\Users\<Username>\AppData\Local\Android\Sdk\tools\bin
sdkmanager --licenses

이렇게하면 라이센스가 "y"를 계속 눌러 모든 라이센스를 수락합니다.


나는 다음으로 이동합니다.

/usr/lib/android-sdk/licenses

터미널에 입력했습니다.

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

루트 권한이 있습니다. 그리고 그것은 나를 위해 지금 작동합니다.

참고 URL : https://stackoverflow.com/questions/38096225/automatically-accept-all-sdk-licences



반응형