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

Extensions do not support xml resources.

Import suggestions
Add This import to default project code, this import acsept common import of App inventor library.

import com.google.appinventor.components.runtime.;
import com.google.appinventor.components.common.
;
import com.google.appinventor.components.annotations.*;

Personally, I prefer to import only the classes I use.

This is awesome. Thank you @JEWEL. I have already successfully made my first extension.

For more complicated extensions, what would you suggest is the best way to test my code? Is there a way to run the different functions from the terminal without first having to compile and import the extension?

Welcome @Michael_Frey

FAST doesn't have a way to test extensions. You have to compile and import it to the builder to test it. It's super easy to test extensions with Companion.

Thanks. Thats what i have been doing.

1 Like

This post was flagged by the community and is temporarily hidden.

Can we help you, what is your issue ?

Its Easier Installation than rush. Rush Installation is Failed 3-4 times in my system windows as well as Linux. So i moved to traditional source. Now i try to continue with FAST.

FAST installation is successful but

image

Check the installation directory and show me the screenshot.

I just create folder FAST on desktop of my linux Mint. Then followed your instructions for Linux. After successful install message i checked FAST folder but its empty. Ok Now I retry again and post complete Log amd screenshot. So we can check what is missing.

image

Directory Where I open and install Terminal its Empty and no data

image

image

ok currently its working i liked its easyness than rush. i will try to work now.

1 Like
fast build -d
  __           _   
 / _| __ _ ___| |_ 
