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:

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