自动接受所有 SDK 许可

Automatically accept all SDK licences

因为 gradle android 插件 2.2-alpha4:

Gradle will attempt to download missing SDK packages that a project depends on

这非常酷并且被认为是 JakeWharton project

但是,要下载 SDK 库,您需要:接受许可协议或 gradle 告诉您:

You have not accepted the license agreements of the following SDK components: [Android SDK Build-Tools 24, Android SDK Platform 24]. Before building your project, you need to accept the license agreements and complete the installation of the missing components using the Android Studio SDK Manager. Alternatively, to learn how to transfer the license agreements from one workstation to another, go to http://d.android.com/r/studio-ui/export-licenses.html

这是个问题,因为我想在执行 gradle build.

时安装所有 sdk 依赖项

我正在寻找自动接受所有许可的解决方案。也许是 gradle 脚本? 你有什么想法吗?

我在 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) 的 link 中概述的过程产生相同的结果。

哈希值是许可证文本的 sha1,我想它会定期更新,所以这段代码只能使用这么长时间:)

And install it manually, but it is the gradle's new feature purpose to do it.

一开始我很惊讶这并没有开箱即用,即使我已经通过 android 工具接受了指定组件的许可,但有人向我指出它是 SDK 管理器在创建 /licenses 文件夹的 AS 内部。

我猜官方工具出于法律原因不想跳过这一步。

重新阅读它声明的发行说明

SDK auto-download: Gradle will attempt to download missing SDK packages that a project depends on.

这并不意味着如果您还没有安装 android 工具并且已经接受了最新的许可,它就可以工作。

编辑:也就是说,在我 link SDK 达到 AS 之前,它仍然无法在我的测试 gubuntu 机器上运行。 CI 虽然工作正常 - 不确定有什么区别...

不幸的是,OP 最初解决的方法并不总是有效。 如果您从错误消息中找到什么是您当前的构建 build-tools version。可能是缺少更高版本的构建工具。在这种情况下,您需要手动启动 SDK Manager 并添加构建工具并接受许可。

根据 OP 说明,它看起来如下。

$ ./gradlew build

 
To honour the JVM settings for this build a new JVM will be forked. Please consider using the daemon: https://docs.gradle.org/2.14.1/userguide/gradle_daemon.html.

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':app'.
> You have not accepted the license agreements of the following SDK components:
  [Android SDK Build-Tools 24.0.2].

...
BUILD FAILED

NOTE: 2017-04-16

The android tool has now been deprecated in favor of the new sdkmanager. Please see Joe Lawson's and subsequent posts from March (2017) and onward.

然后调整你的命令如下:

android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repository
Refresh Sources:
  Fetching https://dl.google.com/android/repository/addons_list-2.xml
  Validate XML
  Parse XML
  Fetched Add-ons List successfully
  Refresh Sources
  Fetching URL: https://dl.google.com/android/repository/repository-11.xml
  Validate XML: https://dl.google.com/android/repository/repository-11.xml
  Parse XML:    https://dl.google.com/android/repository/repository-11.xml
...
Error: Ignoring unknown package filter 'build-tools-24.0.2'
-------------------------------
License id: android-sdk-license-xxxxxxxx
Used by: 
 - SDK Platform Android 7.0, API 24, revision 2
  - Android Support Repository, revision 39
-------------------------------

...

November 20, 2015
Do you accept the license 'android-sdk-license-xxxxxxxx' [y/n]: y

Installing Archives:
  Preparing to install archives
  Downloading SDK Platform Android 7.0, API 24, revision 2
  Installing SDK Platform Android 7.0, API 24, revision 2
    Installed SDK Platform Android 7.0, API 24, revision 296%)
  Downloading Android Support Repository, revision 39
  Installing Android Support Repository, revision 39
    Installed Android Support Repository, revision 3999%)
  Done. 2 packages installed.

运行又这样了,还是不让Gradle开心。因此,在有人想出更好的东西之前,手动接受是唯一的解决方案。 (请做!)

我通过使用已接受的许可文件创建 public git 存储库解决了这个问题。然后我使用 wget 在我需要的任何机器上将这些许可证获取到 [sdk-dir]/licenses 目录之前 运行 ./ gradlew 构建我的项目。

请注意,对于目前提出此问题的任何人,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 位 linux, 一切 after build tools 23.0.1 is 64bit only,则不会 运行。 32位用户卡在23.0.1上,要想获得更高版本的构建工具,唯一的办法就是切换到64位。

如果您使用的是 Jenkins,则可以使用以下 bash 脚本作为构建过程的第一步:

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

