Fyne 不只能写桌面应用,也可以打包 Android APK。不过移动端构建比桌面复杂,需要准备 Android SDK 目录、NDK 和命令行工具。
这里不安装完整 Android Studio,而是使用 Google 官方的 command line tools,再通过 sdkmanager 安装需要的 Android 组件。
需要准备什么
Android 打包至少需要:
- Go
- Fyne CLI
- Android command line tools
- Android SDK Platform
- Android SDK Build Tools
- Android NDK
adb命令
严格来说,NDK 是编译 Fyne Android 版本时最关键的部分,因为 Fyne / Go 移动端构建会用到原生编译工具链。但 NDK 不是单独工作的,它通常放在 Android SDK 目录下面,并且还需要 platform-tools 提供 adb,需要 platforms;android-xx 和 build-tools;xx 参与打包。
所以更准确的说法是:不一定要安装完整 Android Studio,但需要准备一个 Android SDK 目录,并在里面安装 NDK、平台、构建工具和 platform-tools。
安装 command line tools
先到 Android Developers 下载 Command line tools only:
1 | https://developer.android.com/studio#command-tools |
假设把 Android SDK 放在 ~/Android/Sdk:
1 | mkdir -p ~/Android/Sdk/cmdline-tools |
解压下载的 command line tools 后,需要整理成这样的目录结构:
1 | ~/Android/Sdk/cmdline-tools/latest/bin/sdkmanager |
如果解压后直接得到一个 cmdline-tools 目录,可以把里面的内容移动到 latest:
1 | mkdir -p ~/Android/Sdk/cmdline-tools/latest |
配置环境变量:
1 | export ANDROID_HOME=$HOME/Android/Sdk |
可以把上面几行写入 ~/.bashrc、~/.zshrc 或你正在使用的 shell 配置文件。
使用 sdkmanager 安装组件
先查看可安装的组件:
1 | sdkmanager --list |
安装 platform-tools、Android 平台、Build Tools 和 NDK:
1 | sdkmanager "platform-tools" "platforms;android-36" "build-tools;36.0.0" "ndk;28.2.13676358" |
版本号可以根据 sdkmanager --list 的输出调整。写脚本时建议固定版本,避免以后自动装到新版本后出现不可复现的问题。
第一次安装时需要接受许可:
1 | sdkmanager --licenses |
确认 adb 可用:
1 | adb version |
如果提示找不到命令,需要把 Android SDK 的 platform-tools 目录加入 PATH。
打包 APK
进入 Fyne 项目目录:
1 | fyne package -os android -app-id com.example.myapp -icon mobileIcon.png |
app-id 要使用唯一标识,通常写成反向域名。第一次发布后不要随意修改,否则系统会认为这是另一个应用。
命令执行完成后,会在当前目录生成 APK 文件。
安装到手机
手机开启开发者选项和 USB 调试后,先确认设备:
1 | adb devices |
安装:
1 | adb install myapp.apk |
如果已经安装过旧版本,可能需要:
1 | adb install -r myapp.apk |
调试包和发布包
自己测试时,能安装运行即可。正式发布时,还需要关注签名、版本号、权限、图标、隐私说明等问题。
Android 发布不是只有生成 APK,还包括应用标识、证书管理、版本升级策略。证书一旦用于发布,也不要轻易丢失或更换。
桌面界面迁移到手机的注意点
桌面窗口通常比较宽,手机屏幕更窄,还要考虑触摸操作和输入法遮挡。布局上要多用滚动容器,少依赖左右分栏。
适合移动端的界面:
- 单列布局
- 大一点的按钮
- 简洁表单
- 明确的页面层级
复杂的桌面工具可以先做桌面版,再挑选最核心功能迁移到 Android。