Smart Devices Offline Applications Common IssuesOfficial Content

Limitations

Server-side External Object methods

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 directly mentioned on User Events are supported (for instance GeoLocalizationAPI.GetMyLocation).

Data types

There are some DataTypes that are not yet implemented for offline applications. Check this list of non-implemented DataTypes for offline applications for each Smart Device platform

Business component for two-level transactions

In Smart Devices development terms, a Transaction object with two-levels (header plus a set of lines) won't be automatically synchronized with the server from the device (i.e. send) by using Business Component. Since only one-level transaction business component is allowed, as a workaround, the developer can flat the transaction by splitting it into two independent components: the header and its lines.

 

Troubleshooting


'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 applies to Error rule messages.


Unable to Chain SQLException no such column

This error appears when invoking a WWSD that requires 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


Failure [INSTALL_FAILED_OLDER_SDK]

Android Execution Failed
Run <main> Failed

Solution:

Android 2.1 is no 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(AbstractStringBuilder.java:97)

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

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

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

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

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

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

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

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

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

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

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

E/GeneXusApplication(  299):  at com.artech.activities.dashboard.DashboardActivity$1.run(DashboardActivity.java:301)

E/GeneXusApplication(  299):  at java.lang.Thread.run(Thread.java:1096)


Was this page helpful?
What Is This?
Your feedback about this content is important. Let us know what you think.