The crossbundle is a command-line tool that encapsulates boring stuff of Android and iOS build/packaging processes and helps mobile developers to create and maintain applications written in rust programming language.
Packaging status:
| Name | Description | Status |
| ---- | ----------- | ------ |
| Android APK | Default build result method. | ✅ |
| Android AAB | Supported via --aab
flag. | ✅ |
| Apple Debug IPA | Default build result method. Works only on Simulator and could be run on iPhone with Dev Certificate. | 🆗 |
| Apple Release IPA | Not supported yet. Crossbundle should generate xcodeproj
, but user should build and sign IPA manually. | 🛠 |
Game engines supported:
| Name | Description | Status |
| ---- | ----------- | ------ |
| Bevy | Default build method. Injects ndk-glue into generated tmp lib.rs
file. | ✅ |
| Macroquad | Supported via --quad
flag. Works as cargo-quad-apk but with all crossbundle
features. | ✅ |
P.S: If you don't find your engine here, open an issue! We are happy to add support for new engines.
✅ = Works and tested — 🆗 = Works but may contain bugs — 🛠 = Under development
sh
cargo install --git=https://github.com/dodorare/crossbow crossbundle
See installation documentation for more details on how to setup environment on your platform.
NOTE
For the correct work of the tool, you need to set up a development environment (ex. install some libraries and tools - such as Android SDK, Android NDK, XCode, etc). More information about how to set up the environment in the Android setup and iOS setup wiki pages.
```toml
app_name = "Example"
version_name = "0.1.0"
version_code = 1
minsdkversion = 21
targetsdkversion = 30
maxsdkversion = 31
icon = "ic_launcher"
useandroidmanifest = true
androidmanifestpath = "path/to/AndroidManifest.xml"
useinfoplist = true
infoplistpath = "path/to/Info.plist"
androidpackagename = "com.example.Example"
android_res = "res/android"
android_assets = "assets"
androidbuildtargets = ["aarch64-linux-android"]
applebuildtargets = ["aarch64-apple-ios", "x86_64-apple-ios"]
apple_res = "res/apple"
apple_assets = "assets"
[[package.metadata.androidpermissions]] name = "android.permission.INTERNET" maxsdk_version = 21 ```
To see the complete documentation for each command/subcommand you can write -h
or --help
:
```sh crossbundle -h crossbundle build android -h crossbundle run apple -h crossbundle install -h
```
Result of crossbundle -h
:
```text
USAGE:
crossbundle [OPTIONS]
OPTIONS:
-c, --current-dir
SUBCOMMANDS:
build Starts the process of building/packaging/signing of the rust crate
help Print this message or the help of the given subcommand(s)
install Installs bundletool and Android Studio's sdkmanager
log Attach logger to device with running application
new Creates a new Cargo package in the given directory. Project will be ready to
build with crossbundle
run Executes build
command and then deploy and launches the application on the
device/emulator
```
If you ran into problem of missing shared library in the apk/aab
- you can fix this by placing your .so
file into target/<rust-triple>/<profile>/tools/libname.so
. The builder will pick the library up and put it in the final package.
Licensed under Apache-2.0 License.