-
-
Notifications
You must be signed in to change notification settings - Fork 6
Home
🏃♂️ 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.
🥇 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
-bpassed. - Dynamic ProGuard library.
- Integration of R8 Shrinker.
- Dynamic Kotlin Compiler.
- Seamless support for Java and Kotlin languages.
- Supports
AARas dependencies. - Supports for multi-components in extension.
- Supports red drop-down helper blocks.
- All
@annotationswill 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
-mpassed. - 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.
- Windows
- Linux
- MacOS
- Android (Termux)
- Open or navigate terminal at where you want to create your extension project.
- Run
fast create <extension_name>and simply follow the prompts. - Your brand-new FAST project is ready to go! 🎉
- Open or navigate terminal at where your project is.
- Run
fast build, once the build process finishes, your extension will be available in the out directory. - Congratulations! You've just built your first FAST extension.
For more details about thebuildcommand and its available flags, visit the Build Command Wiki.
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.
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.
Local dependencies and assets specified in fast.yml must be placed in the
depsandassetsdirectories, respectively.
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.
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.
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: trueIf 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: trueTo 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 fromdependencies,compile_timeorexcludesyou need to sync your project. Also when you make changes inkotlinorkotlin_versionyou need to sync your project.