In recent weeks, I’ve been working on a small project to publish a “Hello World” mobile application using AEM Apps. That’s now done, and visible at https://github.com/justinedelson/pgehello, but I also wanted to write up a bit of background on why I did this and how it might be useful to others. First, a bit of background. AEM Apps is a solution within the best-in-class Adobe Experience Manager digital experience management platform focused on mobile application development and management. At its essence, AEM Apps allows for the same separation of concerns which AEM Sites (and before that CQ) has done for websites, namely to allow developers to create a set of components and templates which marketers can then use to build and update digital experiences. And let me stress update here as that’s really where AEM Apps (and in fact AEM in general) shines – the ability for non-technical users to change the content of a mobile application without developer/IT intervention and without resubmitting applications to the various app stores. There’s more to AEM Apps than just this, which you can read all about at http://www.adobe.com/marketing-cloud/enterprise-content-management/mobile-app-management.html. AEM Apps supports a variety of application types: hybrid (using Adobe’s PhoneGap), native (using either embedded web views or direct integration with AEM for content synchronization), and digital publications (using Adobe’s Digital Publishing Solution). For the purpose of this project, my focus was on a hybrid/PhoneGap Enterprise application.
In tradition (Tradition!), a Hello World application simply outputs the text “Hello World” to the console. There are a variety of ways to generate Hello World applications for PhoneGap (or other mobile development systems). But for AEM Apps, this really doesn’t capture the spirit of what the solution can do. So I took a bit of creative license with the definition of a Hello World application in two significant ways. First, rather than just being an application containing static text, the text in the application is authorable and updatable over the air. So while the application outputs “Hello World” if you simply install it from GitHub, you can also change this text using the AEM authoring interface and get the updated text in the application over the air. You can also add images and again, get those updates over the air. Second, this application is integrated with Adobe Mobile Services. This is an optional, but highly recommended, integration for AEM Apps which provides rich application analytics and in-app messaging.
So, why create a Hello World application in AEM Apps? In general, I’ve found there are two different ways in which we learn something new, specifically software development, but it true in other areas in life. These are taking something pre-built apart (and putting it back together) and building something up from nothing. Personally, I tend to prefer the latter. I think this probably comes from when I started programming 30 years ago by copying BASIC programs out of magazines line by line, making typos, fixing them, making more typos, etc. etc. Now we’d call that ‘iterative’ I guess. To bring this back to AEM Apps, the Apps development team has a “Starter Kit” available on GitHub at https://github.com/adobe-marketing-cloud/aem-phonegap-starter-kit for jumpstarting AEM Apps projects. For most projects, the Starter Kit is the right place to start. But for the purpose of building something up from the ground, there’s a bit too much magic in the Starter Kit.
There was a second goal, which is perhaps more important than the actual Hello World application project itself, which was to create an Anatomy document, visible at https://github.com/justinedelson/pgehello/blob/master/anatomy.md. This document describes, in detail, each file in the project and what it does. This was actually much more time consuming that building the application itself as I wanted to ensure that no stone was left unturned. It clocks in at 13 pages. And since the Hello World application is a subset of the Starter Kit (and thus any application based on the Starter Kit), everything in it would apply to the Starter Kit as well.
If you’re interested in AEM Apps development, I’d recommend checking out this project and let me know if you have any questions, either in the comments, GitHub Issues, or by tweeting @justinedelson.
Now get to building some apps!