NeoMAD 3.0 release notes

May 14, 2012

NeoMAD 3.0 introduces major enhancements. NeoMAD projects can now be built for Android, BlackBerry, Java ME and Windows Phone 7 devices, with native applications being generated for each platform. The support for iOS is planned for version 3.1.

In order to allow developers to produce native looking cross-platform mobile applications, this new version comes with a Generic API that leans on the native API of each platform.

New Features

Supported targets

A lot of new phones are supported in this version. Go to http://neomades.com/fr/liste-telephone.php to get an up-to-date list.

Note that this list does not depend on a version of NeoMAD, as the phone support module can be delivered independently. If your version of this module is not up to date, please contact the Neomades customer support to get the latest one.

Generic API

NeoMAD 3.0 comes with a new Generic API that allows developers to easily produce native looking cross-platform mobile applications.

The Generic API is the main entry point for cross-platform mobile application development with NeoMAD. No matter the programming language, the OS or the technical characteristics of the targeted phones, developers can quickly create applications that will have a native look and feel on all devices, with only a single Java source code and the NeoMAD generation tool.

The three main components of the NeoMAD Generic API are:

  • An application structure
    • Life cycle (start, interruptions, stop)
    • Screen sequence
  • A UI kit
    • Native looking graphical components (button, textfield, …)
    • Theme manager
  • A technical kit
    • HTTP/HTTPS communications
    • Browser launch,SMS, voice call, vibration
    • Local storage

Each component of the Generic API corresponds to a native component from each platform.

The HelloWorld example delivered with NeoMAD will give you a brief introduction to the Generic API.

Multi-resolution support

The new <resourcepath> and <variation> tags of the URS introduce the support for multi-resolution applications. Image resources can now be declared in several sizes and embedded in a single binary. This new feature simplifies the resources declaration for Windows Phone 7 targets and allows to use the multi-resolution support of the Android system to produce a single application that will adapt on all devices.

Platform specific code

The new -generate-specific-impl option allows to add platform specific code in a NeoMAD project. In practical terms, this option allows to include source code written in the target platform language (C# or Java) in a NeoMAD project to access features that are specific to those platforms (Windows Phone 7 or Android, for instance). This allows to use a platform specific feature (compass, …), to integrate code that has already been written for a specific platform, or to access features available on most platforms that are not yet available in the NeoMAD Generic API (camera, file system).

The PlatformSpecificCode example delivered with NeoMAD illustrates the use of this feature with a simple application accessing the compass API of Android and Windows Phone 7.

Application cloning

The <parameters> section of the URS can have an <applicationidentifier> tag. This optional tag serves as a unique identifier for the application and can be used to clone applications, that is to say to build different applications from the same NeoMAD project.

The HelloClonedWorld example delivered with NeoMAD illustrates the use of this feature with a simple application cloning.

Examples

Several modifications have been made in the Examples directory:

  • new sample applications have been added to illustrate different features of NeoMAD:
    • ConditionalCoding for constants and conditional coding in the Java source code and the URS file
    • HelloClonedWorld for application cloning using the <applicationidentifier> tag of the URS
    • PlatformSpecificCode to include platform specific code in a NeoMAD project
  • the NEOMADTemplate and HelloWorld examples have been modified to use the new Generic API

Enhancements

Supported targets

The targets NOKIAC300, NOKIAX300, NOKIAX302 and NOKIAX600 have been renamed respectively NOKIAC3-00, NOKIAX3-00, NOKIAX3-02 and NOKIAX6-00.

New command line syntax

NeoMAD 3.0 comes with a new command line syntax that is more conform to the common usage. Options and their arguments are now separated with a white space.

Eclipse plugin

The version 2.0 of the NeoMAD plugin for Eclipse introduces major evolutions:

  • improved user experience, closer to the standard Eclipse usage (NeoMAD Project creation, Run and Debug configurations, …)
  • generic simulation using the MicroEmu emulator
  • debugging tools (breakpoints, variable stack, …) for all targets at the NeoMAD Java source code level
  • advanced native debugging tools for Android.

URS

The format of the URS file has evolved to fit the new cross-platform feature of NeoMAD:

  • new tags <vendor> and <description> have been added in the parameters section
  • a new permissions section has been added, allowing to declare all permissions that are necessary for the project, using one permission element by permission

Furthermore, the <objectspath> tag has been removed. This tag allowed to specify the path for temporary files generated by NeoMAD during the application compilation process. Now NeoMAD systematically uses the system temporary folder for that purpose.

Resource files packaging

The way resource files are packaged in the generated binaries has evolved to meet the common usage of each targeted platform. Images and fonts are no longer packaged in a data.res file for Android, BlackBerry and Windows Phone 7 targets, but copied in the right directory as expected by the system.

Android support

The support of the following generic targets has been added: ANDROID21, ANDROID22, ANDROID23, ANDROID233, ANDROID30, ANDROID31, ANDROID32, ANDROID40, ANDROID403.

Furthermore, a lot of Android phones are now supported by name. Go to http://neomades.com/fr/liste-telephone.php to get an up-to-date list.

NeoMAD now provides information about the Android minimal version and API level for each Android target.

New constants have been added to the TargetInfo API:

  • boolean ANDROID
  • String ANDROID_MINIMAL_VERSION
  • int ANDROID_MINIMAL_API_LEVEL

A new <androidmanifest> tag has been added to the URS file structure. It allows to add specific information in the Android manifest file.

Java ME support

The support of Java ME emulators has been improved to make the link process faster and more flexible. All phone SDKs used by NeoMAD are listed in the simulators.properties file, which is automatically filled when the -i option of NeoMAD is launched. This allows you to modify this file when installing, moving or removing phone SDKs.

Fixed bugs

Here is the list of bugs that have been fixed since the previous release of NeoMAD.

Build chain

  • fix the handling of the <binaryname> tag conditioning in the URS file (now it is possible to write several <binaryname> tags if only one is valid when the conditions are evaluated)
  • fix bug: signature with relative keystore path fails
  • fix bug: -s option fails if project path contains spaces

Android Support

  • fix bug: resource files declared using the <jarfiles> tag in the URS file, with name starting with a number or containing “-“, cannot be placed in the apk
  • fix bug: unlock button will resume the application too soon
  • fix obfuscation step for Android devices to avoid binary corruption

Java ME Support

  • Fig bug in sound playing on SONYERICSSONK300I.