这当然会安装所有可用的更新,但如果您可以腾出磁盘 space,它会为您节省一些时间。 sleep 是为了避免安装程序中的 readline 中断,因为在这种情况下“是”不能正常工作。

编辑:如果您使用的是内置 SDK 管理器,您还需要在构建步骤中添加“安装 Android 项目先决条件”插件以获得正确的 $ANDROID_HOME。

有关 SDK api 编号 25 的错误消息:

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

android 工具已弃用,您应该改用 sdkmanagersdkmanager 还会在您首次接受许可证文件时写入它。许可证会根据您使用的 SDK 而变化,因此即使命令

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

适用于某些系统。它不会对所有人都有效。某些 SDK 安装希望许可文件在文件中没有换行符的情况下结束,因此请尝试将 -n 添加到 echo 命令。

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

对于新的 sdkmanager 实用程序:

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

yeses 之间有一点延迟,因此命令可能会挂起并显示许可证一段时间,但这不需要人工干预。

我可以找到 2 种方法来解决这个问题。

  1. 接受如下许可协议,使用命令window更新sdk工具,根据需要更改版本即可。

    android 更新sdk --no-ui --filter build-tools-25.0.2,android-25,extra-android-m2repository

  2. 第二种方法是将许可证文件夹复制到 Android 根目录。转到您的开发机器,打开 Android Studio。从项目结构菜单中找到您的 sdk 位置。 (C:\Users\UserName\AppData\Local\Android\sdk)。在该目录下必须有一个许可证文件夹。复制包含内容的文件夹。将该文件夹粘贴到 android sdk 根文件夹下的 Jenkins 服务器计算机(或您遇到此问题的位置)。 (C:\Users\UserName.jenkins\tools\android-sdk)

我们在 Jenkins 上构建项目时发现了同样的问题。对于 buildToolsVersion '25.0.2',我们必须在构建之前接受许可。在我们的例子中,我们需要 运行:

yes | sdkmanager --update 接受 sdkmanager 本身的许可,然后

yes | sdkmanager --licenses 接受以前未接受的新许可证

记住:运行 这些命令与 jenkins 相同的用户。在我们的 Debian 中,Jenkins 用户只是 jenkins。换句话说:以 root 的形式执行此操作将创建 root 的已接受许可证,因此 Jenkins 将无法读取它们。

顺便说一下,我们在 /var/lib/jenkins/tools/android-sdk/tools/bin 找到了 sdkmanager。如果你的不在那里,用 find / -name "sdkmanager"

找到它

复制整个 licenses/ 目录并将其粘贴到您要构建项目的计算机上的 Android SDK 主目录中。

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

这解决了我的问题

对于最新的 Android Studio (2.3) update/accept 所有许可证的最佳方式是 运行:

cd $ANDROID_HOME
tools/bin/sdkmanager --licenses

您可能仍需要根据您的设置将许可文件复制到其他位置。

如果您使用 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如果有任何问题都会说是,但你需要为每个安装包制作一行

最后,这 2 个简单的步骤在 windows 10 对我有用。

1) 确保更新 android 构建工具和 api。在您的 Android Sdk 上,只需单击安装包即可安装可用更新。

2) 启动您的 Android Studio,系统会提示您为已更新的 api 和工具安装所需的构建工具,这将安装构建工具属性,包括许可证和你完成了。

在 Windows PowerShell 中,您可以执行

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

这更加灵活,并且需要零人工干预。 30 个数字是任意的,应该足以涵盖许可接受的数量,但如果需要可以增加

我运行

#react-native run-android 

来自终端并遇到了那个问题。 对于手动,转到 Android Studio -> Android SDK -> SDK Platform 单击显示包详细信息并检查:

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

安装包时,勾选accept license =>即可解决问题。

我导航到:

/usr/lib/android-sdk/licenses

我在终端输入:

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

有root权限。 现在对我有用了。

这解决了我的错误

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

2021 年更新 应该是公认的答案,因为它简单且最新


AndroidSDK 终于可以接受许可了。

转到Android\sdk\tools\bin

yes | sdkmanager --licenses

编辑:

正如@MoOx 在评论中指出的那样,在 macOS 上,您可以这样做

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

正如@pho、@mikebridge 和@Noitidart 在Windows 上的评论中所指出的,您可以

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

一定要在

之前安装java

如果你运行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

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

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

我在使用 Cordova 时遇到了同样的错误。

问题是由于我通过 Android Studio 和通过 aptapt install android-sdk adb 安装了 Android Sdk。 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

对于 React 原生应用:

