因为gradle android插件2.2-alpha4:

Gradle会尝试下载项目中缺失的SDK包 取决于

这非常酷,是杰克·沃顿的一个项目。

但是,要下载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

这是一个问题,因为我想在做gradle构建时安装所有的sdk依赖。

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


当前回答

注意:这仅适用于Mac用户

我也有同样的问题,但没有一个答案张贴帮助,因为在库/Android/sdk中没有工具文件夹。(我在Mac OS 10.14.4上使用Android 3.6.3)

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

Open Android Studio 按cmd + shift + a,打开Actions弹出窗口。 搜索SDK管理器并点击进入打开。 这将为Android SDK打开弹出窗口。选择其他Android版本,除了已经安装的版本。(在我的情况下,Android 10.0已经安装,所以我选择了Android 9.0) 然后选择Apply按钮。这将安装相应的SDK。

现在运行你的应用程序,它应该工作没有任何例外。

其他回答

对于反应本机应用程序:

如果你的React Native应用有这个问题,除了上面提到的步骤,确保你有本地。在你的应用程序的android目录(AppName/android)中指向你的“sdk”目录的properties文件:

sdk.dir=/PATH_TO_SDK/

我终于在Windows上找到了一个解决方案,有一个真正的静音和自动安装:

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

echo y | sdkmanager --licenses

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

解决方法是创建一个文件file-y.txt,其中包含几个“y”,一行一行,然后使用

call sdkmanager --licenses < file-y.txt

这将在许可证目录中创建所需的文件。这个问题可能与Java中BufferedReader的使用有关

我花了半天的时间来寻找比特桶管道的解决方案

如果你正在使用Bitbucket Pipelines,并且你有接受所有SDK许可证的问题,请尝试在.yml文件中使用以下代码:

image: mingc/android-build-box:latest

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

它应该会起作用。

我解决了这个问题,因为我不能使用UI。它用于Azure中的管道。(Windows)没有一个答案对我有用,但是@ mobyfr发的file-y.t xtxt给我指明了正确的方向

这适用于新安装。你根本不需要使用Android Studio或任何UI。

Create C:\AndroidTest Create ENV variable called ANDROID_SDK_TOOLS with path from #1 Create ENV variable called JAVA_HOME and give it the folder path open up CMD in Admin mode and go to C:\Android curl --output test.zip https://dl.google.com/android/repository/commandlinetools-win-8092744_latest.zip Use your favorite command line to extract the zip into the same folder Navigate to the bin folder ( cmdline-tools\bin ) In this folder, create a file like mentions in another answer. file-y.txt and add a bunch of y's. Basically type y on each line. I did 20. So you have 20 lines with 1 y on each sdkmanager "platform-tools" "platforms;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 但是,我对此表示怀疑。

请注意,对于任何现在来问这个问题的人来说,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上,构建工具23.0.1之后的所有东西都是64位的,所以不能运行。32位用户被困在23.0.1上,获得后续构建工具的唯一方法是切换到64位。