This document describes how to build and package Yubico Authenticator from source.
Note
|
Yubico Authenticator 6+ uses a new codebase built using the Flutter
framework. The previous Qt codebase can be found in the legacy branch.
|
You will need the Flutter SDK with enabled desktop support, see: https://flutter.dev/desktop
Development has been done using the "Install from git" method of installing the SDK, from the "stable" channel.
This project uses several dependencies specified in the pubspec.yaml file, as well as in the helper/pyproject.toml file. These files specify version ranges which should be compatible. The corresponding pubspec.lock and helper/poetry.lock files contain the exact versions which are currently being used when building the app.
We recommend that this application be bundled with all its dependencies, using
the exact versions specified in the lock files. If this approach isn’t viable,
we strongly urge that upper bounds be set on the dependencies in accordance
with the pubspec and pyproject files. For example, the current version depends
on yubikey-manager >=5, <6
. It will likely not work with versions outside
this range!
The GUI requires a compiled version of Helper to run, which is built from the
sources in helper/ in this repository. Requirements for all platforms are
Python >= 3.8 and Poetry. This needs to be built prior to running
flutter build
or flutter run
.
Make sure the swig executable is in your PATH.
# Tested on Fedora 34 $ sudo dnf install pcsc-lite-devel python3-devel swig
When prerequisites are installed you build the helper by running build-helper.sh
(or build-helper.bat
on Windows).
Note
|
You will need to re-run the build script if changes have been made to
Helper’s code, or if flutter clean has been run.
|
Before you can build or run the app using the flutter command you need to build the helper, as described in the previous section!
To start the app, run:
flutter run -d <os>
where <os> is "windows", "macos", "linux", or an attached Android device name.
use flutter devices
to list available devices.
You can add the --release
flag to run a release build instead of debug.
To build the app without running it, use:
flutter build <os>
where <os> is "windows", "macos", "linux", or "apk".
Builds of the app will be create under build/<os>/
for desktop, or
build/app/
for Android.
This project uses both unit tests and integration tests.
The unit tests can be run with the command:
flutter test
These do not require a YubiKey, and are relatively quick to run.
The integration tests are slower but cover more end-to-end functionality. The require an attached YubiKey to run, and will make modifications to the data stored on that YubiKey. For instructions on running these tests, see these instructions.
See MacOS Packaging.