-
Notifications
You must be signed in to change notification settings - Fork 26
Home
Rush is a build tool built to be a complete replacement for the existing way of developing extensions. It attempts to improve the overall developer experience and reduce the amount of boilerplate code you need to write to make extensions.
With Rush, you no longer need to use annotations to define your extension's metadata and Android manifest tags. Instead, you get a separate metadata file, rush.yml
, and direct support for AndroidManifest.xml
(more on that below).
Not just that, Rush sports a beautiful interactive CLI that accompanies you from scaffolding to building production-ready optimized builds of your extension.
Once you've Rush installed on your system, fire up a terminal app, cd
into the directory you wish to create the extension in, and then run rush create <extension_name>
. Answer the prompted questions, and woo-hoo, you have a brand new Rush project ready! 🥳
Now, cd
into the created directory and run rush build
. Once the build is complete, you'll find your extension in the out directory. Voila! You just built your very first Rush extension! To know more about the build command and its supported flags, check out this wiki.
If you take a look at the generated Java file for your extension, you'll find that there are no DesignerComponent
and SimpleObject
annotations in there. In fact, there is not a single class-level annotation. So, where did all these annotations go?
All the annotations related to defining the extension's metadata, like, its name, description, minimum Android SDK, license, etc. are replaced by the metadata file -- rush.yml
. It also keeps an entry of all the external libraries and assets required by your extensions.
To know more, check out this wiki.
Dependencies and assets defined in rush.yml are required to be added to
./deps
and./assets
directories respectively.
Believe it or not, nothing is worse than having to use Java annotations to define your extension's Android manifest elements. You know the pain if you've ever written large manifest tags using those annotations. Even writing a single one could be ridiculously tedious.
But worry not, with Rush you get out-of-the-box support for directly using an AndroidManifest.xml
file. It is located inside the src
directory and is generated automatically when you scaffold your extension with the rush create
command. It's time to say goodbye to the ugly annotations!
Because of the restrictions imposed by App Inventor's extension system, you can't use every manifest tag. For a detailed list of supported tags, check out this wiki.
When you build your extension with the --release
flag (-r
), Rush obfuscates, shrinks, and optimizes your extension's Java code using ProGuard. You can use the ProGuard rules file (proguard-rules.pro
), located inside the src directory, to modify the default behavior.
To turn off the optimization pass --no-optimize
flag along with the --release
flag. Similarly, you can optimize your code without the --release
flag by passing --optimize
flag (-o
) as well. More on supported build flags here.