Fyne 系列 16:Android 打包特别篇:SDK、NDK 与 APK
cbowen

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-xxbuild-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
2
~/Android/Sdk/cmdline-tools/latest/bin/sdkmanager
~/Android/Sdk/cmdline-tools/latest/bin/avdmanager

如果解压后直接得到一个 cmdline-tools 目录,可以把里面的内容移动到 latest

1
2
mkdir -p ~/Android/Sdk/cmdline-tools/latest
mv cmdline-tools/* ~/Android/Sdk/cmdline-tools/latest/

配置环境变量:

1
2
3
export ANDROID_HOME=$HOME/Android/Sdk
export ANDROID_SDK_ROOT=$ANDROID_HOME
export PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$PATH

可以把上面几行写入 ~/.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。

 评论
评论插件加载失败
正在加载评论插件