πŸƒβ€β™‚οΈ Fast : An Efficient Way to Build Extensions

Yeah, you're totally right. Maven takes care of finding all the necessary dependencies by following your implementations.

There are often version conflicts in Pom files, i.e. sometimes some library has a dependency on library x in version 1.0 and on library y in version 1.0. However, library x has a dependency on library y in version 1.1. Then we have library y in versions 1.0 and 1.1. Will both be downloaded and which one will our project use? And what happens if among our dependencies somewhere in the tree of all dependencies there is an androidx library which is in appinventor but in a different version? The library will not be downloaded? Or maybe it will be downloaded but will not be considered in the project?

1 Like

Only the higher version will be downloaded and .pom for both.

Maven will not download these libraries at all.

So, I have to download android x libraries also present in app inventor sources to deps folder and run fast build -r in order to override appinventor androidx libraries?

1 Like

Yeah, however, the filter_mit_classes attribute might be helpful if you’re unavailable to use the ProGuard. :+1:

1 Like

This function obfuscates or repacks added androidx libraries without proguard?

1 Like

No, when you enable it, FAST will not add AI2 provided classes into the final jar.

Hmm. But as far as I know extensions do not contain androidx libraries provided by appinventor? They are added with the final APK compilation, and Companion contains them. So I do not understand this function.

Hopefully a slightly easier one for you to answer:

  __           _   
 / _| __ _ ___| |_ 
| |_ / _` / __| __|
|  _| (_| \__ \ |_ 
|_|  \__,_|___/\__|

- Cleaning build caches
- Increasing Components version
- Compiling Java classes
 - local variable mWebView is accessed from within inner class; needs to be declared final at line 117 in ...
 - local variable base64Data is accessed from within inner class; needs to be declared final at line 365 in ...
x BUILD FAILED!

How do I declare these as final, no obvious place, that works...

line 117
image

line 365
image

1 Like

Show where you initialize these variables.

1 Like

Is OK, I figured it out :slight_smile:

Just in case anyone else runs across this issue, and as @Patryk_F suggested, I searched my code for the locations where the variables were actually initiated.

In my case

mWebView was on line 84, and base64Data was on line 360.

You will need to do a text search to find the correct locations.

2 Likes

It would be nice to have something like a separate beta so that we can test new versions and at the same time have a stable environment for building extensions.

2 Likes

Before the announcement here, we always test the beta version by the help of a few beta testers. However, I always upload the beta version on GitHub. You could check here a new update is already in under testing. And I announce about the beta update in the support group of FAST CLI (WhatsApp/Telegram).

why this error?

  • Increasing Components version
  • Compiling Java classes
    x C:\Users\DELL\AppData\Local\Fast\accessibility.fast\classes\simple_components.json

Could you please let us know which version of FAST you are currently using? If you are using version 1.1.4 or above, please share the logs.txt file with us.

Version: 2.0.1 22.11.24.21.37.

log.txt file contains

Fast is initialized.
The installed fast version is: 2.0.1 22.11.24.21.37
JDK version: 1.8
fast create initialized.
Got FAST_HOME from environment variable.
Got 77 libraries.
Coping the default icon.png
Adding the rt.jar to the .classpath to skip the LambdaMetaFactory class missing warning.

Could you please confirm this.

What happens if you try to build the project that's created by default?

now pls see this
logs.txt (2.1 KB)

:mega: An update is available v2.0.2

Date built: 23.11.24.20.35


  • Added a few more additional debug info into the logs.txt.
  • Modified the by default created project.
  • Compiling R.class from R.txt for remote AAR dependencies.
  • This exception is now handled and prints the root cause.

I have two question @JEWEL

  1. If a library contains some files e.g js or css in assets, will fast also move that to assets of final extension(packed aix).
  2. How it handle values.xml or .xml files in library resources.
    Thanks