Repository navigation
Rush 2.0.0
Rush 2 is here: Kotlin and Java extensions with Maven dependencies, Android libraries with their resources, R8, and several extensions in one app, built the same way every time.
Highlights
- Kotlin and Java, mixed in one project. Java 17 language features (records, switch expressions, text blocks) are desugared automatically, and with
min_sdk24 or higher newer Java APIs such asjava.timework too. - Maven dependencies from Maven Central and Google's Maven repository, plus local JARs and AARs in
deps/. AARs ship with their resources, which App Inventor compiles, and their manifests are merged into the extension's. - Several extensions in one app. Libraries are shipped as shared AARs that App Inventor de-duplicates, or relocated under the extension's package when they must stay private.
librariesinrush.ymloverrides where a library goes (exclude,provided,shared,private), andrush deps treeshows where each one goes and why. - R8 shrinks private libraries in every build;
rush build --optimizealso optimizes and obfuscates, and writes a mapping file for stack traces. - Android resources in
res/, andAndroidManifest.xmlfor permissions, services, activities and providers.${applicationId}becomes the app's package. - Documentation of the extension's blocks in Markdown, written next to the AIX.
- GitHub Actions:
shreyashsaitwal/rush-cli@v2sets up Rush in any workflow, and new projects come with a workflow that builds every change and publishes releases from tags. - AI agents and dev containers: every project carries instructions for AI coding agents (
AGENTS.md, a Claude skill) and a dev container for Codespaces and VS Code. The Rush extension template creates a project in the browser with nothing installed. rush upgradeinstalls new releases.- Reproducible and fast: the same project always produces the same AIX, and builds that change nothing skip compiling and DEX.
See the documentation and the roadmap.
Install
curl -fsSL https://raw.githubusercontent.com/shreyashsaitwal/rush-cli/main/scripts/install/install.sh | bashiwr https://raw.githubusercontent.com/shreyashsaitwal/rush-cli/main/scripts/install/install.ps1 -useb | iexComing from Rush 1
Rush 2 replaces Rush 1: install it with the commands above, then convert each project in place with rush migrate (commit or back it up first). See Migrating from Rush 1.
Coming from zainulhassan815/rush-cli 2.x
Rush 2 was stabilized in a fork, which released 2.0.0 to 2.5.0. Its work now continues here, and this release contains everything the fork shipped, plus:
- R8 replaces ProGuard. R8 reports classes that the shipped code uses but nothing ships as
Missing classerrors; add-dontwarnrules only for code that never runs. Rush owns-repackageclasses: a project rule file that sets it fails the build, andrush migrateremoves it. librariesinrush.ymlplaces a library explicitly.provided_dependenciesis deprecated;rush migrateconverts it.- Only libraries every App Inventor app has are treated as provided; the ones App Inventor adds for some components only are bundled.
- Fixes:
${applicationId}in AAR manifests becomes the app's package, so two apps using the same extension can be installed together; AARs that declare ids as<id name="…"/>(recent AndroidX) build on App Inventor;rush createno longer hangs when stdin isn't a terminal. - A warning for
Continuation<T>results, which App Inventor doesn't wait for; the docs now deliver slow results through events.
Installs from the fork read releases from the fork, so re-run the installer above once. To switch a project:
- Replace
zainulhassan815/rush-cliwithshreyashsaitwal/rush-cliin.github/workflows/build.yml,.github/workflows/copilot-setup-steps.ymland.devcontainer/devcontainer.json. - Run
rush migrate. Projects created by the fork's 2.x releases set-repackageclassesinsrc/proguard-rules.pro, which now fails the build;rush migrateremoves it and convertsprovided_dependencies. - Run
rush agentsto refresh the Rush skill for AI agents.