| |_ / _` / __| __|
|  _| (_| \__ \ |_ 
|_|  \__,_|___/\__| (v2.0.1)

- Cleaning build caches
- Increasing Components version
- Compiling Java classes
- Coping extension assets
- Reading AndroidManifest.xml
- Merging dependencies into a single jar
- Generating AndroidRuntime.jar
- Generating DEX bytecode
  - Warning in /home/iaiaia/Documentos/NoCodeMaker/CriarExtensoes/FastCliJewel/start-ioad/.fast/com.bosonshiggs.startioad/files/AndroidRuntime.jar:com/startapp/sdk/ads/external/config/ExternalAdConfig.class:
     Type `kotlin.collections.MapsKt` was not found, it is required for default or static interface methods desugaring of `void com.startapp.sdk.ads.external.config.ExternalAdConfig.<init>()`
  - Warning in /home/iaiaia/Documentos/NoCodeMaker/CriarExtensoes/FastCliJewel/start-ioad/.fast/com.bosonshiggs.startioad/files/AndroidRuntime.jar:com/startapp/sdk/ads/external/config/ExternalAdConfig.class:
     Type `kotlin.jvm.internal.Intrinsics` was not found, it is required for default or static interface methods desugaring of `void com.startapp.sdk.ads.external.config.ExternalAdConfig.setStrategies(com.startapp.sdk.ads.external.config.StrategyConfig)`
  - Warning in /home/iaiaia/Documentos/NoCodeMaker/CriarExtensoes/FastCliJewel/start-ioad/.fast/com.bosonshiggs.startioad/files/AndroidRuntime.jar:com/startapp/sdk/ads/external/config/ExternalAdConfig.class:
     Type `kotlin.jvm.JvmClassMappingKt` was not found, it is required for default or static interface methods desugaring of `boolean com.startapp.sdk.ads.external.config.ExternalAdConfig.equals(java.lang.Object)`
  - Warning in /home/iaiaia/Documentos/NoCodeMaker/CriarExtensoes/FastCliJewel/start-ioad/.fast/com.bosonshiggs.startioad/files/AndroidRuntime.jar:com/startapp/sdk/ads/video/VideoEnabledAd.class:
     Type `com.startapp.json.JsonParser` was not found, it is required for default or static interface methods desugaring of `void com.startapp.sdk.ads.video.VideoEnabledAd.c(java.lang.String)`
  - Warning in /home/iaiaia/Documentos/NoCodeMaker/CriarExtensoes/FastCliJewel/start-ioad/.fast/com.bosonshiggs.startioad/files/AndroidRuntime.jar:com/startapp/sdk/internal/z7.class:
     Type `kotlin.collections.CollectionsKt` was not found, it is required for default or static interface methods desugaring of `void com.startapp.sdk.internal.z7.a(com.startapp.sdk.internal.z7, com.google.android.gms.ads.initialization.InitializationStatus)`
  - Warning in /home/iaiaia/Documentos/NoCodeMaker/CriarExtensoes/FastCliJewel/start-ioad/.fast/com.bosonshiggs.startioad/files/AndroidRuntime.jar:com/startapp/sdk/internal/z7.class:
     Type `com.google.android.gms.ads.MobileAds` was not found, it is required for default or static interface methods desugaring of `void com.startapp.sdk.internal.z7.a(com.startapp.sdk.internal.z7)`
  - Warning in /home/iaiaia/Documentos/NoCodeMaker/CriarExtensoes/FastCliJewel/start-ioad/.fast/com.bosonshiggs.startioad/files/AndroidRuntime.jar:com/startapp/sdk/internal/qa.class:
     Type `kotlin.sequences.SequencesKt` was not found, it is required for default or static interface methods desugaring of `com.startapp.sdk.internal.oa com.startapp.sdk.internal.qa.d()`
  - Warning in /home/iaiaia/Documentos/NoCodeMaker/CriarExtensoes/FastCliJewel/start-ioad/.fast/com.bosonshiggs.startioad/files/AndroidRuntime.jar:com/startapp/sdk/ads/external/config/AdUnitConfig.class:
     Type `kotlin.text.StringsKt` was not found, it is required for default or static interface methods desugaring of `java.lang.String com.startapp.sdk.ads.external.config.AdUnitConfig.getBp()`
  - Warning in /home/iaiaia/Documentos/NoCodeMaker/CriarExtensoes/FastCliJewel/start-ioad/.fast/com.bosonshiggs.startioad/files/AndroidRuntime.jar:com/startapp/sdk/internal/b8.class:
     Type `com.google.android.gms.ads.AdSize` was not found, it is required for default or static interface methods desugaring of `void com.startapp.sdk.internal.b8.a()`
  - Warning in /home/iaiaia/Documentos/NoCodeMaker/CriarExtensoes/FastCliJewel/start-ioad/.fast/com.bosonshiggs.startioad/files/AndroidRuntime.jar:com/startapp/sdk/adsbase/StartAppAd.class:
     Type `com.google.android.gms.ads.admanager.AdManagerInterstitialAd` was not found, it is required for default or static interface methods desugaring of `kotlin.Unit com.startapp.sdk.adsbase.StartAppAd.a(com.startapp.sdk.adsbase.adlisteners.AdEventListener, com.startapp.sdk.ads.external.config.AdUnitConfig, int, com.startapp.sdk.adsbase.remoteconfig.MetaData, com.startapp.sdk.internal.q7)`
  - Warning in /home/iaiaia/Documentos/NoCodeMaker/CriarExtensoes/FastCliJewel/start-ioad/.fast/com.bosonshiggs.startioad/files/AndroidRuntime.jar:com/startapp/sdk/adsbase/StartAppAd.class:
     Type `com.google.android.gms.ads.rewarded.RewardedAd` was not found, it is required for default or static interface methods desugaring of `kotlin.Unit com.startapp.sdk.adsbase.StartAppAd.a(com.startapp.sdk.adsbase.adlisteners.AdEventListener, com.startapp.sdk.ads.external.config.AdUnitConfig, int, com.startapp.sdk.adsbase.remoteconfig.MetaData, com.startapp.sdk.internal.q7)`
  - Warning in /home/iaiaia/Documentos/NoCodeMaker/CriarExtensoes/FastCliJewel/start-ioad/.fast/com.bosonshiggs.startioad/files/AndroidRuntime.jar:com/startapp/sdk/internal/e2.class:
     Type `com.google.android.gms.appset.AppSet` was not found, it is required for default or static interface methods desugaring of `void com.startapp.sdk.internal.e2.a(android.content.Context, com.startapp.sdk.adsbase.model.AdPreferences)`
  - Warning in /home/iaiaia/Documentos/NoCodeMaker/CriarExtensoes/FastCliJewel/start-ioad/.fast/com.bosonshiggs.startioad/files/AndroidRuntime.jar:com/startapp/sdk/internal/a8.class:
     Type `com.google.android.gms.ads.AdListener` was not found, it is required for default or static interface methods desugaring of `com.startapp.sdk.internal.a8`
  - Warning in /home/iaiaia/Documentos/NoCodeMaker/CriarExtensoes/FastCliJewel/start-ioad/.fast/com.bosonshiggs.startioad/files/AndroidRuntime.jar:com/startapp/sdk/internal/v7.class:
     Type `com.google.android.gms.ads.admanager.AdManagerInterstitialAdLoadCallback` was not found, it is required for default or static interface methods desugaring of `com.startapp.sdk.internal.v7`
  - Warning in /home/iaiaia/Documentos/NoCodeMaker/CriarExtensoes/FastCliJewel/start-ioad/.fast/com.bosonshiggs.startioad/files/AndroidRuntime.jar:com/startapp/sdk/internal/x7.class:
     Type `com.google.android.gms.ads.FullScreenContentCallback` was not found, it is required for default or static interface methods desugaring of `com.startapp.sdk.internal.x7`
  - Warning in /home/iaiaia/Documentos/NoCodeMaker/CriarExtensoes/FastCliJewel/start-ioad/.fast/com.bosonshiggs.startioad/files/AndroidRuntime.jar:com/startapp/sdk/internal/sa.class:
     Type `com.startapp.json.TypeParser` was not found, it is required for default or static interface methods desugaring of `com.startapp.sdk.internal.sa`
  - Warning in /home/iaiaia/Documentos/NoCodeMaker/CriarExtensoes/FastCliJewel/start-ioad/.fast/com.bosonshiggs.startioad/files/AndroidRuntime.jar:com/startapp/sdk/internal/fh.class:
     Type `com.google.android.gms.tasks.OnSuccessListener` was not found, it is required for default or static interface methods desugaring of `com.startapp.sdk.internal.fh`
  - Warning in /home/iaiaia/Documentos/NoCodeMaker/CriarExtensoes/FastCliJewel/start-ioad/.fast/com.bosonshiggs.startioad/files/AndroidRuntime.jar:com/startapp/sdk/internal/u7.class:
     Type `com.google.android.gms.ads.rewarded.RewardedAdLoadCallback` was not found, it is required for default or static interface methods desugaring of `com.startapp.sdk.internal.u7`
  - Warning in synthesized for lambda desugaring:
     Type `kotlin.jvm.functions.Function1` was not found, it is required for default or static interface methods desugaring of `com.startapp.sdk.internal.-$$Lambda$m3JowPpmqZ4Io4_TfNsl1WF0OUg`
  - Warning in synthesized for lambda desugaring:
     Type `com.google.android.gms.ads.initialization.OnInitializationCompleteListener` was not found, it is required for default or static interface methods desugaring of `com.startapp.sdk.internal.-$$Lambda$FKpmP5g4AVgkLe-fnOzErZXEI98`
  - Warning in synthesized for lambda desugaring:
     Type `com.google.android.gms.ads.OnUserEarnedRewardListener` was not found, it is required for default or static interface methods desugaring of `com.startapp.sdk.internal.-$$Lambda$TZjLiw2clgdmiVAnig4-q8BbWr0`
- Packaging extension at /home/iaiaia/Documentos/NoCodeMaker/CriarExtensoes/FastCliJewel/start-ioad/out/com.bosonshiggs.startioad.aix
> BUILD SUCCESSFUL in 9s 902ms

Logcat

12-02 16:05:48.608  4086  4086 E ActivityThread: Activity io.kodular.iagolirapassos.Futebol_Soccer_testes.Screen1 has leaked IntentReceiver com.google.appinventor.components.runtime.Network$1@cdd8b5a that was originally registered here. Are you missing a call to unregisterReceiver()?
12-02 16:05:48.608  4086  4086 E ActivityThread: android.app.IntentReceiverLeaked: Activity io.kodular.iagolirapassos.Futebol_Soccer_testes.Screen1 has leaked IntentReceiver com.google.appinventor.components.runtime.Network$1@cdd8b5a that was originally registered here. Are you missing a call to unregisterReceiver()?
12-02 16:05:48.608  4086  4086 E ActivityThread: 	at io.kodular.iagolirapassos.Futebol_Soccer_testes.Screen1.$define(Screen1.yail:10252)

In fast.yml, set kotlin to true.
That solved those warnings for me.

1 Like

Even if the code is in Java?

Set the desugar_dex: false in fast.yml.

1 Like

Logcat: 12-02 18:36:35.595 7529 7548 E AndroidRuntime: java.lang.NoClassDefFoundError: Failed resolution of: Lkotlin/jvm/internal/Intrinsics;

fast build
  __           _   
 / _| __ _ ___| |_ 
| |_ / _` / __| __|
|  _| (_| \__ \ |_ 
|_|  \__,_|___/\__| (v2.0.1)

- Cleaning build caches
- Increasing Components version
- Compiling Java classes
- Coping extension assets
- Reading AndroidManifest.xml
- Merging dependencies into a single jar
- Generating AndroidRuntime.jar
- Generating DEX bytecode
- Packaging extension at /FastCliJewel/start-ioad/out/com.bosonshiggs.startioad.aix
> BUILD SUCCESSFUL in 9s 515ms

The specified class is missing from the apk. This means that this class must be included in the extension. In order for it to be included in the extension, it must be in the deps folder. I think it compiles correctly because this class is in the Fast folders but is not included in the extension.
Some libraries are only needed at compile time, some at run time. This class is clearly needed at run time.

2 Likes

Your extension uses Kotlin libraries, to add them just enable kotlin: true in fast.yml.

1 Like