如果您在 React Native 应用程序中遇到此问题,除了上述步骤之外,请确保您在 android 目录中有 local.properties 文件 (AppName/android)您的应用程序指向您的 'sdk' 目录:

sdk.dir=/PATH_TO_SDK/

您可以通过执行以下命令接受所有许可:

 sdkmanager --licenses

这将提示您完成尚未接受的每个许可证,您只需输入 y 即可接受每个许可证。

在 Mac OSX 上,导航到 sdk/tools/bin

然后运行./sdkmanager --licenses,并接受所有许可。

我终于在 Windows 上找到了真正的静默自动安装解决方案:

在 Windows 上,以下语法不起作用:

echo y | sdkmanager --licenses

似乎 "y" 没有正确发送到批处理中调用的 java 程序。

解决方法是使用多个 "y" 逐行创建一个文件 file-y.txt,然后使用

call sdkmanager --licenses < file-y.txt

这将在许可证目录中创建所需的文件。问题可能与在 Java

中使用 BufferedReader 有关

好的,对于 2018 年遇到此问题的任何人。以上答案对我根本不起作用。 DID 的工作是打开 Android SDK - 单击工具栏上的下载按钮并选择适当的包。他们下载完成后,会让你接受许可协议。

你也可以只执行:

$ANDROID_HOME/tools/bin/sdkmanager --licenses

并在Windows中执行:

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

对于命令行 SDK 有问题的用户,它找不到您已接受的许可证的原因是它们已被写入与 $ANDROID_HOME/licenses 不同的位置,这是他们需要的地方是。

我发现最简单的解决方案是接受这样的许可证:

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

注意:这假设您已将 ANDROID_HOME 设置为指向安装 sdk 的位置。

我在 windows 10 机器上尝试了以上所有命令 但解决方案是使用 SDKMANAGER 检查并接受许可证购买安装缺少的版本

我遇到了同样的许可证未被接受的错误...试图在android模拟器中为API设置android环境以运行一个React-native应用程序] 23级。

我做了以下事情:

基于linkhttps://developer.android.com/studio/intro/update#download-with-gradle

验证许可证是否通过 Android studio 3.1.3 的 SDK 管理器下载。

设置ANDROID_HOME为C:\\Android\Sdk

(安装在C:\Users\用户名\AppData\Local\Android\Sdk)

在新的命令提示符中重试构建后错误得到解决。

在尝试了社区成员提到的许多可能的解决方案后,我发现加班可能会出现不同的问题,因此大多数解决方案都已过时。

目前,作为 I posted in the Travis community,Travis 应该默认接受所有许可证,但它一直抱怨不接受许可证 27.0.3,这不应该发生。

添加:

before_install:
  - yes | sdkmanager "build-tools;27.0.3"

应该解决这个问题,我们甚至可以使用 3.+ 版本的 Android Gradle 工具,甚至不需要声明我们正在使用的构建工具版本:

android:
  components:
    # Use the latest revision of Android SDK Tools
    - tools
    - platform-tools
    - tools

    # The SDK version used to compile your project
    - android-${ANDROID_API}
    # - build-tools-28.0.3    # WE DONT NEED THIS ANYMORE FROM AGP 3.+

    # Additional components
    - extra-google-google_play_services
    - extra-google-m2repository
    - addon-google_apis-google-${ANDROID_API}

这是 2018 年 10 月 29 日的作品。Travis 可能会在未来做出改变,祝你好运!

在 Windows 10 上以管理员权限打开 cmd 然后输入 cd C:\Program Files (x86)\Android\android-sdk\tools\bin\ 然后 sdkmanager --update 对我有用。之后,我只需按两次 "y" 即可接受许可。

我花了半天时间寻找 Bitbucket Pipelines

的解决方案

如果您使用的是 Bitbucket Pipelines,并且在接受所有 SDK 许可时遇到问题,请尝试在您的 .yml 文件中使用此代码:

image: mingc/android-build-box:latest

pipelines:
  default:
  - step:
      script:
        - chmod +x gradlew
        - ./gradlew assemble

应该可以。

这是我的 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

来晚了,但上述所有解决方案对我都不起作用,最后这一行将接受所有 android 许可。

yes | sdkmanager --licenses && sdkmanager --update

我有类似的问题,我通过打开 Android Studio 解决了它。事实是 Android Build Tools 26.0.2 没有安装。一个错误来警告我,我安装了它并将其与项目同步。问题已解决:)

这是一个快速修复; 1. 转到 C:\Users(您的用户名)\AppData\Local\Android\sdk\build-tools 2. 删除没有许可证的版本的预先存在的文件夹。 3. 转到 ANDROID STUDIO 并再次手动安装该工具(这将使您有机会接受许可证) ………… (问题已解决)

