Сборка go-приложений на fyne под Android


Содержание:


Prerequisites:

Сперва установим всё необходимое:

  • go
  • fyne, а также go install fyne.io/fyne/v2/cmd/fyne@latest
  • на случай если вы сейчас на Windows, то нужен еще и gcc for windows. Он понадобиться и для обычной компиляции под сам Windows. Не забудьте добавить путь к нему в PATH.

Установка Android Sdk & Ndk:

Отдельно поговорим про установку Android Sdk и Ndk. Сперва создадим место под них в ~:

mkdir Android

Затем по этой ссылке скачиваем Ndk версии r24 под нужную вам ОС. Распаковываем Ndk в нашу директорию Android:

sudo apt install unzip
cd Загрузки
unzip android-ndk-r24-linux.zip -d ~/Android
cd ~/Android
mv ndk-r24-linux ndk-bundle

Чтобы установить Sdk переходим по этой ссылке и выбираем нужную ОС. Нужно будет согласится с условиями пользования. Теперь устанавливаем:

cd Загрузки
unzip platform-tools-latest-linux.zip -d ~/Android
cd ~/Android
mv platform-tools Sdk

Мы установили всё необходимое, теперь нужно настроить переменные окружения. Вот как это можно сделать в Linux:

emacs ~/.bashrc

Вместо emacs можете использовать свой любимый редактор (но я буду вас осуждать за это). И добавляем в конец файла следующий фрагмент в котором заменяем все вхождения {$user} на свое имя пользователя:

export ANDROID_HOME="/home/{$user}/Android"
export ANDROID_NDK_HOME="/home/{$user}/Android/ndk-bundle"
export ANDROID_SDK_HOME="/home/{$user}/Android/Sdk"
export PATH=$PATH:$ANDROID_HOME:$ANDROID_NDK_HOME:$ANDROID_SDK_HOME

Теперь проверим что мы всё сделали правильно:

source ~/.bashrc
which adb # должно вывести: /home/{$user}/Android/Sdk/adb

Создание go-приложения:

Теперь можно приступить к созданию самого приложения:

mkdir my-app && cd my-app
go mod init my-app
emacs main.go

И добавляем следующий код:

package main

import (
	"fyne.io/fyne/v2/app"
	"fyne.io/fyne/v2/widget"
)

func main() {
	a := app.New()
	w := a.NewWindow("my-app")
	l := widget.NewLabel("hello")
	w.SetContent(l)
	w.ShowAndRun()
}

Возвращаемся в терминал и проверяем что код работает:

go mod tidy
go run main.go

Готовим телефон к работе:

Перво-наперво нужно настроить устройство на котором будет запускаться приложение. Есть несколько разных вариантов, но я остановлюсь на работе через USB. Способы для разных версий Android могут отличаться, в моем случае нужно было сделать следующее: заходим в настройках в О телефоне, много раз нажимаем на Версия MIUI пока не появится сообщение о получении прав разработчика, далее переходим в Расширенные настройки/Для разработчиков где включаем Режим разработчика, после чего ищем раздел Отладка и включаем опцию Отладка по USB. Когда устройство будет подготовлено подключаем его по USB кабелю к вашей машине.


Запуск приложения на телефоне:

Прежде чем запустить ваше приложение на телефоне необходимо сделать иконку этого приложения. Оно должно быть разрешением 100х100 пикселей и в формате png. Я обычно называю его logo.png.

Теперь у нас есть всё необходимое для запуска. Введите в терминале в корне вашего проекта следующее:

go mod tidy
fyne package -os android -appID my.app -icon logo.png -name myapp
adb -d install -r myapp.apk

Возможно для пользования adb придется еще немного повозиться, но я сейчас не могу точно сказать что именно нужно будет сделать. Как это принято говорить: оставим читателю в качестве упражнения)


Makefile для удобства работы:

Создадим следующий Makefile:

build:
	go mod tidy
	fyne package -os android -appID my.app -icon logo.png -name myapp

debug:
	adb -d install -r myapp.apk

install: build debug

Теперь после внесения изменений в код приложения всё что нужно будет сделать для их проверки на телефоне это вызвать следующую команду:

make install

Поздравляю! Теперь у вас есть свое Android-приложение написанное на Go!


наверх


2025-03-02