java - Android SDK 许可证问题阻止在 IntelliJ 中构建 LibGDX 项目
问题描述
重新安装 Windows 10 后,我拼命想让我的 LibGDX 项目再次在 IntelliJ 中运行。由于 Android SDK 许可证问题,它不会构建。
我重新安装了之前在我的项目中使用的 Android Studio 和 Android SDK 27,但我收到以下错误消息:
配置项目“:android”时出现问题。 未能安装以下 Android SDK 软件包,因为某些许可证尚未被接受。 platform-tools Android SDK Platform-Tools patcher;v4 SDK Patch Applier v4 platforms;android-27 Android SDK Platform 27 build-tools;27.0.3 Android SDK Build-Tools 27.0.3 emulator Android Emulator tools Android SDK Tools
我发现以下线程有很多建议的修复:
“未能安装以下 Android SDK 软件包,因为某些许可证尚未被接受”错误
所以我知道我必须跑
%ANDROID_HOME%/tools/bin/sdkmanager --licenses
起初它不起作用,因为文件/users/MYUSERNAME/.android/repositories.cfg
丢失了。我在该路径创建了一个空文件,sdkmanager
再次运行并接受了所有许可证。但是,在 IntelliJ 中构建我的 LibGDX 项目时,我仍然遇到同样的错误。
这是我试图解决此问题的方法:
- 以
sdkmanager --licenses
管理员权限运行 - 跑
sdkmanager --update
而不是--licenses
- 安装了 Android 命令行工具并改用该
sdkmanager
批处理文件 - 确保该
%ANDROID_HOME%\licenses
文件夹存在并包含许可证文件 - 确保我的机器上没有安装另一个我不知道的 Android SDK -环境变量
ANDROID_HOME
和ANDROID_SDK_ROOT
(我读到前者已过时)都指向同一个文件夹,该文件夹也被配置为Android Studio 中的Android SDK 位置SDK 管理器和我的 IntelliJ 项目设置中的Android SDK 主路径 - 选择了Android Studio自带的JRE作为我机器上的标准Java运行环境(通过设置
JAVA_HOME
为C:\Program Files\Android\Android Studio\jre
) - 卸载了随 Android Studio 自动安装的 API 30 SDK,所以我只剩下 API 27
android\build.gradle
通过在我的 LibGDX 项目的文件中进行配置,尝试使用 API 30 SDK 而不是 API 27- 卸载 Android Studio,删除 SDK 文件夹并重新安装所有内容
- 添加
yes | sdkmanager --licenses
到我的gradlew.bat
这些似乎都没有帮助。当我sdkmanager --licenses
再次运行时,响应是
接受所有 SDK 包许可证。
但 IntelliJ 一直说相反。
我不知道如何解决这个问题。任何帮助将不胜感激。
解决方案
该问题很可能是由于过时的 Gradle 版本与其他一些依赖项(可能是 Android SDK)不兼容。我通过将我的项目迁移到最新的 LibGDX 版本(1.9.11
)解决了这个问题。
我的游戏无法使用gradle/wrapper/gradle-wrapper.properties
(version 5.4.1
) 中配置的 Gradle 包装器运行,因为我收到另一条错误消息(“无法打开 cp_init 重新映射的类缓存”),所以我切换到本地安装的最新 Gradle 版本(6.5.1
):Settings -> Build, Execution, Deployment -> Build Tools -> Gradle -> Use Gradle from: Specified location
30
我还从to下载了 Android API 29
,因为这是推荐用于LibGDX 1.9.11
. 但是,我不必再使用命令行工具来接受许可证了。
推荐阅读
- mysql - phpmyAdmin & SQL 错误 INSERT INTO 命令
- html - 浏览器缩放期间的 CSS sprite vs Image
- c# - 如何获取在.netcore web api(IFromFile)中选择的路径文件
- javascript - 使用 execCommand 设置 UnorderedList 的前景色
- flutter - Flutter:无法导航到另一个页面
- c - 即使我不尝试修改字符串,为什么还要在 C 中修改字符串?
- python - 通过python将文件从一个目录传输到另一个目录
- c# - 轻按几下如何修复?
- java - 在 Intent 之间传递对象 (intent.putExtra),使用领域对象
- javascript - 将属性分配给另一个 Dto