Learn about known issues and apply workarounds for Native Object API and custom development.
Issue # | Description |
---|---|
SMPONP-13170 | MBO left in inconsistent state, or errors thrown during iOS
refresh If an iOS refresh is called on an MBO object before it has been created in the client database, the object may be left in an inconsistent state, or an exception may be thrown. Workaround: Prevent this by adding
code to your application that only calls refresh on an object that was
previously created or saved in the database.
|
SMPONP-10752 | Synchronization via relay server fails with MobiLink communication error (216) if basic auth is enabled for native Object API applications on iOS, Android, WM, and Win32 devices. The cause is that the challenge response is being cached in persistent HTTP. Workaround: From the relay server (IIS) configuration tool, select the Web Site tab and disable persistent HTTP, by self-selecting Enable HTTP Keep-Alives. |
SMPONP-9367 | Resumable synchronization works only in a single server environment without
Relay Server. When a client performs a resumable synchronization through Relay Server (either in a single node or in a cluster environment), the SAP Mobile Server restarts automatically and the buffered restartable download data on SAP Mobile Server is lost, and resumable synchronization fails. Workaround: Use resumable synchronization only in a single node environment that does not use Relay Server. This issue will be fixed in a future release. |
SMPONP-6340 | For iOS Object API applications, Code generation (command line and wizard) no
longer generates KeyGeneratorPK.m and
LocalKeyGeneratorPK.m files, since they are not
used. Workaround: Remove any references to these files before compiling your project or you will get compilation errors and build failures. |
SMPONP-3552 | 64-bit
packaging tool cannot be launched on 64-bit Windows. By default, SAP Mobile SDK installer configures the system to use the 32-bit packaging tool. If you try to run the 64-bit packaging tool (PackagingTool64.bat) after completing a new or upgrade installation of SAP Mobile SDK on a 64-bit Windows system, launching the tool fails with this message: Cannot load 64-bit SWT libraries on 32-bit JVM Workaround:
Set up a 64-bit JDK to work with the 64-bit packaging tool.
|
RTC-347 |
iOS client requests might fail with an HTTP 500 error when
using Apache as a reverse
proxy. The cause is that Apache implements the HTTP 1.1 specification in such a way that the HTTP header coming from the client, Transfer-Encoding: "Chunked" is not accepted due to the capitalized "c" in "Chunked". Workaround: Change Apache
configuration to rewrite incoming HTTP headers. Use mod_headers and add this to the Apache
configuration:
RequestHeader edit Transfer-Encoding Chunked chunked early |
RTC-282 | Memory warnings from autoreleased
objects. You receive memory warnings in your application because of too many autoreleased objects. One example is when there are many objects at the application level through the findAll method. Workaround: To reduce memory growth, use the appropriate autorelease pool. For more information, see this document from Apple: https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmAutoreleasePools.html . |
RTC-280 | Failure to start a connection after a
shutdown of
SAP Mobile Server. For Windows, Windows Mobile, Android and BlackBerry Object API clients, when the device application connects to the Unwired Server, the Unwired Server shuts down, and the device application calls startConnection again immediately after the shutdown occurs, an ApplicationRuntimeException may be thrown indicating Client state error. Client is already started, without attempting to reconnect to the server. Workaround: You can catch the exception in the device application, sleep a few hundreds of milliseconds, and retry by calling Application.startConnection(timeout) again. After one or two seconds, try to reconnect. |
RTC-265 | Cannot change the database file
path. You create a database for your application with the default database file path, delete the database, and then change the database file path in the connection profile to another value so that you can create a new database file for your application. After you invoke the createDatabase operation again, however, the database is created with the old default database file path, not with the new one. Workaround: None. |
RTC-261 | When using an Apache server as a
reverse proxy without SAP Hosted Relay Server to proxy
Object API Applications or
HTML5/JS Hybrid Apps against
SAP Mobile Server verion 2.2 and newer, if a custom URL
suffix is used, the client may report connection failures.
Workaround: Clients should specify a custom URL suffix including a trailing forward slash "/". For example, "/myApp/" instead of "/myApp" |
RTC-258 | Exception when calling update on a new MBO
instance. When you call the update method on a new MBO instance, an ObjectNotSaved exception is thrown. For example: MBO instance = new MBO(); instance.${UpdateMethod}(); //UpdateMethod is a update method defined in the model. Workaround: Do not call the update method for a new instance. Only call update when creating or saving an instance. |
RTC-206 | Root certificate required for
synchronization with an HTTPS
server. The Android Object API cannot synchronize with an HTTPS server unless the device has access to the root certificate of the certificate used to sign the certificate presented by the server. Workaround: Use the root certificate on the device. |
CR-709353 | Cannot pass cookies through personalization
keys using replication-based synchronization (RBS). Workaround: Use this
code:
SUPStringProperties *cookies = [smnwTests cookieName]; [[[SUPApplication getInstance] connectionProperties] setHttpCookies:cookies]; |
CR-708707 | Best practice for deleting the client
database. By default, asynchronous operation replay is enabled. When an application is connected (by Application.StartConnection() or Application.RegisterApplication), it may receive background notifications, and trigger a synchronize or other database operation. If you try to delete the database, you may receive database exceptions. Workaround: Before deleting the database, stop the application connection (Application.StopConnection()). |
CR-692374 |
Enabling compression incurs additional processing on the
device and the server side to optimize the amount of data to be
transferred over the network.
Workaround: Carefully evaluate whether the compression trade-off is appropriate in the deployment environment, and carefully size the server capacity to support it. If appropriate in a particular environment, follow the SAP Mobile Platform Developer Guides to enable compression. |
CR-690308 | The query.getRow() API may not return the correct row to
BlackBerry clients. For example, in this connected result set for a BlackBerry client, rs.getRow() may not return the correct value: Query query = new Query(); query.select("c.id as Id, c.fname as Fname, c.state as countState"); query.from("Customer", "c"); query.setConnectedResultSetEnabled(true); QueryResultSet rs = MyDatabase.executeQuery(query); rs.executeQuery(); rs.last(); rs.afterLast(); rs.previous(); Workaround: Do not use the query.getRow() API QueryResultSet.previous\next return Boolean to indicate if the current position is valid. Rely only on the return value. |
CR-675716 | SQLite cannot support create operations with
more than 3MB of data, which is roughly 128 columns at 64KB per column on
Windows Mobile devices. In Windows Mobile applications that use message-based synchronization, when a row reaches 3MB or more, and the client invokes the SQLite create operation during subscription, an internal exception is generated, data import fails, and the import operation fails to commit the transaction. Workaround: None. |