What is Crossbow?
The crossbow project aims to provide a complete toolkit for cross-platform game development in Rust - from project creation to publishing. In addition, the project simplifies the creation, packaging, and signing of Android and iOS applications. We want to make most of our tools - engine agnostic to help rust game developers integrate them into their engines or games.
Why Crossbow?
There are already cargo-apk, cargo-mobile, cargo-xcode, etc. - why do I need another packaging tool?
Project crossbow is not only a packaging tool for Android and iOS - it's a toolkit. With crossbundle-tools you can customize and create new commands; with crossbundle you can create native .apk/.aab without any Java or setup Gradle project with fancy Crossbow Android plugins (iOS in near future); with crossbow-android you can write your own Android plugins in Java/Kotlin.
A lot of functionality was inspired by Godot, Xamarin, and cargo-apk.
Design Goals
- Customizable: Create new commands with available tools.
- Simple: Easy to start but flexible for strong devs.
- Capable: It's possible to build plain .apk/.aab or .app/.ipa; or with help of Gradle/XCode.
- Rust: Don't leave your Rust code - everything can be configured from
Cargo.toml.
📚 Documentation
Now we would recommend you to read crossbow's documentation. Over there you will find how to set up development environment, install needed crates and how to use the tools.
🗂️ Project structure
Crossbundle crates:
| Name | Description | Status |
|---|---|---|
| crossbundle | Command-line tool for building and running applications. | ✅ |
| crossbundle-tools | Toolkit used in crossbundle to build/pack/sign bundles. |
✅ |
Crossbow crates:
| Name | Description | Status |
|---|---|---|
| crossbow-android | Crossbow Android Platform implementation. | 🆗 |
| crossbow-ios | Crossbow iOS Platform implementation. | 🛠 |
| crossbow-admob | Google AdMob Plugin for Android (iOS in future). | 🆗 |
| crossbow-play-billing | Google Play Billing for Android. | 📝 |
| crossbow-play-games-sdk | Google Play Games Sdk for Android. | 📝 |
Helper crates:
| Name | Description | Status |
|---|---|---|
| android-tools-rs | Android-related tools for building and developing application. | ✅ |
| android-manifest-rs | AndroidManifest serializer and deserializer for Rust. | ✅ |
| apple-bundle-rs | AppleBundleResources serializer and deserializer for Rust. | ✅ |
✅ = Works and tested — 🆗 = Works but may contain bugs — 🛠 = Under development — 📝 = Planned
Special Thanks
Also, this project initially funded by Web3 Foundation Grants Program. Big shout-out to them!
📑 License
Licensed under Apache-2.0 License.
