Runtime
Apple iOS* API Bindings
Integration with Android Studio
Layout Editor
Local build
Remote build
Installation
UI Binding Generator
The known issues apply to Multi-OS Engine update 1 (version 1.0 build 285)
Runtime
- The only class loader the runtime supports is the bootstrap class loader. It constructs NoClassDefFoundError exceptions without detailed messages.
- The runtime is derived from Android* ART and inherits most Java packages it implements. The preloaded-classes.txt file, which resides in the installation directory, contains the list of the implemented Java packages:
- To use Java packages that are not on the list add them as external dependencies for your project.
- If external dependencies for your project implement classes on the list, the build will fail (the dex2oat tool will fail with an error message like “dex2oat ... Check failed: method != NULL”).
- The runtime does not contain an implementation of JDBC Driver.
Apple iOS* API Bindings
- Using methods with Ptr<? extends ObjCObject> in applications targeting Mac OS X* host can lead to crash with null pointer exception if you working with pointers returned from native, not created yourself.
- If a ‘Division by 0’ exception occurs after an incorrect NatJ initialization, start working with NatJ by creating an Obj-C class that implements a UIApplicationDelegate interface.
- Missed NatJ annotations or misprints are not checked by the build system or NatJ initializer. Manually written methods with inaccuracies in annotation can lead to exceptions in runtime and undefined behavior.
- Double pointer to primitive types as a return value from methods of binded objects is not supported.
Integration with Android Studio
- Multi-OS Engine samples require setting the active JDK version to 1.8 manually in Android Studio. “Invalid source release: 1.8” error will occur if this isn’t done. To resolve this issue, go to Android Studio* to File -> Project Structure -> SDK Location -> JDK location and specify the path to JDK 1.8.
- Info.plist (located at /path/to/application/MOE_module_name/xcode/project_name/) should contains a valid Bundle ID. Otherwise the following error will occur: “Application installation on device failed (Incorrect bundle id in your Info.plist file)”. For more information please visit: https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/ConfiguringYourApp/ConfiguringYourApp.html#//apple_ref/doc/uid/TP40012582-CH28-SW8
- When the debugger is not closed properly, it leaves the device in the state which will not allow you to restart and use the debugging again. This is true even if you reboot the device. One workaround is to debug projects from XCode on the device. This will reset the state.
- When you add “Intel MOE Module” to your project, it is always added to the root directory of the project, regardless of the project directory you have chosen.
- If you manually installed a previous version of iOS Simulator* (for example iOS Simulator* 8.3 to the system which had already installed iOS SDK* 8.4), the build project may fail with error “SDK 8.3 not found”. The workaround is to explicitly specify the installed iOS SDK* version in the build configuration.
- IPA build (“Export IPA for Application” from Android Studio* “Build” menu) may fail immediately after you import a project. The workaround is to press the “Project” tab located on the left side of Android Studio. After that IPA export will be successful.
- Removing the storyboard file can cause the following build error: “Could not find a storyboard named “MainUI” in NSBundle”. The problem will disappear after running build again.
Layout Editor
- For the correct rendering of widgets, you must have Android SDK* with API level 9 or higher installed.
- Constraints can be conflicted for difficult UI written in iXML. XCode cannot manage conflict situations with constraints. As a result, generated constraints do not match with XCode constraints.
Local build
- If Gradle Daemon is enabled, the build may fail with an error message like the following: “Could not find “/../SharedFrameworks/DVTFoundation.framework”. You can fix this by disabling Gradle Daemon: remove “org.gradle.daemon=true” line from the ~/.gradle/gradle.properties file.
Remote build
- Build may fail with the “User interaction is not allowed” error. In this case, you may have to grant the “codesign” tool permissions to access some specific resources. For details, refer to Getting Started tutorials at resources given in the Customer Support section of this document.
Installation
- In rare cases, Multi-OS Engine plugins for Android Studio* will not be installed automatically. It can occur if you use a pre-release version of the Android Studio* or when Multi-OS Engine plugins could not be loaded previous time and Android Studio* disabled the plugins.
After installation, please verify that two plugins “Intel INDE MOE Plugin” and “Intel INDE MOE Layout Editor” are enabled in the Preferences-> Plugins menu of Android Studio*. If you cannot find them there, please install them manually using “Install plugin from disk” button from “<MOE install directory>/intellij_plugins” directory. - If you log in to a Mac OS X* system with a “root” account, Android Studio* will not see the INTEL_MULTI_OS_ENGINE_HOME environment variable. As a result, Multi-OS Engine plugins for Android Studio* will not function. Please use a regular user account to work with the Multi-OS Engine capability.
UI Binding Generator
- Unstable work of UI binding generation feature. With correct .xib; .storyboard; .m; .h files UI binding generation procedure may require more than one attempt.
- For successfully UI binding generation, all necessary files (.storyboard, .xib, .h, .m) should place in xcode project directory. In current version this feature do not support reference on files in Xcode project.
- Generation UI binding for existing Java View Controller leads to that existing outlets and actions(in Java View Controller) stop working. The cause is difference in declarations of existing and generated outlets and actions.
- Workaround steps:
- Add annotation ‘@Property’ in Java code for all generated outlets
- Add implementation in Java code for all generated actions
- Exclude native source files (with implementation of view controllers) from the build procedure.