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

Version Date

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

:star2: Features


  • :fire: Integration of R8 Shrinker.
  • :fire: Maven dependency resolver.
  • :fire: Support for .aar files as dependencies.
  • Java 8 support, including lambda expressions (()->).
  • Support for Kotlin language to writte extension components.
  • Support for Multi-component in extension.
  • Integration of new red helper/drop-down blocks.
  • Up-to-date ProGuard library 7.6.1.
  • Generates a smaller size of extension.
  • @annotations less source codes.
  • All @annotations will be removed from built aix.
  • Optimizer to optimize aix size even no ProGuard.
  • Ability to declare manifest attributes in AndroidManifest.xml.
  • Support for Code suggestions on VSCode, Eclipse, IntelliJ IDEA and Android Studio.
  • Filter Mit App Inventor provided classes to reduce the aix size.
  • Support for project migration to FAST from Rush, extension-template & App Inventor source based extension.
  • Support for Jetifier to make Android Support libraries compatible with AndroidX.

:handshake: Supported OS


  • Windows
  • Linux
  • MacOS
  • Android (Termux, UserLand, etc)

:question: Requirements


  1. Only Java is required to run the FAST. (JDK 8 or 11 is recommended).

:thinking: How to install?


:desktop_computer: Windows Only


  1. Run the the below command on Windows PowerShell.
iwr https://raw.githubusercontent.com/jewelshkjony/fast-cli/main/scripts/install/win.ps1 -useb | iex
  1. The installation is successful. You’re now good to use the FAST CLI.

:computer: Linux, MacOS & Android Termux


  1. Run the the below command on terminal.
curl https://raw.githubusercontent.com/jewelshkjony/fast-cli/main/scripts/install/install.sh -fsSL | sh
  1. The installation is successful. You’re now good to use the FAST CLI.

:thinking: How to update the FAST


:envelope_with_arrow: Using Fast Command


  1. Open terminal and run fast upgrade.
  2. If an update is available it will ask to download it. Enter Yes to download the latest update.
  3. It will download the latest version. Wait while it downloads.
  4. Done.

:desktop_computer: Windows Only


  1. Make sure that FAST is already installed on your system.
  2. Run the the below command on Windows PowerShell.
iwr https://raw.githubusercontent.com/jewelshkjony/fast-cli/main/scripts/update/win.ps1 -useb | iex
  1. Done. Check the version of updated FAST.

:computer: Linux, MacOS & Android Termux


  1. Make sure that FAST is already installed on your system.
  2. Run the the below command on terminal.
curl -fsSL https://raw.githubusercontent.com/jewelshkjony/fast-cli/main/scripts/update/install.sh | sh
  1. Done. Check the version of updated FAST.

:thinking: How to create a new FAST project


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

:thinking: How to declare the component class


  1. You need to annotate with @DesignerComponent to declare extension component classes.
    Example:
@DesignerComponent(
  version = 1,
  versionName = "1.0",
  description = "Developed by JEWEL using Fast.",
  iconName = "icon.png"
)
  • Required attributes: version, iconName
  • Optional attributes: versionName, description, designerHelpDescription, helpUrl, licenseName, androidMinSdk
  • Ignored attributes: category

:thinking: How to build a FAST project


  1. Open 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 the proguard attribute is enabled in the fast.yml config file. Ex. proguard: true
  2. Run the build command with -r as an additional argument. Ex. fast build -r

:thinking: How to optimize using R8?

  1. Make sure that the R8 attribute is enabled in the fast.yml config file. Ex. R8: true
  2. Run the build command with -s as an additional argument. Ex. fast build -s

:bulb: Want to share an idea?


Please share your ideas here.

:bug: Getting issues?


Please open an issue here.

:handshake: For additional support


Please send me a private message or comment below.

:memo: Release Notes


Please read the release notes from here.

:moneybag: Donation


I have dedicated a significant amount of time and effort into developing the FAST. If you find my work beneficial and would like to show your appreciation, you may consider making a donation here.


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:


5 Likes

Thank you! Since Rush hasn’t been updated since 2021 and the Niotron IDE is also outdated, FAST is very welcome and overdue to make things easier for less experienced developers (like me).

2 Likes

Thank you for your feedback. It is very valuable to me. However, the FAST is able to compile the Niotron IDE extension source code.

Great :smiley:, this is very advanced and I’m glad that I was one of the beta testers of this wonderful tool.

1 Like

The FAST CLI feels like a breath of fresh air for us (extension developers). After testing it out, I’m genuinely impressed with its speed. Thank you for bringing this valuable tool to us!

2 Likes

I am truly grateful for your invaluable contributions and suggestions for Android Termux. Your assistance has been immensely beneficial to me.

1 Like

Thank you for the feedback! I’m glad to hear you’re enjoying the FAST CLI. We’ve worked hard to make it efficient, so it’s great to see it making a positive impact. Feel free to share any further suggestions!

1 Like

:loudspeaker: An update is pushed. Please run the update command to have the latest version v1.1.3


  • Added support for using a default icon.png.
  • By default, desugar_sources is now enabled.
  • Removed mock-related attributes from the fast.yml config.
1 Like

Good job @JEWEL :smiley:, this is very advanced and I’m glad that I was one of the beta testers of this wonderful tool

1 Like

I can’t thank you enough that how much you helped me to make the FAST stable for Linux operating system. Your insightful suggestions and innovative ideas are always highly appreciated and welcomed.

1 Like

:loudspeaker: An update is available (v1.1.4)


  • Fixed Java 8 sources compiling issues even desugaring is disabled.
  • Added custom bootclasspath support for targeting Java 8 on JDK8+
  • Now it’ll write additional logs to logs.txt at the installed location of FAST.
  • Changed title color and some prints color (blue to orange).

:warning: A clean installation is required, the update command might be not working.

:+1: Special thanks to @Patryk_F for helping me understand the build process :bouquet:

5 Likes

:loudspeaker: An update is available v1.2.1

:spiral_calendar: Date built: 30.10.24.23.43


  • FAST will print warnings if naming conventions are not followed.

x Cannot run program β€œjavac”: CreateProcess error=2, The system cannot find the file specified
getting error

Could you please share the logs.txt file that can be found in the installation location of FAST?

Hello @JEWEL i also found some issues while compiling extension here’s log file
logs.txt (1.4 KB)

:mega: An update is available v1.2.2

Date built: 02.11.24.06.29


  • Resolved an issue impacting the R8 dexer and shrinker.
  • Included naming conventions warnings for helper-blocks, arguments of choices, parameters of functions and events.
3 Likes

can i build using kotlin?

1 Like

Yes, FAST supports Kotlin language as well.

2 Likes

I’m using Fast and I want to know if it has support for aar?

Currently, you can’t directly use an aar file to develop extensions. You need to extract the classes.jar from the .aar file. Use any zip viewer application (e.x: Winrar) to unzip it.