对于windows,打开cmd并通过运行ning命令进入bin目录:

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

然后 运行 sdkmanager --licenses 命令,它要求接受许可。

截至 2019 年 7 月,最简单的方法是在命令提示符中使用:flutter doctor --android-licenses

它继续逐一显示未接受的 SDK 条款和条件,您可以选择 'y/n'。全部选y。

或者,当您 运行 flutter doctor 时,它会 运行 Android 工具链诊断,显示有多少许可证尚未被接受,并建议您 运行 它带有 --android-licenses 标志。

我所要做的就是 yes | sdkmanager --licenses > /dev/null,一切都被接受了,控制台或 travis 日志或任何地方都没有大量输出。例如,它也像 yes | sdkmanager "tools" > /dev/null 一样工作。

在 windows 中转到命令提示符并键入以下命令:

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

这将生成许可证,继续按 "y" 接受所有许可证。

我遇到了这个问题,虽然这些答案没有帮助,但我发现我的环境变量不正确,尽管我可以在任何地方执行 sdkmanager 命令,所以请确保环境变量设置正确:

  1. 在环境变量中定义一个新变量 ANDROID_SDK_ROOT 作为名称并赋予它一个值 sdktools 位于例如:C:\Android\sdk\

  2. 编辑您的路径以将创建的变量添加到 %ANDROID_SDK_ROOT%\tools\bin\重启你的cmd。

  3. 运行 答案中提到的命令: sdkmanager --licenses

  4. 使用sdkmanager "packageName"安装所需的包。

此路径在最新版本中已更改。 ./sdkmanager 现在在 /Library/Android/sdk/cmdline-tools/latest/bin 然后就做

./sdkmanager --licenses

如果您的 "tools" 文件夹在 MacOS 上丢失,那么您可以执行以下操作-

  1. 使用 command+shift+A 在 Android Studio 中打开操作(快捷方式可能有所不同)
  2. 搜索 "SDK Manager"
  3. 转到"SDK Tools"
  4. 勾选Android SDK Platform Tools并点击应用。

工具文件夹现在应该会出现。

请注意您的 sdk 位置,我更改了默认文件夹,所以我在“~/Library/Android/sdk/tools/bin/”中找不到 sdkmanager...

注意:这仅适用于 Mac 用户

