πŸƒβ€β™‚οΈ Fast : An Efficient Way to Build Extensions

image

Version Date

Credit: The idea of the installation process and the project structures is inspired by Rush. Thanks a ton, Shreyash :+1::gift:

:man_running: FAST is An Efficient Way to Build App Inventor Extensions For MIT App Inventor 2. With FAST, you no longer need to use any class level annotations except @DesignerComponent.

Explore the wiki section for comprehensive overview and step-by-step instructions on FAST.

:star2: Features

  • :fire: Generates docs in Markdown.
  • :fire: Maven dependency resolver.
  • :fire: Dynamic Kotlin Compiler.
  • :fire: Integration of R8 Shrinker.
  • :fire: Support AAR as dependencies.
  • Java 8 support, including lambda expressions ()->.
  • Seamless support for Java and Kotlin languages.
  • Support for Multi-component in extension.
  • Integration of new red drop-down helper blocks.
  • Up-to-date ProGuard library 7.6.1.
  • Generates a smaller size of extension.
  • All @annotations will be removed from built AIX.
  • Ability to declare manifest in AndroidManifest.xml.
  • Code suggestions on VSCode, Eclipse, IntelliJ IDEA & Android Studio.
  • Ability to filter AI2 provided classes to reduce the AIX size.
  • Auto Project migration from Rush, extension-template & AI2 source based project.
  • Jetifier to migrate Android support libraries to Androidx.

:handshake: Supported OS

  • Windows
  • Linux
  • MacOS
  • Android (Termux)

:thinking: How to install?

Refer to this wiki to install the FAST on your system.

:thinking: How to Update?

Refer to this wiki to update the FAST to the latest version.

:thinking: How to create a new FAST project

  1. Open or navigate terminal at where you want to create your extension project.
  2. Run fast create <ProjectName>
  3. Enter the package name.
  4. Enter author name.
  5. Select language.
  6. Done.

:thinking: How to build a FAST project

  1. Open or navigate termanl at where the FAST project is.
  2. Run fast build to build the project.
  3. Done. The compiled extension should be inside the out directory.

:thinking: How to optimize using ProGuard?

  1. Make sure that ProGuard is enabled in fast.yml.
  2. Run the build command with -r.

:thinking: How to optimize using R8?

  1. Make sure that R8 is enabled in fast.yml
  2. Run the build command with -s.

  • :moneybag: Donations are welcome here.
  • :memo: Release notes are here.
  • :bulb: Ideas are welcome here.
  • :bug: Submit issues here.
  • :handshake: For getting additional supports, text me in PM or drop a comment below.

Thanks a lot to all the beta testers of FAST. Without their feedback and help, it would have been impossible to make FAST a stable compiler. :tada:


9 Likes

Congrations on the launch! Looks useful for extension dev!

4 Likes

:mega: An update is available v2.0.5

Date built: 14.12.24.13.02


  • The ProGuard library has been updated to version 7.6.1.
  • FAST will prioritize the androidMinSdk value specified in fast.yml or @DesignerComponent or AndroidManifest.xml, applying the higher value during the build process.
  • A few minor bugs have been fixed.
2 Likes

Great :+1::+1::+1::+1::+1::+1::+1:

1 Like

:mega: An update is available v2.0.6

Date built: 17.12.24.23.12


  • Added fast upgrade command to update FAST to latest version.
  • Added fast sync build command to run sync and build commands simultaneously.
  • The Java compiler will generate debugging information if -d is passed.
  • Fixed some dependency resolution bugs.
  • Added missing argument to default prompt.
1 Like

Version v2.1.0 is currently undergoing testing.
I’d greatly appreciate feedback, especially from Linux and macOS users.

NOTE: A clean installation is required.

:mega: An update is available v2.2.0

Date built: 06.01.25.15.03


  • Jetifier is now accepts remote dependencies to process.
  • Jetifier is now accepts AAR dependencies to process.
  • Added -f argument to fast upgrade command to force a clean install.
  • Added -dir as global argument to define working directory manually.
  • Renamed a few JARs in tools directory.
  • A typo is corrected in default README.md

It’s a great work!

:mega: An update is available v2.3.0

Date built: 13.01.25.19.56


  • FAST will generates docs for your extension during build if gen_docs is enabled in fast.yml
  • If component specific elements are not defined, FAST will include manifest elements to the default component.
1 Like