While smartphone platforms such as Android, iOS, and BlackBerry offer SDKs for developing rich native apps, many developers opt to use cross-platform frameworks to develop apps that can be ported to several platforms. Deciding on an appropriate framework for an app or game can be a daunting task, so we’ll dive in to the details to help you decide.

Advantages of native development

The term “native” is used in different contexts to refer to either using the Software Development Kit (SDK) or the Native Development Kit (NDK) for Android. Since many frameworks use the NDK internally, we’ll discuss SDK development as native here.

There are advantages to developing native apps. Native development gives more direct access to the newer features of Android. Also, updating to the newer SDK is possible as soon as the Android team releases it. In addition, it is easier to match the look and feel of Android devices since native apps are developed exclusively for one platform. Additional platforms will have a separate code base.

Advantages to app frameworks

The goal of app frameworks, on the other hand, is to distance the developer from the nuances of each platform’s SDK. This often simplifies development, at the cost of limiting access to the newest Android features and UI elements.

Cross-platform compatibility is one of the stronger features of many frameworks. Deploying the same app to multiple platforms can multiply the return on developing it without multiplying the costs. Games are the most common target for cross-platform development, in part because some developers can take advantage of existing software and assets.

Many app frameworks are designed to remove some of the difficulty from developing the software. Some platforms even go so far as to target non-developers and hide the complex internals behind a very simple interface. This may be attractive even if deploying to other platforms is a ways off.

Selecting a platform for your app

There are no shortage of app frameworks and game engines. This review of 22 game engines for Android makes it clear that there are a lot of options; the one you decide to use depends on your needs and existing assets. Some factors that may affect your choice include:

  • Desire for speed and capability, or ease of development
  • Priority of deploying to multiple platforms
  • Existing code base (e.g., Java, C++, JavaScript, Flash, etc.)
  • Need for 2D or 3D physics and graphics
  • Licensing fees

If you’re just starting out in Android app development, it may be helpful to investigate some of the platforms based on the lightweight Lua scripting language, such as Corona, BatteryTech, or Moai. All of these platforms are cross-platform, and the last one is free.

Another framework that has been getting a bit of attention is Cocos2d-x, which is a C++ port of the popular 2D game engine with physics available for iOS. If you’re building a more complicated or 3D game, your choice may be tied more to your 3D modeling environment, such as Unity3D or ShiVa3D.

There are other types of apps that benefit from cross-platform portability. Cordova (also known as PhoneGap) can wrap HTML/CSS/JavaScript web properties into an app.

Share your experiences

With all of these options, it can take a while to find the right option. If you have any experiences (good or bad) with app frameworks that you’d like to share, post them in the discussion.