自动接受所有SDK许可证

oad 发布于 2019-09-01 android 最后更新 2019-09-01 09:52 74 浏览

由于gradle安卓插件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脚本? 你有什么想法 ? 谢谢! [编辑] 解决方案是执行:
android update sdk --no-ui --filter build-tools-24.0.0,android-24,extra-android-m2repository
并手动安装它,但它是Gradle的新功能。 [编辑2] 更好的解决方案是使用sdkmananger:
yes | sudo sdkmanager --licenses
已邀请:

iodit

赞同来自:

复制整个许可证/目录并将其粘贴到您希望构建项目的计算机上的Android SDK主目录中。 https://developer.android.com/studio/intro/update.html#download-with-gradle 这解决了我的问题

cnisi

赞同来自:

我导航到: 代理人的地方0 我输入了终端: PLACEHOLDER FOR_CODE_1 有root权限。 它现在对我有用。

nquas

赞同来自:

这项工作就像一个魅力。疑难杂症。 (睡觉时3;回声“y”;完成)| $ ANDROID_HOME / tools / android更新sdk -u

qfugit

赞同来自:

不推荐使用android工具,您应该使用sdkmanager。首次接受时,sdkmanager也会写入许可证文件。许可证会根据您使用的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

uaut

赞同来自:

我通过使用接受的许可证文件创建公共git仓库来解决此问题。然后我使用wget在我需要的任何机器上将这些许可证提取到[sdk-dir] / licenses目录中,然后再运行./gradlew来构建我的项目。

dnulla

赞同来自:

我们在Jenkins上发现了同样的问题。使用buildToolsVersion '25.0.2',我们必须在构建之前接受许可。在我们的例子中,我们需要运行: 请求我们接受sdkmanager许可的./sdkmanager --update,然后 ./sdkmanager --licenses请求我们接受之前未接受的新许可 请记住:使用与jenkins相同的用户运行这些commans。在我的Debian中,Jenkins用户只是jenkins。换句话说:将其作为root创建将创建接受的许可证为root,因此Jenkins不会读取它们。 顺便说一下,我们在/var/lib/jenkins/tools/android-sdk/tools/bin找到了sdkmanager。如果您的不在,请使用find / -name "sdkmanager"找到它

jautem

赞同来自:

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

bsit

赞同来自:

不幸的是,OP最初解决它的方式并不总是有效。 如果从错误消息中找到了构建当前构建工具版本的内容。它可能是缺少更高版本的构建工具。在这种情况下,您需要手动启动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 answer 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高兴。因此,在有人提出更好的建议之前,手动接受是唯一的解决方案。 (请做!)

prem

赞同来自:

使用Cordova时我遇到了同样的错误。 问题是由于我通过Android Studio安装了Android Sdk,并通过apt install android-sdk adb安装了apt。 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

oad

赞同来自:

我可以找到这个问题的方法。

  1. 通过接受许可协议更新带有命令窗口的sdk工具,如下所示,只需根据需要更改版本。 android update sdk --no-ui --filter build-tools-25.0.2,android-25,extra-android-m2repository
  2. 第二种方法是将许可证文件夹复制到Android根目录。转到您的开发机器打开Android Studio。从“项目结构”菜单中找到您的sdk位置。 (C:\ Users \用户名\应用程序数据\本地\的Android \ SDK)。在该目录下必须有许可证文件夹。使用内容复制该文件夹。在android sdk根文件夹下将该文件夹粘贴到Jenkins服务器计算机中(或者您遇到此问题的位置)。 (C:\ Users \用户UserName.jenkins \工具\ Android的SDK)

lsint

赞同来自:

我在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,我想这将定期更新,所以这段代码只能工作这么久:)
And install it manually, but it is the gradle's new feature purpose to do it.
我很惊讶,即使我已经通过android工具接受了命名组件的许可证,但这并没有开箱即用,但有人向我指出它内部的SDK管理器创建了/licenses文件夹。 我想官方工具不会因为法律原因而不想跳过这一步。 重读它所述的发行说明
SDK auto-download: Gradle will attempt to download missing SDK packages that a project depends on.
这并不意味着如果您还没有安装Android工具并且已经接受了最新的许可证,它将会起作用。 编辑:说,在我将SDK链接到AS之前,它仍然无法在我的测试gubuntu盒子上运行。 CI工作正常 - 不确定区别是什么......

ksequi

赞同来自:

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

(while sleep 3; do echo "y"; done) | $ANDROID_HOME/tools/android update sdk -u
这当然会安装所有可用的更新,但如果你可以节省磁盘空间,它将节省你一些时间。睡眠是为了避免安装程序中的读取线损坏,因为在这种情况下“是”不能正常工作。 编辑:如果您使用内置的SDK管理器,还需要在构建步骤中添加“安装Android项目先决条件”插件以获取正确的$ ANDROID_HOME。

nut

赞同来自:

对于最新的Android Studio(2.3),更新/接受所有许可证的最佳方法是运行:

tools/bin/sdkmanager --licenses
您可能仍需要根据您的设置将许可证文件复制到其他位置。

sit_id

赞同来自:

在Windows PowerShell中,您可以执行此操作

for($i=0;$i -lt 30;$i++) { $response += "y`n"}; $response | sdkmanager --licenses
这更加灵活,无需人工干预。 30号是任意的,应足以涵盖许可证接受的数量,但如果需要可以增加

wab

赞同来自:

对于REACT NATIVE APPs: 如果你有一个React Native应用程序的问题,除了上面提到的步骤,请确保你的应用程序的android目录(AppName / android)中有local.properties文件指向你的'sdk'目录:

sdk.dir=/PATH_TO_SDK/

lest

赞同来自:

这解决了我的错误

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

gsint

赞同来自:

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

eomnis

赞同来自:

我跑

#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 =>可以解决问题。

seaque

赞同来自:

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

vvel

赞同来自:

对于新的sdkmanager实用程序: yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;24.0.3" 在yes之间有一点延迟,所以命令可能会挂起许可证显示一段时间,但它不需要人为干预。

et_et

赞同来自:

AndroidSDK最终可以接受许可。

yes | sdkmanager --licenses

jfugit

赞同来自:

最后,这2个简单的步骤适用于Windows 10。 1)确保更新你的android构建工具和api。在您的Android Sdk上只需单击安装包即可安装可用更新。 2)启动Android Studio,系统将提示您为已更新的api和工具安装reqiured构建工具。这将安装构建工具属性,包括许可证和完成。

set

赞同来自:

有关SDK api编号25的错误消息: android update sdk --no-ui --all --filter build-tools-25.0.1,android-25,extra-android-m2repository

baut

赞同来自:

请注意,对于目前遇到此问题的任何人来说,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位。