Skip to content

Commit

Permalink
Mobile app - Building guide
Browse files Browse the repository at this point in the history
  • Loading branch information
1aerostorm committed Nov 24, 2024
1 parent 8cee142 commit f3d1810
Showing 1 changed file with 90 additions and 0 deletions.
90 changes: 90 additions & 0 deletions CORDOVA.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# Мобильное приложение GOLOS Кошелек

Работает на Android.

```js
git clone https://github.com/golos-blockchain/ui-wallet
```

### Сборка приложения

Для сборки требуется **Linux** (например, Ubuntu 18 - 20).

1. Если у вас Linux современных версий (например **Ubuntu 20** или выше) - установите **Node.js 18** ([Windows](https://nodejs.org/dist/v18.20.5/node-v18.20.5-x64.msi), [Linux](https://github.com/nodesource/distributions/blob/master/README.md)).
Если у вас **Ubuntu 18** или иной старый Linux - установите **[Node.js 16](https://github.com/nodesource/distributions/blob/master/OLD_README.md#using-ubuntu-3)**.

2. Установите Android Studio.

3. Запустите Android Studio. Установите все, что будет предложено при установке.

4. Создайте пустое приложение Android (с любым Activity и конфигурацией), соберите его. Это нужно для прроверки правильности установки Android Studio.

5. Запустите терминал.

6. Установите глобальные зависимости:
```sh
npx yarn global add [email protected]
```

7. Скачайте репозиторий с помощью git clone (команда есть выше), и зайдите в его папку с помощью:
```sh
cd ui-wallet
```

8. Внесите все **настройки** в файле `config/mobile.json`:

- site_domain (пример: wallet.golos.id то есть основной домен Кошелька)
- images
- auth_service
- notify_service
- blogs_service
- messenger_service
- app_updater

9. Установите все зависимости (для сборки).

```sh
npx yarn install
```

10. Выполните команду (/root/ - это должен быть ваш путь к папке профиля, в ней лежит папка Android):
```sh
export ANDROID_SDK_ROOT=/root/Android/Sdk
```

11. Установка совместимой системы сборки.

Установите JDK (отдельно от Android Studio):
```sh
sudo apt-get install openjdk-8-jdk
```
После этого команда `javac -version` должна выдавать ответ вида: javac 1.8.x

Установите Gradle (отдельно от Android Studio):
```sh
sudo apt-get install gradle
```

Добавьте /root/Android/Sdk/platform-tools в переменную PATH (для adb, вспомогательное, для сборки не обязательно)

12. Откройте Android Studio, а из нее откройте SDK Manager (кнопка "☰" -> Tools -> SDK Manager). Установите Android build tools 30.0.3.
Для этого слева выбираете **Languages & Frameworks -> Android SDK**, во вкладках сверх выбираете **SDK Tools**, включаете **Show package details**, отключаете **Hide obsolete packages**, после чего выбираете нужную версию Build tools и нажимаете Apply для установки.

13. Если собираетесь автоматически устанавливать и запускать приложение (а не вручную, перекинув apk на устройство), то сделайте следующее. Подключите устройство по USB (разрешив отладку) и убедитесь, что adb видит его, выполнив в командной строке команду
```sh
adb devices
```

14. Соберите приложение.

```sh
npx yarn run build:mobile
```
Сборка происходит в два этапа - сначала собирается код React с помощью Webpack, затем на его основе собирается мобильное приложение с помощью Cordova.

Этап Cordova может выдавать ошибки, которые нужно устранить дополнительно.

В случае ошибки с требованием установить Build Tools нужной версии или иные компоненты, необходимо поступить как описано в пункте 12, выбрав нужную версию нужного компонента и установив. Затем снова попробовать собрать (используя при этом команду `npx yarn run postbuild:mobile`, чтобы не повторять этап Webpack, который уже выполнен).

В случае успешной сборки собранный APK будет в `cordova/platforms/android/app/build/outputs/apk/debug`
Кроме того, APK сразу же устанавливается на устройство. Об успешной установке свидетельствует сообщение `INSTALL SUCCESS`. Ошибка типа `"sh" ?? ?????` говорит о том, что устройство не обнаружено (например, проблемы с разъемом, кабелем).

0 comments on commit f3d1810

Please sign in to comment.