Smart Devices Offline Applications Common Issues

Temporal Limitations

  • Some External Object methods, those that are executed from server side like GeoLocalizationAPI.GetDistance(), are not implemented yet for offline Generators. This kind of methods are generally invoked from System Events, Procedures and Data Providers.  However methods that run on device's side, those direclty mentioned on User Events are supported (for instance GeoLocalizationAPI.GetMyLocation).
  • There are some DataTypes that are not yet implemented for offline applications. Here is the list of non implemented DataTypes for offline applications for each Smart Device platform: Offline non-implemented DataTypes

'Known Error' when inserting / updating tables from offline app

This is a temporally restriction. Referential integrity messages errors, such as "Not matching Customer", "Customer already exists" , etc are not included.  This also apply for Error rule messages.

Unable to Chain SQLException no such column

This error appears when invoking a WWSD that requiere a join on SQlite between two tables (Order and Customer):

09-04 02:19:19.915: E/AndroidRuntime(884): Caused by: com.genexus.GXRuntimeException: java.sql.SQLException: Unable to Chain SQLException no such column: T1.CustomerId: , while compiling: SELECT T1.`CustomerId`, T1.`PurchaseOrderDate`, T1.`PurchaseOrderId`, T2.`CustomerName` FROM (`PurchaseOrder` T1 INNER JOIN `Customer` T2 ON T2.`CustomerId` = T1.`CustomerId`) ORDER BY T2.`CustomerName`

This was a restriction on SQlite 3.5.9 (more info).  Android 2.2 is required. Check GeneXus X Evolution 3 Hardware and Software Requirements


Android Execution Failed
Run <main> Failed


Android 2.1 is not longer supported as from GeneXus Tilo. Version 2.2 or higher is required.Check GeneXus X Evolution 3 Hardware and Software Requirements

After installed, delete the myGxAvd emulator instance and run the app again in order to create a new instance in GX.

Recommended: install Google Inc.:Google APIs:8 (2.2) in order to prototype faster than with Android 4.x emulator instances

java.lang.OutOfMemoryError when loading the app in Emulator

If logcat shows this error,  increase Max VM Heap size of the Android Virtual Device (AVD)

E/GeneXusApplication(  299): java.lang.OutOfMemoryError

E/GeneXusApplication(  299):  at java.lang.AbstractStringBuilder.enlargeBuffer(

E/GeneXusApplication(  299):  at java.lang.AbstractStringBuilder.append0(

E/GeneXusApplication(  299):  at java.lang.StringBuilder.append(

E/GeneXusApplication(  299):  at com.artech.common.StringUtil.convertStreamToString(

E/GeneXusApplication(  299):  at com.artech.base.metadata.loader.MetadataLoader.getDefinition(

E/GeneXusApplication(  299):  at com.artech.base.metadata.loader.WorkWithMetadataLoader.load(

E/GeneXusApplication(  299):  at com.artech.base.metadata.loader.ApplicationLoader.loadPatternInstances(

E/GeneXusApplication(  299):  at com.artech.base.metadata.loader.ApplicationLoader.loadMetadata(

E/GeneXusApplication(  299):  at com.artech.base.metadata.loader.ApplicationLoader.loadApplication(

E/GeneXusApplication(  299):  at com.artech.application.MyApplication.initialize(

E/GeneXusApplication(  299):  at com.artech.activities.dashboard.DashboardActivity.LoadApplication(

E/GeneXusApplication(  299):  at com.artech.activities.dashboard.DashboardActivity.access$000(

E/GeneXusApplication(  299):  at com.artech.activities.dashboard.DashboardActivity$

E/GeneXusApplication(  299):  at