Skip to content
Jewel Shikder Jony edited this page Dec 27, 2025 · 32 revisions

🏃‍♂️ FAST (Feature-rich AppInventor Source Terminal) is An Efficient Way to Build & Publish App Inventor Extensions.
With FAST, you no longer need to use any class level annotations except @DesignerComponent.

🏅 If you are interested in accessing its premium features, please consider making a request for a (weekly/monthly/yearly/lifetime) premium access.

🪶 Features

🥇 Premium features

  • Gradle Dependency Resolver.
  • Maven Dependency Resolver.
  • Attach AAR Libraries.
  • Attach Custom XML.
  • Generates Shadow blocks.
  • Ability to apply ProGuard/R8 rules from runtime AARs.
  • Supports compiling AIDL sources.

🔥 Hot features

  • Dynamic Android compile SDK API level.
  • Generates docs in Markdown.
  • Generates blocks as PNG for each builder when -b passed.
  • Dynamic ProGuard library.
  • Integration of R8 Shrinker.
  • Dynamic Kotlin Compiler.
  • Seamless support for Java and Kotlin languages.
  • Supports AAR as dependencies.
  • Supports for multi-components in extension.
  • Supports red drop-down helper blocks.
  • All @annotations will be removed from built AIX even no ProGuard/R8.
  • Supports GitHub Actions workflows.

💧 Cool features

  • Code suggestions on VSCode, Eclipse, IntelliJ IDEA & Android Studio.
  • Ability to declare manifest in AndroidManifest.xml.
  • Supports shorthand class names (e.g: ...MyService) in manifest.
  • Keep classes declared in manifest automatically when -m passed.
  • Auto Project migration from Rush, extension-template & AI2 source based project.
  • Jetifier to migrate Android support libraries to Androidx.
  • Java 8 support, including lambda expressions ()->.
  • Generates a smaller size of extension.
  • Ability to filter AI2 provided classes to reduce the AIX size.
  • Ready for server side integration.

🤝 Supported OS

  • Windows
  • Linux
  • MacOS
  • Android (Termux)

🔌 Installation

📂 Creating a New Project

  1. Open or navigate terminal at where you want to create your extension project.
  2. Run fast create <extension_name> and simply follow the prompts.
  3. Your brand-new FAST project is ready to go! 🎉

💽 Building a FAST Project

  1. Open or navigate terminal at where your project is.
  2. Run fast build, once the build process finishes, your extension will be available in the out directory.
  3. Congratulations! You've just built your first FAST extension.
    For more details about the build command and its available flags, visit the Build Command Wiki.

❓ What Makes FAST Different?

If you examine the generated Java file for your extension, you'll notice that there are no class-level annotations except @DesignerComponent. Writing the @DesignerComponent annotation is mandatory to declare the component class. In this way, you'll be able to use multi-component within a single extension.

🗒️ The Config File (fast.yml)

Instead of traditional build configurations and minimum Android SDK requirements, FAST uses a config file called fast.yml. This file manages everything, including external libraries and assets required by your extension. To learn more, visit the Config File Wiki.

Note

Local dependencies and assets specified in fast.yml must be placed in the deps and assets directories, respectively.

🈸 AndroidManifest.xml

Writing Java @annotations to define Android manifest elements is very painful.
With FAST, there’s no need to worry. It provides built-in support for using an AndroidManifest.xml file directly. This file is automatically generated inside the src directory when you create your extension using the fast create command.

Note

Due to restrictions in MIT App Inventor's extension system, not all manifest tags are supported. For a detailed list of allowed tags, refer to the Android Manifest File Wiki.

🥷 Code Optimization and Obfuscation

When building your extension with the (-r) argument, FAST obfuscates, shrinks, and optimizes your Java code using ProGuard. You can customize the default behavior by modifying the ProGuard rules file (proguard-rules.pro), located in the src directory. Make sure that the ProGuard is enabled in fast.yml.

proguard: true

🔪 Uses of R8 Shrinker

If you want to use the R8 shrinker tool instead of ProGuard so pass -s as an argument instead of -r. Make sure that the R8 is enabled in fast.yml.

R8: true

🔃 Project Synchronization

To synchronize your project, execute the fast sync command. This will download any necessary or missing dependencies and integrate them into your project.

  • Why/when Sync is Required?
    Answer: When you modify, add or removed libraries from dependencies, compile_time or excludes you need to sync your project. Also when you make changes in kotlin or kotlin_version you need to sync your project.

Clone this wiki locally