1. NEW: BANano .b4xlib libraries
The big change is the introduction of being able to make and use BANano libraries in the B4X .b4xlib format.
This has a couple of profound advantages over normal .jar libraries for BANano:
a. Because the libraries are compiled at the same time as the app, BANano can remove classes that are not used in the app. This works best for libraries that use Custom Views.
E.g. suppose you made a big library with a lot of components like DatePickers, Grids, etc. If you don’t use a certain component, then that code is not included in your final app. This can reduce the size of the generated app considerably.
I think the way BANano generates a build (very modular) is now paying off big time.
But, this really depends on how modular the library builder has written his library.
e.g. if a class is used in a method in a module, but this method is never called in your app, all the classes (and the DependsOnAsset, see 6) will still be included.
c. No more need to make a library in two steps (BuildAsLibrary + Compile to Library)
As a Library Builder, there is nothing special you have to do in B4X, except using:
I’ve tried it on all the libs and projects I have and it looks like it works, but maybe there are still some problems in it. I had to make a lot of changes to the core of BANano to make this possible, so the chance exists.
In short: TAKE A BACKUP!
2. NEW: The generated .js files are in Build (release) modus a lot smaller (tests showed sometimes 50% smaller)
3. CHANGE: UseServiceWorker is now by default false. You will have to set it to True if you want to use a Service worker.
4. NEW: MinifyOnline now also minifies CSS files
6. NEW: DependsOnAsset
7. Because the Transpiler gets more and more options, I created a new object BANano.TranspilerOptions that hosts those options.
The old ones are marked DEPRECIATED (they still work, but will eventually be removed). A warning is shown.
8. NEW options: ShowWarningsDeadCode & RemoveDeadCode
Only works in Build
Shows a warning in the log if the transpiler suspects some code is dead (never used).
This is handy, especially in the final stage of development to remove code (or comment out) that is never used.
Methods with a _ in their name are always considerd to be needed.
9. Added the Fetch API: see here