在 Azure Pipelines 的 Ubuntu 代理上构建 Android 项目时,SDK 目录不可写

SDK directory is not writable when building Android project on Ubuntu agent of Azure Pipelines

我正在为 Android 项目配置构建管道。到目前为止,我的所有步骤都在托管 VS2017 代理上完美运行,包括获取代码、使用 gradlew 构建、发布工件并将其部署到 AppCenter。

但是,在 Hosted Ubuntu 1604 上,gradlew 步骤存在一些问题。

在 VS2017 代理上,这仅适用于:.\gradlew assembleDebug

在 Ubuntu 1604,这是我现在拥有的:

chmod 775 gradlew
chmod 775 /usr/local/lib/android/sdk --> The fix I'm working on
./gradlew assembleDebug

运行没有第二行的构建,代理会抛出这个异常:

What went wrong: A problem occurred configuring project ':app'.
Failed to install the following SDK components: build-tools;28.0.3 Android SDK Build-Tools 28.0.3
The SDK directory is not writable (/usr/local/lib/android/sdk)

我是 Ubuntu 的初学者...为什么它不可写?我尝试 chmod 但在这样做时出现异常:chmod: changing permissions of '/usr/local/lib/android/sdk': Operation not permitted.

我现在应该看哪个方向来解决这个问题...?提前谢谢大家!

我在标准 Ubuntu 安装中遇到了同样的问题。

解决方案:在您的主目录中安装 Android SDK

问题是,使用 Gradle 构建项目无法使用 read-only SDK。使用 apt 安装 Android SDK 会留下 read-only.

更准确地说,/usr/ 中的所有内容都应该是 read-only 数据,因此它归 root 所有,权限设置为 755。您的用户没有写入权限,只有所有者有。在您的主目录中安装 SDK(并确保您的用户拥有它)应该可以解决问题。

正在安装 SDK

我还没有看到安装只是 SDK 的好方法。 解决了这个问题;那里列出的方法之一应该有效。 但是,您可能会发现只安装 Android Studio 并为 SDK 选择一个自定义位置会更容易。

希望对您有所帮助!

根本不需要重新安装...

write 权限授予当前登录用户可解决问题。

更改 Android SDK 的所有权:

sudo chown -R $(whoami) $ANDROID_HOME