Linux下已接受Android SDK许可仍报许可未接受无法编译问题
问题根因
你之前执行sdkmanager --licenses时没有显式指定SDK路径,且因为/opt/android-sdk只有root和android组有权限写入,普通用户执行该命令时,生成的许可文件默认会存储到当前用户家目录的.android路径下,并没有写入到/opt/android-sdk/licenses目录,导致全局SDK的许可文件不全。你下载组件时仅弹出platforms;android-31的许可提示,也是因为只有这一步你是写入到全局SDK路径的,其他组件的许可都默认落到了个人家目录,全局路径下未同步。
解决步骤
- 第一步:删除现有不完整的全局许可文件
sudo rm -rf /opt/android-sdk/licenses/*
- 第二步:显式指定全局SDK路径重新接受所有许可,用sudo保证写入权限:
sudo yes | sdkmanager --licenses --sdk_root=/opt/android-sdk
如果执行上述命令提示找不到sdkmanager,可替换为全路径调用:
sudo yes | /opt/android-sdk/tools/bin/sdkmanager --licenses --sdk_root=/opt/android-sdk
- 第三步:修正目录权限,添加setgid位保证后续新建文件自动继承android组权限:
sudo chown -R root:android /opt/android-sdk sudo chmod -R 775 /opt/android-sdk sudo find /opt/android-sdk -type d -exec chmod g+s {} \;
- 第四步:确认全局环境变量配置正确,打开
/etc/profile或者/etc/environment文件,添加以下配置:
export ANDROID_SDK_ROOT=/opt/android-sdk export PATH=$PATH:$ANDROID_SDK_ROOT/tools/bin:$ANDROID_SDK_ROOT/platform-tools:$ANDROID_SDK_ROOT/build-tools/31.0.0
配置完成后执行source /etc/profile加载配置,普通用户执行echo $ANDROID_SDK_ROOT验证变量是否生效,再重新编译项目即可。
内容的提问来源于stack exchange,提问作者ACarpena
相关产品推荐
相关产品推荐

