You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Ubuntu主仓库及宇宙源提供的自由许可Android SDK编译Flutter Android应用

如何使用Ubuntu主仓库及宇宙源提供的自由许可Android SDK编译Flutter Android应用

我完全懂你想用Ubuntu仓库里的自由许可Android SDK构建Flutter应用的想法——毕竟谁也不想碰那些带限制性EULA的组件对吧?结合你遇到的问题,我来一步步帮你搞定:

1. 补全缺失的SDK命令行工具

你看到flutter doctor提示缺少cmdline-tools组件,Ubuntu仓库里其实有对应的包可以安装,直接运行:

sudo apt install android-sdk-cmdline-tools

安装完成后,Flutter就能识别到必要的命令行工具了。

2. 跳过Google SDK许可证检查

咱们用的是Ubuntu编译的自由SDK,根本不存在Google那些专有许可证,所以flutter doctor --android-licenses肯定跑不通。这时候可以通过设置环境变量让Flutter跳过这一步检查:

# 临时生效,仅当前终端会话
export ANDROID_SDK_ROOT=/usr/lib/android-sdk
export FLUTTER_ANDROID_LICENSES_ALREADY_ACCEPTED=1

如果想让设置永久生效,把上面两行加到你的~/.bashrc(或者~/.zshrc,取决于你用的shell)文件末尾,然后运行source ~/.bashrc刷新配置。

3. 修改Flutter项目配置,强制使用已安装的自由SDK版本

Flutter默认会尝试拉取高版本的SDK组件(比如你遇到的android-33、build-tools-30.0.3),但这些可能不是自由许可的。咱们得手动指定用你已经安装的SDK版本:

  • 打开项目根目录下的android/build.gradle,找到ext代码块,修改成你已安装的版本(比如你装了android-sdk-platform-28就用28;如果是23就改成23):
    ext {
        compileSdkVersion = 28
        targetSdkVersion = 28
        buildToolsVersion = "28.0.3"  # 对应你安装的android-sdk-build-tools版本
    }
    
  • 再打开android/app/build.gradle,确保defaultConfig里的minSdkVersion不高于你的SDK版本(比如设为21就很稳妥):
    defaultConfig {
        // ... 其他配置
        minSdkVersion 21
        // ... 其他配置
    }
    

4. 清理缓存并重新构建

先清理之前构建留下的缓存,避免冲突:

flutter clean

然后尝试构建debug版本(先验证没问题再打release):

flutter build apk --debug

至于你提到的F-Droid的Flutter应用,他们其实也是用类似的思路:自己维护自由编译的Flutter工具链和Android SDK,并且强制项目使用这些自由组件,跳过不必要的专有许可证检查,这样就能合规地构建出自由软件性质的Flutter应用了。

备注:内容来源于stack exchange,提问作者andrew-e

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 15:38:17