🏃‍♂️ Fast : An Efficient Way to Build & Publish Extensions

:loudspeaker: An update is available v3.2.0

Date built: 29.04.25.16.03


  • Optimized Gradle & Maven resolver.
  • Optimized code suggestion feature for IntelliJ IDEA.
  • Corrected a few typo.
  • Renamed $FAST_HOME/lib/tools/d821+.jar to $FAST_HOME/lib/tools/d8_11+.jar.
  • Optimized R8 Shrinker & Dexer.
  • Added android-javadoc.jar to provided-deps.xml.

v3.1.0 22.04.25.21.40

  • Fixed compile-time dependencies resolving issues for GradleResolver.
  • Added support for using the system’s GRADLE_HOME if the bundle home is missing.
  • Fixed duplicates classes notes while using local JARs.
  • Optimized attaching AARs feature.
  • Added collect_rules attribute in fast.yml to use ProGuard rules from runtime AARs.
  • The default icon.png have been changed. (Designed by @Joe_J_Sanchez)
3 Likes

would anyone plz explain this warn.

 warning: warning: Supported source version 'RELEASE_8' from annotation processor 'org.jetbrains.kotlin.kapt3.base.ProcessorWrapper' less than -source '11

Thanks @Still-learning for the sweet words.

It’s ignorable. I suggest you update the FAST to the latest version.

I want to purchase the license. How to?

Something special is being cooked up for premium users of FAST-CLI.

