- 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
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.
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
Solution:
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
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)