Other B4A v7.01 has been released!

Erel

B4X founder
Staff member
Licensed User
Longtime User
I'm happy to release B4A v7.01. This update includes the new resumable subs feature. This is the most important programing language improvement since the addition of classes in B4A v2.
It makes it much simpler to manage asynchronous tasks.

Quoting @johndb :
This version sure does clean up the code without jumping from sub to sub to sub to ... to handle asynchronous processing in a very clean manner. This and the previous "multi-dex" features in my opinion are game changers for B4X.

Improvements:
  • Resumable subs - Wait For / Sleep: https://www.b4x.com/android/forum/threads/resumable-subs-sleep-wait-for.78601/#post-498072
    [B4X] SQL with Wait For
    [B4X] OkHttpUtils2 with Wait For
  • Async dialogs: https://www.b4x.com/android/forum/threads/doevents-deprecated-and-async-dialogs-msgbox.79578/
  • Variables and subs renaming based on the Find All References feature:

    rename-gif.53634


  • Quick search supports replacing including replacing in all modules.
  • Icon picker - Filter field supports filtering by hex code.
  • Starter service better handles cases where the process is started by multiple intents.
  • CSBuilder.Image adds an underscore instead of space to fix an issue with multiline strings.
  • Application_Error - Fixed a compatibility issue with Android 2.2.
  • PhoneCalls - READ_CALL_LOG permission added. This is a new requirement.
  • Sender is set when raising events with CallSub or CallSubDelayed from classes.
  • Debugger improvements related to deployments of large projects. It is recommended to upgrade B4A-Bridge to v2.31: https://play.google.com/store/apps/details?id=anywheresoftware.b4a.b4abridge&hl=en
  • DoEvents is deprecated. A warning will appear when using it (see the async dialogs tutorial). Note that it is still supported, exactly as before.
  • SQL library updated to make it simpler to use with Wait For.

Notes:
- B4A compiled libraries with service modules need to be recompiled.
- Java 8 is required (Tools - Configure Paths).

Developers who are eligible for a free upgrade will receive an email with upgrade instructions.
Other developers will receive an email with a discount offer.

Edit: v7.01 is available for download from the same link. It solves two bugs introduced in v7.00.
 
Last edited:

jayel

Active Member
Licensed User
Longtime User
maybe a stupid question...
Will my old B4A 6.8 apps still work after update to java 8?
 
Upvote 0

jayel

Active Member
Licensed User
Longtime User
Hmmm apparently not !!
B4A version: 7.00
Parsing code. (0.05s)
Compiling code. (8.16s)
Compiling layouts code. (0.18s)
Organizing libraries. (17.29s)
Generating R file. (7.69s)
Compiling debugger engine code. (3.15s)
Compiling generated Java code. (7.60s)
Convert byte code - optimized dex. Error
UNEXPECTED TOP-LEVEL ERROR:
java.lang.OutOfMemoryError: GC overhead limit exceeded
at com.android.dx.rop.cst.CstString.utf8BytesToString(CstString.java:158)
at com.android.dx.rop.cst.CstString.<init>(CstString.java:200)
at com.android.dx.cf.cst.ConstantPoolParser.parseUtf8(ConstantPoolParser.java:371)
at com.android.dx.cf.cst.ConstantPoolParser.parse0(ConstantPoolParser.java:262)
at com.android.dx.cf.cst.ConstantPoolParser.parse0(ConstantPoolParser.java:323)
at com.android.dx.cf.cst.ConstantPoolParser.parse0(ConstantPoolParser.java:309)
at com.android.dx.cf.cst.ConstantPoolParser.parse(ConstantPoolParser.java:150)
at com.android.dx.cf.cst.ConstantPoolParser.parseIfNecessary(ConstantPoolParser.java:124)
at com.android.dx.cf.cst.ConstantPoolParser.getPool(ConstantPoolParser.java:115)
at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:491)
at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)
at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)
at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)
at com.android.dx.command.dexer.Main.parseClass(Main.java:848)
at com.android.dx.command.dexer.Main.access$6(Main.java:843)
at com.android.dx.command.dexer.Main$ClassParserTask.call(Main.java:1776)
at com.android.dx.command.dexer.Main.processClass(Main.java:831)
at com.android.dx.command.dexer.Main.processFileBytes(Main.java:799)
at com.android.dx.command.dexer.Main.access$3(Main.java:770)
at com.android.dx.command.dexer.Main$FileBytesConsumer.processFileBytes(Main.java:1729)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:170)
at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
at com.android.dx.command.dexer.Main.processOne(Main.java:753)
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:647)

Help !
 
Upvote 0

tucano2000

Active Member
Licensed User
Longtime User
After the update from version 6.80 to 7.01 I got the following error while compiling my application:

B4A version: 7.01
Parsing code. (0.52s)
Running custom action. (0.48s)
Compiling code. (0.94s)

ObfuscatorMap.txt file created in Objects folder.
Compiling layouts code. (0.12s)
Organizing libraries. (0.00s)
Generating R file. (1.14s)
Compiling generated Java code. Error
B4A line: 1185
SQLA1.ExecQueryAsync(\
javac 1.8.0_101
src\com\infranote\fotos.java:691: error: incompatible types: String[] cannot be converted to List
mostCurrent._vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv1.ExecQueryAsync(processBA,"REGISTROS_SQLITE","PRAGMA cipher_migrate",(String[])(anywheresoftware.b4a.keywords.Common.Null));

It looks like the line where the error occurs is this:

SQLA1.ExecQueryAsync ("REGISTROS_SQLITE", "PRAGMA cipher_migrate", Null)

SQLA1 is declared as SQLCipher.

Has there been any change that I should make?
 
Upvote 0
Top