1 Like
Note: there were 1382 duplicate class definitions.
  - Note: com.google.android.recaptcha.internal.zzjp accesses a method 'getInt(java.lang.Object,long)' dynamically
  - Note: com.google.android.recaptcha.internal.zzjp accesses a method 'putInt(java.lang.Object,long,int)' dynamically
  - Note: com.google.android.recaptcha.internal.zzjp accesses a method 'getLong(java.lang.Object,long)' dynamically
  - Note: com.google.android.recaptcha.internal.zzjp accesses a method 'putLong(java.lang.Object,long,long)' dynamically
  - Note: com.google.android.recaptcha.internal.zzjp accesses a method 'getObject(java.lang.Object,long)' dynamically
  - Note: com.google.android.recaptcha.internal.zzjp accesses a method 'putObject(java.lang.Object,long,java.lang.Object)' dynamically
  - Note: com.google.android.recaptcha.internal.zzjp accesses a method 'objectFieldOffset(java.lang.reflect.Field)' dynamically
  - Note: com.google.android.recaptcha.internal.zzjp accesses a method 'getLong(java.lang.Object,long)' dynamically
  - Warning: library class com.google.common.cache.CacheLoader depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.cache.CacheLoader$1 depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.cache.LocalCache$LoadingValueReference depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.cache.LocalCache$Segment depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.cache.LocalCache$Segment depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.cache.LocalCache$Segment$1 depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.cache.LocalCache$Segment$1 depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AbstractCatchingFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AbstractCatchingFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AbstractCatchingFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AbstractCatchingFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AbstractCatchingFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AbstractCatchingFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AbstractCatchingFuture$AsyncCatchingFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AbstractCatchingFuture$AsyncCatchingFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AbstractCatchingFuture$AsyncCatchingFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AbstractCatchingFuture$CatchingFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AbstractCheckedFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AbstractFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AbstractFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AbstractFuture$SetFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AbstractFuture$SetFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AbstractListeningExecutorService depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AbstractListeningExecutorService depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AbstractListeningExecutorService depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AbstractTransformFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AbstractTransformFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AbstractTransformFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AbstractTransformFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AbstractTransformFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AbstractTransformFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AbstractTransformFuture$TransformFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AggregateFuture$RunningState$1 depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AggregateFuture$RunningState$1 depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AsyncCallable depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.AsyncFunction depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Callables$2 depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.CombinedFuture$AsyncCallableInterruptibleTask depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.CombinedFuture$AsyncCallableInterruptibleTask depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.ExecutionSequencer depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.ExecutionSequencer depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.ExecutionSequencer$1 depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.ExecutionSequencer$2 depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.ExecutionSequencer$3 depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.ExecutionSequencer$3 depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.ExecutionSequencer$4 depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.ExecutionSequencer$4 depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.ExecutionSequencer$4 depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.ExecutionSequencer$4 depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.ExecutionSequencer$4 depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.ExecutionSequencer$4 depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.FluentFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.ForwardingCheckedFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.ForwardingCheckedFuture$SimpleForwardingCheckedFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.ForwardingFluentFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.ForwardingListenableFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.ForwardingListenableFuture$SimpleForwardingListenableFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.ForwardingListenableFuture$SimpleForwardingListenableFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.ForwardingListeningExecutorService depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.ForwardingListeningExecutorService depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.ForwardingListeningExecutorService depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures$FutureCombiner depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures$FutureCombiner depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures$FutureCombiner depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures$InCompletionOrderState depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures$InCompletionOrderState depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures$MappingCheckedFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.Futures$NonCancellationPropagatingFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.JdkFutureAdapters depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.JdkFutureAdapters depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.ListeningExecutorService depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.ListeningExecutorService depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.ListeningExecutorService depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.MoreExecutors$1 depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.MoreExecutors$1 depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.MoreExecutors$ScheduledListeningDecorator$ListenableScheduledTask depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.SettableFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.TimeoutFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.TimeoutFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.TimeoutFuture depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleAsyncTask depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: library class com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleAsyncTask depends on program class com.google.common.util.concurrent.ListenableFuture
  - Warning: there were 109 unresolved references to classes or interfaces.
            You may need to add missing library jars or update their versions.
            If your code works fine without the missing classes, you can suppress
            the warnings with '-dontwarn' options.
            (https://www.guardsquare.com/proguard/manual/troubleshooting#unresolvedclass)
  - Warning: there were 120 instances of library classes depending on program classes.
            You must avoid such dependencies, since the program classes will
            be processed, while the library classes will remain unchanged.
            (https://www.guardsquare.com/proguard/manual/troubleshooting#dependency)
  - Warning: there were 4 unresolved references to program class members.
            Your input classes appear to be inconsistent.
            You may need to recompile the code.
            (https://www.guardsquare.com/proguard/manual/troubleshooting#unresolvedprogramclassmember)
  - Unexpected error

These rules might be helpful:

-dontnote com.google.android.recaptcha.**
-dontwarn com.google.common.cache.**
-dontwarn com.google.common.util.concurrent.**

I also use those.

# Firebase Auth
-keep class com.google.firebase.** { *; }
-dontwarn com.google.firebase.**
-keep class com.google.android.gms.internal.firebase_auth.** { *; }
-dontwarn com.google.android.gms.internal.firebase_auth.**

# Credential Manager + Google Identity
-keep class androidx.credentials.** { *; }
-dontwarn androidx.credentials.**
-keep class com.google.android.libraries.identity.** { *; }
-dontwarn com.google.android.libraries.identity.**

# Kotlin Coroutines
-keep class kotlinx.coroutines.** { *; }
-dontwarn kotlinx.coroutines.**

# AndroidX + Kotlin
-dontwarn androidx.**
-dontwarn kotlin.**
-dontwarn org.jetbrains.**

# Keep data classes, annotations
-keepattributes *Annotation*
-keep class ** {
    @com.google.gson.annotations.SerializedName <fields>;
}

# Optional: suppress missing metadata/javac hints
-dontwarn org.intellij.lang.annotations.*
-dontwarn javax.annotation.**

# Avoid trimming required Firebase/Google reflective access
-keepnames class com.google.**
-keep class com.google.** { *; }
-keepattributes Signature,InnerClasses,EnclosingMethod,Exceptions

# Avoid stripping constructors
-keepclassmembers class * {
    public <init>(...);
}


-keep class com.google.android.gms.** { *; }
-keep class com.google.common.** { *; }
-dontwarn com.google.android.gms.**
-dontwarn com.google.common.util.concurrent.**
# Suppress missing references for known internal/platform classes
-dontwarn sun.misc.**
-dontwarn libcore.io.**
-dontwarn javax.lang.model.element.**
-dontwarn org.conscrypt.**
-dontwarn com.google.protobuf.**
-dontwarn com.google.appengine.**
-dontwarn com.google.common.**
-dontwarn com.google.android.gms.internal.firebase-auth-api.**
-dontnote com.google.android.recaptcha.**
-dontwarn com.google.common.cache.**

hi @JEWEL
how to apple plugin in fast:

apply plugin: 'com.google.gms.google-services'

You can’t add any additional plugins with FAST. Anyway, why’d you need to add plugins when building extensions?

:green_heart: An update is available v3.6.0

Date built: 11.06.25.16.16 :bangladesh:


  • Executes blocks generator with the -b argument.
  • Generates components.png for each builder.

v3.5.2:

  • Updated GradleResolver to the latest version 4.14.2.
  • Removed large watermark from blocks.png.
  • A few bugs have been fixed.

v3.5.1:

  • A minor bug have been fixed.
1 Like

Am trying to install Fast but it keeps says this, how can i install it?

I have already view all of it

first automatic install says successful but throw the same, also the manual

To run FAST-CLI, please ensure that you have a JDK installed on your system.

oky let me check

I would suggest installing JDK 11.

Does FAST support NDK?

This is totally off-topic for building extensions. NDK compiles native libraries.

1 Like

I bought the premium license, now it surprised me and I’m literally making extensions “FAST” :grinning_face_with_smiling_eyes:

1 Like