Monday, January 20, 2014

Journey to App - Part 3: The Tools

In this third installment of this blog series, we will review the tools that I use for App Development.

Application Framework / Platform
Since I was looking to develop Apps for both the iOS and Android platforms, I decided to use a "platform independent  application development environment.  The tool set that I decided to use was the Titanium platform by Appcelerator (http://www.appcelerator.com).  Titanium is a pretty functional platform.  Most of the application code is developed using standard Javascript and Titanium's API.  The Titanium package then packages up the Javascript and uses their bridging technology to link the javascript to native objects in iOS, Android, Blackberry, Tizen, HTML5 and (soon) Windows Mobile.  This allows one to create mostly platform independent code that will work on multiple platforms (Most Apps still require some differences between platforms, but Titanium really helps keep the differences small).  In addition to the javascript code, you can still write "native" modules in Objective C (for iOS) or Java (for Android) to provide functionality that the Titanium platform may lack.

Another great point about Titanium, is that it has a free community addition, and the SDK is open sourced.

Computer Platform
For developing iOS apps, you MUST have a MAC OS X computer.  You need to install XCode, the Object C development enviornment, and you must have an Apple Developer account ($100 / year).  If you are only developing Android apps, most of this blog series will still apply, and you can develop on Windows, and Linux computers as well as Mac.  For Android Apps, you need the Android SDK and a Google Play Developer Account ($25 / year).

Source Code Management
Titanium supports GIT for source code management.  You can maintain local GIT repositories in Titanium, as well as synchronize the local GIT repositories with remote repositories.  GitHub (http://www.github.com) is a great cloud service for open source projects.  BitBucket (http://www.bitbucket.org) has online GIT repositories for both open and closed source projects.

For this project, I will be open sourcing the App code, and have created a repository on GitHub at http://www.github.com/timalosi/journey2app.

I highly recommend using a source code management system.  I have used Subversion (SVN), MS Sourcesafe, and GIT, and for the most part they all work similarly.  Since GIT is built into Titanium, it makes sense to use it for Titanium Apps.

Graphics Program
There are very many graphics programs floating around out there.  In general, you need to be able to create .PNG images for the app icon, splash screen and other app assets.  I like to work in a vector drawing program, like Inkscape or Illustrator, since you can seamlessly scale your art, and then export at the correct size for the App.  Since we are using other open source tools, I would recommend Inkscape (http://www.inkscape.org) for vector graphics and GIMP (http://www.gimp.org) for image manipulation.


Wire-Framing and App Layout
Check out part 2 of the blog series for details on laying out your app. For wire framing, you can use anything from paper and pencil, to a specialized program.  A few apps that I use on the iPad include iMockups for iPad and Noteshelf for iPad.

App Framework
With Titanium, there are several programming patterns that you can use for writing the source code for apps.  The basic pattern is a factory pattern, where each object and function is coded directly in javascript.  The good folks at Appcelerator have also developed a Model / View / Controller (MVC) framework called ALLOY, where the views are coded in XML and CSS (not really CSS, but close enough) , and the Controllers are written in javascript.  Following the MVC Pattern in general is a good idea as it speeds development.  For the Webpage to PDF app, I'll be using the Alloy MVC framework.

In addition, Matt Congrove, from Appcelerator, has released an open source application framework for Alloy called ChariTi (http://chariti.mobi).  The framework was written to speed the development of applications for non-profits, but it has some nice features that I like, so I will adopt it for this project (modified for the Apps needs).

Part 3 Wrap Up
As you can see, there are not that many tools that you need to get started writing apps.  Have any suggestions?  Add them in the comments.

Running Total Hours
I decided to post the amount of time (cumulative) for the App development process ... not including writing the Posts.  I'll update the effort summary in each post to give you an idea as to how long things take.

Activities

  • App Idea and Wire Framing - 2 hours
  • App Project Creation, Importing ChariTi framework, initial build, GitHub Repository Creation - 2 hours

Total - 4 Hours

Previous Part 2 - Layout 
Next Part 4 - Prototyping

1 comment:

Unknown said...

Hi this one is great and is really a good post. I think it will help me a lot in the related stuff and is very much useful for me. Very well written I appreciate & must say good job..
xamarin app development