šŸƒā€ā™‚ļø Fast : An Efficient Way to Build Extensions

17290888964984910270779313575145

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:


17 Likes

Nice work...will try this.

2 Likes

Can it be installed alongside RUSH, or are they mutually exclusive?

2 Likes

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

3 Likes

The FAST is a modified version of extension-template repository system. No conflict with Rush. You could use both tool together on your system.

4 Likes

I've tried this much better experience than Rush and moore features that make it different

1 Like

Are the appinvetor runtime classes up to date in Fast? Because extension-template hasn't been updated for a long time.

2 Likes

Yeah, there are. The runtime classes and the Android.jar are also up-to-date. And I'll try to keep everything updated when needed. You have the option to personally add any missing libraries to the installed location.

6 Likes

:+1:

2 Likes

You are most welcome :bouquet:

2 Likes

Nice broo, I am glad that I was one of the beta testers of this wonderful tool.
Keep on :heart:

2 Likes

Certainly, you are one of the most remarkable testers who have generously contributed numerous innovative ideas to enhance the capabilities of the Fast feature.

2 Likes

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

3 Likes

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

3 Likes

Is the implementation process of helper blocks the same as described here ?

2 Likes

Certainly, you are correct. I appreciate your inquiry.

2 Likes

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!

5 Likes

Thank you for your feedback. I am pleased to hear that you are finding the FAST CLI efficient and that it is having a positive impact on your work.

3 Likes

I may have missed some PR confirmations, but what are these files for?: mock_js and mock_css

1 Like
  1. Why does compilation fail when using deprecated interfaces? I understand the warnings but this should not break compilation.

  2. Why do we need to use desugaring? In Rush I can compile extensions without unnecessary desugaring. Is it possible to adapt Fast to compile in Java 11 without desugaring?