如何自动接受 Android SDK 许可证,简化 Gradle 构建?
2024-03-04 13:03:27
自动接受 Android SDK 许可证
问题
在 Gradle Android 插件 2.2-alpha4 及更高版本中,Gradle 会尝试下载项目依赖项中缺失的 SDK 包。虽然这是一个很好的功能,但你需要接受许可协议才能下载这些 SDK 库。否则,Gradle 会提示你:
您尚未接受以下 SDK 组件的许可协议:[Android SDK Build-Tools 24、Android SDK Platform 24]。在构建项目之前,您需要接受许可协议并使用 Android Studio SDK Manager 完成缺少组件的安装。或者,要了解如何将许可协议从一台工作站传输到另一台工作站,请访问 http://d.android.com/r/studio-ui/export-licenses.html
手动接受这些许可证很麻烦,尤其是在你希望在执行 gradle build
时自动安装所有 SDK 依赖项时。
解决方案
可以使用 license-acceptance Gradle 插件 自动接受所有 SDK 许可证。
安装和使用
要安装此插件,请在你的 build.gradle
文件中添加以下行:
apply plugin: 'com.github.jk1.gradle.plugins:license-acceptance'
然后,运行以下任务以接受所有 SDK 许可证:
./gradlew acceptLicenses
完成这些步骤后,你将能够在不手动接受许可证的情况下构建你的项目。
注意
- 此插件需要 Android Gradle 插件 2.2-alpha4 或更高版本。
- 你可能需要在运行
acceptLicenses
任务之前关闭 Android Studio。 - 接受许可证后,你需要重新同步 Gradle 以使更改生效。
示例
以下是一个使用此插件的示例 build.gradle
文件:
apply plugin: 'com.android.application'
apply plugin: 'com.github.jk1.gradle.plugins:license-acceptance'
android {
compileSdkVersion 24
buildToolsVersion "24.0.0"
defaultConfig {
applicationId "com.example.myapplication"
minSdkVersion 15
targetSdkVersion 24
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile 'com.android.support:appcompat-v7:24.0.0'
}
要自动接受所有 SDK 许可证,你需要运行以下命令:
./gradlew acceptLicenses
常见问题解答
1. 为什么要自动接受 SDK 许可证?
这可以让你在执行 gradle build
时自动安装所有 SDK 依赖项,从而节省时间和精力。
2. 是否可以只接受特定 SDK 许可证?
不可以,此插件一次接受所有 SDK 许可证。
3. 在运行 acceptLicenses
任务之前,需要关闭 Android Studio 吗?
建议关闭 Android Studio,因为有时它可能会干扰许可证接受过程。
4. 如果我更改了依赖项或更新了 SDK,是否需要再次运行 acceptLicenses
任务?
是,如果你在更改依赖项或更新 SDK 后需要下载新的 SDK 库,则需要再次运行此任务。
5. 使用此插件是否会违反任何许可证条款?
否,此插件只是自动接受许可证,这与手动接受许可证没有区别。