πŸƒβ€β™‚οΈ 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:

: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.

:gear: Manual Process for Windows


  1. Download the FAST as zip from here.
  2. Unzip the it at where you want.
  3. Copy the absolute directory of the unzipped Fast folder.
  4. Create FAST_HOME environment variable with the copied value (Optional).
  5. Set the copied value to path. mandatory
  6. Done. Now open the terminal and write fast -v to check the installed version.

: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:


8 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