A go program to build the go libraries needed for mobile clients.
- Install golang. (the script has been tested with go 1.15 only)
- Apple platforms: You need xcode (version 12 or above) installed
- Android platforms:
- You need android and android ndk installed.
- You need
$ANDROID_HOME
to point to your installation of Android sdk - You need to set
$ANDROID_HOME/ndk-bundle
or$ANDROID_NDK_HOME
to point to your android ndk
- Clone the repository
- Configure the the build (see below).
- Inside the cloned repository, run
make build cfg=/path/to/config/file
This should produce the artifacts inside the out
directory, set in the
configuration.
You can remove previous builds with make clean
.
You need to provide the builder program a configuration file.
We provide a few example configuration files in examples/
.
"go_version"
: Must match the version number of your local golang installation"build_dir"
: the directory to contain the generated the build script, default is"build"
"out_dir"
: the directory that will contain the artifacts, default is"out"
"go_mobile_dir"
: the directory where the fork of gomobile was clone, default is"mobile"
"go_mobile_flags"
: a list of flags given to thegomobile bind
command, see this for a list of flags."build_name"
: the name of the produced artifacts"build_tag"
: Used by gitlab automated builds to tag the builds"java_pkg"
: (for android) the name of the java package representing the go code, it defaults to the"build_name"
."min_ios_version"
: (for ios) the minimum version of iOS we want to support. (Forwarded to the-iosversion
option of gomobile)"targets"
: a list of platforms ("android"
and"apple"
) to build artifacts for, if not provided, the program builds for both platforms."requirements"
: used to specify a list of packages to include in the artifacts."module"
: the go module containing the package"path"
: the import path of the module"version"
: specifies which module version to use, either a commit tag (e.g"v2.0.1"
) or a commit hash, or"latest"
.
"packages"
: a list of package names from the module to include in the artifacts (without the full import path of the module). If not provided, the artifact will include the whole module.
"replacements"
: a list of module replacements for the artifacts-
"old"
: the module to replace"path"
: the path of the module"version"
: the version of the module to replace, if not included we replace all versions
-
"new"
: the module to replace with"path"
: the path of the module"version"
: the version of the module to replace with.
-
"local_path"
: a local path to the replacement module (instead of a remot go module)
-