我尝试使用
commandlinetools-linux-11076708_latest
为 Android NDK 项目设置仅命令行构建环境。
我知道如何“提前”接受 Android SDK 许可证,如下所述:https://developer.android.com/studio/projects/install-ndk
但是,NDK的许可证似乎丢失了。我尝试构建的所有 NDK 项目(例如来自 https://github.com/android/ndk-samples 的 hello-jni)都失败了:
> com.android.builder.sdk.LicenceNotAcceptedException: Failed to install the following Android SDK packages as some licences have not been accepted.
ndk;27.0.12077973 NDK (Side by side) 27.0.12077973
To build this project, accept the SDK license agreements and install the missing components using the Android Studio SDK Manager.
我相信现在鼓励以这种方式安装 NDK,还是我必须手动安装 NDK 才能接受许可证?
sdkmanager --licenses
产量:
[=======================================] 100% Computing updates...
All SDK package licenses accepted.
这就是我到目前为止设置 Android SDK 的方式(通过 Docker):
FROM ubuntu:latest
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y \
openjdk-21-jre \
zip \
wget && \
rm -rf /var/lib/apt/lists/*
RUN cd /opt && \
wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip && \
unzip commandlinetools-linux-11076708_latest.zip -d android_sdk && \
cd android_sdk/cmdline-tools && \
mkdir latest && \
mv bin/ lib/ NOTICE.txt source.properties latest/ && \
yes | /opt/android_sdk/cmdline-tools/latest/bin/sdkmanager --licenses
ENV ANDROID_HOME=/opt/android_sdk/cmdline-tools/latest/
<android_sdk>/licenses
目录包含以下许可证:
android-googletv-license
android-sdk-arm-dbt-license
android-sdk-license
android-sdk-preview-license
google-gdk-license
mips-android-sysimage-license
我也遇到了同样的问题。但是,对于解决方案,我没有在 cmdline-tools 中创建 latest 文件夹。 如果您像这样重建脚本,它应该可以工作:
解压:
commandlinetools-linux-11076708_latest
cmdline-tools
文件夹复制到合适的位置。例如。 /home/<your username>/android-sdk/
在
cmdline-tools/bin
目录中打开终端并执行以下命令:sh sdkmanager --licenses --sdk_root=/home/<your username>/android-sdk
sdk_root
的道路在这里非常重要。它必须指向cmdline-tools
之前的文件夹。在这个例子中android-sdk
对于您的脚本,
ANDROID_HOME
环境变量必须指向/home/<your username>/android-sdk
。在你的 Docker 中,它指向另一个位置。