我遇到了同样的问题,但是 none 发布的答案对 有帮助,因为 Library/Android/sdk. 中没有 tools 文件夹(我'我在 Mac OS 10.14.4)

上使用 Android 3.6.3

以下步骤帮助我克服了许可问题错误:

  1. 打开Android Studio
  2. cmd + shift + A。这将打开 Actions 弹出窗口 window。
  3. 搜索 SDK Manager 并按回车键打开。
  4. 这会打开 Android SDK 的弹出窗口。 Select Android 除了已经安装的版本之外的一些其他版本。 (在我的例子中 Android 10.0 已经安装所以我 selected Android 9.0)
  5. 然后 select Apply 按钮。这将安装相应的SDK。

  1. 现在 运行 您的应用 应该可以正常工作了。

如果您正在使用 Flutter 只需 运行:

flutter doctor --android-licenses 

并接受所有需要的许可。

Download the SDK manager from this link. Then unzip and use the following command in terminal.

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

原来如果你没有安装任何SDK,AndroidStudio还显示“你还没有接受许可”...这样的欺骗信息,一般人会认为它暗示SDK已经安装但无论如何。在 Studio 的 SDK 管理器中,您可以手动 select 缺少的 sdk 进行下载和安装,它也可以处理许可证。您只需要重新启动 Android Studio。

这里 a YT video 显示您的 SDK 管理器所在的位置。

在 Windows 中: 打开命令:

进入安装路径

falow 常见: cd D: 或 C:

进入sdk目录

普通CD

tools/bin/sdkmanager --licenses

WINDOWS 解决方案

  • 打开终端 o Windows 电源 Shell

  • 转到Android SDK 文件夹

一般这个文件夹可以在C:\Users(your-windows-user)\AppData\Local\Android\Sdk\tools\bin

  • 从“....\Sdk”文件夹开始进入\tools\bin

最终路径C:\Users(your-windows-user)\AppData\Local\Android\Sdk\tools\bin

  • 使用 ls 命令

    验证 sdkmanager.bat 就位
  • 执行下一条命令.\sdkmanager.bat --licenses

  • 然后终端会显示7个文件,你需要在每个文件中输入yes

我在 Android Studio 上构建项目时遇到了两个错误:

  1. License for package Android SDK Platform 28 not accepted. (while Build my project in Android Studio 4.1)

  2. exception in thread main java.lang.noclassdeffounderror javax/xml/bind/annotation/xmlschema (while running SDK manager to accept license)

对我来说,这是一个 java 版本问题。我安装了 JDK 而不是 java。 为了解决问题,我执行了以下步骤。

对于Windows:

步骤 1:从 https://www.java.com/en/download/

下载并安装最新的 JAVA 版本

第二步:在开始菜单按钮(windows图标)中搜索“查看高级系统设置”

第三步:点击“环境变量”

Step4:在“系统变量”下点击“新建”,现在设置“Variable name: JAVA_HOME”和“Variable value: C:\Program Files\Java\jre1.8.0_271”(添加最新安装的java 路径在这里)。然后“好”、“好”、“好”。

Step5:以管理员身份打开cmd,输入以下命令:

  1. cd C:\Users\kevin\AppData\Local\Android\Sdk\tools\bin(*在此处更改用户名)

  2. sdkmanager --licenses

所有问题都按“y”。

第 6 步:重新启动您的 Android Studio。

完成。

如果有人在执行上述步骤时遇到问题,请告诉我。

我遇到了这个错误:

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

所以,我转到工具 -> SDK 管理器 -> SDK 工具。然后我安装了 Google Play Licensing Library。它解决了问题。

在 Windows 上,在您的 PATH 中安装 sdkmanager 并安装和配置 WSL,以下单行代码应该适用于每个默认发行版(事实上我想不出的反例):

wsl --exec yes "y" | sdkmanager --licenses

如果这还不够,您可能想看看 this script(免责声明:这是我的)。

You have not accepted the license agreements of the following SDK components: [Android SDK Build-Tools 24, Android SDK Platform 24]. Before building your project, you need to accept the license agreements and complete the installation of the missing components using the Android Studio SDK Manager. Alternatively, to learn how to transfer the license agreements from one workstation to another, go to http://d.android.com/r/studio-ui/export-licenses.html

卸载并重新安装Android SDK Platform 24,然后会出现许可协议,接受协议,问题就解决了!

在window中这个问题可以这样解决: 在 window 中打开 CMD 运行CMD中的这个命令

flutter doctor --android-licenses then enter y for accepting each licenses. the CMD will show you each license one by one which you have to accept by entering y in CMD prompt. It solved my problem. I hope this will also work for you

正如@MoOx 在评论中指出的那样,在 macOS 上,您可以这样做

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

我转到工具 -> SDK 管理器 -> SDK 工具。然后我安装了 Google Play Licensing Library。它解决了问题。

android sdk manager 选项卡中卸载带有许可证的软件包失败。 重新安装时,会提示您接受许可证

在AndroidStudio for Windows中,解决方法如下:

转到File -> Settings -> Appearance & Behaviour -> System Settings -> Android SDK -> SDK Tools -> 检查Google Play Licensing Library -> 单击 Apply,然后单击 Ok

安装后,构建您的应用程序。它会起作用。

我解决了这个问题,因为我无法使用 UI。它适用于 Azure 中的管道。 (Windows) none 的答案对我有用,但是@moobyfr 发帖 file-y.txt 为我指明了正确的方向

这适用于全新安装。您根本不需要使用 Android Studio 或 UI.

  1. 创建 C:\Android测试
  2. 使用来自 #1
  3. 的路径创建名为 ANDROID_SDK_TOOLS 的 ENV 变量
  4. 创建名为 JAVA_HOME 的 ENV 变量并为其指定文件夹路径
  5. 在管理员模式下打开 CMD 并转到 C:\Android
  6. curl --output test.zip https://dl.google.com/android/repository/commandlinetools-win-8092744_latest.zip
  7. 使用您喜欢的命令行将 zip 解压到同一文件夹
  8. 导航到 bin 文件夹 (cmdline-tools\bin)
  9. 在此文件夹中,创建一个类似于另一个答案中提到的文件。 file-y.txt 并添加一堆 y。基本上在每一行输入 y 。我做了 20。所以你有 20 行,每行有 1 个
  10. sdkmanager "platform-tools" "平台;android-29" --sdk_root="C:\AndroidTest\cmdline-tools\bin" < file-y.txt

这将下载您需要的所有 sdk,而不需要 gradle/AndroidStudio/Xamarin。管道可以即时下载整个 SDK 支持非常棒

如果遇到问题,您需要输入 sdkmanager --licenses --sdk_root="C:\AndroidTest\cmdline-tools\bin" < file-y.txt
但是,我对此表示怀疑。