Wednesday Mar 11, 2015

Where browsers and mobile collide – Oracle's unified Alta UI

Extending our late 2014 Q&A mobility series, I'm happy to announce the next Q&A article with Oracle's own Laura Akel discussing Oracle's Alta UI.  Oracle Alta UI for a want of a brief description is the unifying look & feel for Oracle's desktop browser applications, cloud and mobile applications, be they delivered via the mobile web or natively on mobile.

However Alta is much more than yet another BLAF (insiders Oracle joke, sorry), it comes with extensive patterns & guidelines for customers on how to make applications not just browser friendly, but mobile ready.

I hope you find this Q&A with Laura useful and it gives a little insight into Oracle's directions with it's overall UI design and expertise on user experience across platforms.

Wednesday Nov 19, 2014

Aussie mobile leaders Daniel Iversen & Ruben Garcia Mohedano

Taking a different approach for the mobility Q&A series, this time we thought rather than interviewing customers, we would interview our own staff about their mobile experiences.  Oracle staff just like you and me use and build mobile solutions too, and get great exposure to sophesticated business and technical solutions, so they have a lot of thoughts, opinions and experiences to share.

Daniel Iversen & Ruben Garcia Mohedano based in Oracle Australia have been leading our mobile efforts amongst customers for some time, and through this have gathered a very broad understanding of what works and doesn't amongst customers adopting a comprehensive mobile approach. In this interview in particular the discussion covers the bigger idea of multi-channel delivery backed by Oracle know how.

We hope you find this interview interesting.

Tuesday Nov 11, 2014

An interview with enterprise mobility lead Luc Bors

We're on a roll in interviewing Oracle customers who specialize in enterprise mobility. Following on from my interview of Andrew Paterson and Simon Canil, this time I've taken the opportunity to interview Luc Bors from AMIS in the Netherlands.  AMIS is one of our key Oracle partners, a FMW powerhouse as I like to say, and Luc is an Oracle ACE who just recently published the first book on Oracle's Mobile Application Framework.

Head over to LinkedIn to read the full Q&A article where Luc shares his experiences and thoughts on building successful enterprise mobility apps with Oracle's mobile tooling.  I hope you find this article useful.

Tuesday Nov 04, 2014

Australia's Enterprise Mobile Leaders - An Interview with Simon Canil

There’s a lot to be learned from technology leaders. Continuing on from our previous interview, we've published another article with Simon Canil from Colab who has kindly taken time out to talk to us about Colab’s successful foray, if not full on charge into the world of enterprise mobility. Colab’s success earned them Oracle’s Global Innovation Award at Oracle Open World 2014, and to be blunt we at Oracle are very impressed how they’ve taken many disparate Oracle solutions, our database, our business apps and of course our mobile solutions to weave a compelling mobile solution.

Check out the full interview with Simon on LinkedIn.  We hope you find it useful.

Thursday Oct 23, 2014

A Q&A with Australia's Mobile Luminary Andrew Paterson

Looking for an insight into what makes an award winning mobile solution amongst Oracle's customers? The following Q&A exert captures an online interview with Andrew Paterson from Rubicon Red, sharing his experiences in building a mobile solution for Australia's National Pharmacies that won the Enterprise Mobility Award at Oracle Open World 2014. The application was built using Oracle technology, a combination of Oracle's Mobile Application Framework (MAF) for the mobile front end, and Oracle's SOA Suite of products at the back end.

Hi Andrew, I had the pleasure of meeting you at Oracle Open World, but for our audience could you please introduce yourself, your role and organisation you work for.

Andrew: Hi, my name is Andrew Paterson and I work for Rubicon Red – a company based out of Australia that provides products and services relating to Oracle Fusion Middleware. My role is Practice Manager, which involves a mixture of line and resource management, pre-sales and consulting work for clients.  

Mobility is my main focus area at the moment, as we are increasingly finding that it is something customers now see as being core to their business.

What was your background before working on mobile solutions?

Andrew: I have quite a varied background, having worked previously with Ada, Lotus Notes, Java and building Web and Portal applications. The past 7-8 years has been focused on SOA and BPM, through development and consulting.

My interest has always been in delivering solutions that make the users' lives easier. Typically with SOA this is abstracting away the complexities of the underlying systems and then exposing services that can be easily consumed.  

As a developer, what’s changed since you took up the “mobile first” mantra?

Andrew: The key phrase would be “build for change” - Mobility innovation and trends move a lot faster than traditional applications or web. For example, in the timeframe of the current application build (last 6 months) we have seen the Samsung S5 and Apple iPhone 6 devices launched, along with a new iOS and Android Lollipop being released this Friday. Coupled with these are changes to the UI styles and expected patterns of operations. 

The challenge is to keep up with these trends. This was one of the main reasons we picked Oracle's Mobile Application Framework. We don’t have to worry about maintaining the underlying structures to keep apace with these changes, MAF takes care of this for us. Our focus is instead on what we can do differently within the app and whether we need to evolve the UI.

The next noticeable change is that mobility has changed the way customers view SOA. Previously it could be a hard sell and often it was typically only used to replace existing integrations. The benefits of SOA as an approach were often lost and it was hard for them to see the value in building re-usable services and having a service catalogue. Now, it is impossible for a customer to build mobile applications without having a services layer. A well-structured and performant API is critical for being able to build applications that work well for consumers. 

A minor but important change is that the presentation layer infrastructure is now something we don’t need to provide and maintain. The app runs on the users device, saving both money and time.

Finally, it is crucial to now see the application as being something you are in for the long term, with multiple and frequent development cycles to add or improve features. The nature of the interaction with the user is more personal and direct, so whatever is built needs to evolve. Users expect this change – look at any app on your phone that hasn’t updated in the past year or so and it probably looks dated and clunky.

Could you give us an outline of what Oracle Mobile Application Framework applications you’ve built or been responsible for?

Andrew: Prior to MAF we had worked with various customers to build ADF Mobile [Editor's note: ADF Mobile was the precursor to MAF] applications, mainly for sales order entry and purchase order approval (typically moving these functions out of Oracle ERPs). These came about through the use of SOA and BPM to build services, which were then easily consumable via a mobile front-end.

With our latest application, we are using MAF and working on a consumer application for a membership based pharmacy organisation. This app will deliver a new channel of interaction for their members, to view prescriptions, membership details and to interact with the company. Providing the app will also mean members no longer need to carry a plastic card to prove membership.

Can you outline the size of your teams, your apps, the timelines involved?

Andrew: The current project consists of a solution architect/mobile developer to design and build the front-end application and a SOA developer for building back end services in Oracle API Gateway and SOA Suite. The customer’s marketing team are responsible for providing a style guide to build the application to. 

The breakdown of work is around 80 days, with 40-50 of these being the work required to expose services that interact with the internal systems. 

That's interesting, so more than 50% of the work was with the back end services rather than just the mobile UI front end. Was that your experience in the earlier mobile apps you built too?

Andrew: It was probably similar percentages, although we’ve found MAF easier and quicker to build apps compared to ADF Mobile. Some of the tool improvements and framework changes have reduced the development time considerably. For customers who have been on the SOA journey, it should be relatively simple to build an app that utilises their existing services.    

Arguably a mobile app can just be a reflection of an existing desktop or browser based system. Can you talk to the qualities of your app that makes it “mobile”, in other words what’s unique to the solution and what benefits did it bring over the original systems?

Andrew: Whilst some of the features in the application are available on the website, the big change is that it provides a channel for direct interaction between the member and the organisation and adds features more related to the ‘now’ moment. For example, members will be able to receive notifications that their prescriptions are ready.  

Also, whilst it isn’t being leveraged at the moment, we will be able to detect that a member is in-store and this opens up scope to provide spot/local promotions and to improve the interaction between the member and the shop staff.

What advice can you give for anyone wanting to start their first Oracle Mobile Application Framework application?

Andrew: Don’t be afraid! The framework is relatively easy to understand and you can quickly build a nice looking app that exposes enterprise data from multiple sources. Consider your use cases – a big one for us was to be able to work ‘offline’ – i.e. the user shouldn’t need to login to view some of their data. Look for common issues faced within the organisation – for example, what are the top five reasons that users call your customer services department and how could these be alleviated by exposing a self-service application?

The framework also provides a lot of functionality out of the box, so make sure you look through the examples provided to see what is possible. Also take a trip to the MAF tutorial videos as these provide a really good introduction to the overall framework.

We’ve found that using an actual device for development and testing was easier than using the emulators. Getting this set up and working also helps you gain an understanding of the tools available and how various components work. 

As mentioned before – build for change. Always have in mind how you will add new features and functions and the impact these will have on the app you are designing.  

Finally – UI style changes are frequent so do not focus too much effort on a pixel perfect rendering. Build something that looks nice but understand it will likely need to change within a year. The critical aspect is the functionality – users are unforgiving of errors and poor performance.

What qualities do you see an “enterprise” mobile apps having over consumer apps? Do you bother to differentiate them?

Andrew: I see there being subtle differences between an app built for the enterprise and one for consumers. An enterprise app is likely to expose more interactive features (i.e. create/update/delete of data), whereas consumer focused apps will typically show the status of data from within various systems. 

This means that the enterprise app will likely need more consideration to different levels of access and security roles. As you are exposing functions that change corporate data, you’ll likely need to hide/show things like fields and buttons accordingly.

However, outside of that there probably isn’t much to differentiate. It’s tempting to say that an enterprise app may not need as frequent UI changes, but I’m not sure that is true anymore!

When gathering requirements for mobile applications from your customers/users, was there anything that took you by surprise?

Andrew: Typically, when building web or BPM apps it can be difficult to get business users to explain what they require, as often they are not aware of the functionality that is available or what is possible. Mobility is a reverse of this – people know quite well what a mobile device can or can’t do, the features available and have an expectation on how things should work. Design becomes a lot easier as everyone is sharing a common terminology and understanding of what and how things should work.

Another noticeable effect was there were a lot of creative ideas proposed around what the app could provide. Whilst some of these have been put to one side for the initial launch of the app, they have been useful for providing an understanding how we should construct the app to cater for these future enhancements.   

In developing a mobile solution for your customers, what advice can you give them in considering mobile applications for the first time?

Andrew: Be clear about why you are launching an app and the features and functions that it will provide. What is the intent and why would someone download and keep the app? Having decided this, break the features into bodies of work that can be completed in phases no longer than a couple of months each. If it takes you longer than a couple of months to get a release out (for a consumer focused app), then you’re likely to fall behind the market due to amount of innovation and change that is occurring. 

Related to this is don’t fall at the first hurdle through ‘analysis paralysis’. If a feature is too complex to decide upon now, then roll it into the next release. The key thing is to get an app out there that you can expand upon. If you’re not sure what features the users want – then ask them through a survey or similar.

If we focus on Oracle’s Mobile Application Framework, if you were to pitch the positives to a new customer, what would you cover?

Andrew: The key point to pitch is that it provides a fully featured framework to build an app that can then be deployed to both iOS and Android. This greatly speeds up development and reduces costs, as the developer doesn���t need to focus on writing Android or Objective C page structures and navigation.

The approach for data controls and pages is based around ADF and is a proven way to build applications. The ease of wiring in services means that it can be very quick to build an application that interacts with your existing systems. For customers with Oracle systems you have that reassurance it has been built to work seamlessly with these.

For a developer it’s a relatively simple MVC pattern that is easy to understand and use. The fact it is built on open standards and can embed alternate JavaScript libraries or use Cordova means you are not restricted in what you want to do. 

Finally, it’s worth re-iterating that the product is constantly evolving and adding new features. The ability to get these for ‘free’ without needing to invest time to build yourself cannot be understated.

And to be fair, let’s cover the negatives too?

Andrew: At times we have hit some quirky device related issues that have been hard to resolve. Mostly MAF protects you from these issues, but this is compounded due to the variety of devices that exist (particularly for Android). Often a bug is with a particular device or version of phone operating system, so this can be frustrating (especially when trying to explain how to recreate it and the person can’t).

Documentation can be sparse at times as well or at least, examples that cover more complex use cases. There are times where parameters or features are skipped over as though it is obvious how it works. However just like MAF, Oracle is rapidly evolving the documentation set too so this will improve over time.

Do you see any unique challenges in the Australian mobile market?

Andrew: Australia is quite unique due to the proliferation of people that have smart phones. I heard a statistic the other day that the top 2 providers have 29 million mobile contracts between them – more than the population that exists today.

Another consideration for Australia is that once you get out of the cities the connectivity can drop off quite significantly. This needs to be factored in when building your app – what is needed to keep the app running in this situations.

Any predictions for enterprise mobility in 2015 and 2020?

Andrew: 2015 is probably easier – the tools will evolve to support multi tenancy on the device. i.e. a work profile and a personal profile. Some of this exists today, but again it will get easier to manage as the tooling gets better.

2020 – who knows, better interactivity with our rocket cars :-) I have a HTC Desire that was released around about 5 years ago and the difference in form and function is shocking. It seems barely usable and horrendously slow. I think the big change will be towards ease of access and ‘always on’ connectivity to enterprise data.  

Thanks very much for your time Andrew, and sharing your experiences and expert insights into the mobility market.  Best of luck with your next mobile application!

Rubicon Red, an Australian Oracle Gold partner is an innovative IT professional services firm focused on enabling enterprise agility and operational excellence through the adoption of emerging technologies such as Service-Oriented Architecture (SOA), Business Process Management (BPM), Cloud Computing and Mobile solutions.

Friday Oct 10, 2014

NZOUG 2014 Auckland Conference November 19th/21st

It seems the end of the year is the time for conferences, and my favourite conference of them all is coming up, the New Zealand Oracle User Group conference Wednesday-Friday 19th-21st November in Auckland. With all due respect to our Oracle marketing team who make Open World seem the best conference in the world, the NZOUG conference wins all conference awards because New Zealanders are hands-down the most friendly people you could ever meet (as long as you don't mention the cup - shhhhh ;-)

This year like the last NZOUG conference, the focus of my presentations will be on Oracle's mobility products, exploring our widening portfolio of solutions and why they will be valuable to you:

Just like the AUSOUG Perth conference the NZOUG conference will also be attended by international Oracle ACE speakers including Alex Gorbachev, Tim Hall, Guy Harrison and Edward Roske, as well as the regular local Oracle ACE pack Francisco Munoz Alvarez and Arjen Visser. Oh and of course a lot of Oracle staff are presenting too ;-)

I hope you'll take the opportunity to attend the NZOUG conference, learn a few things about Oracle, and enjoy their hospitality too.

Tuesday Oct 07, 2014

AUSOUG 2014 Perth Conference 6th/7th November

For the Perth Australia regulars, the Australian Oracle User Group is running their annual conference on the 6th & 7th November, and for what I think is my 9th year (I've lost track) in a row I'll be presenting. This year's topics focus on mobility:

This year the conference will also be attended by international Oracle speakers including Tim Hall, Bjoern Rost and Craig Shallahamer, as well as the regular local Oracle ACE pack Penny Cookson, Connor McDonald & Scott Wesley.

This is an exclusive event for Perth, these speakers aren't presenting on the east coast. Only other place you'd get to see so many quality Oracle speakers is Open World, and believe me, this is much cheaper!  You can check out the complete agenda here.

Sunday Jun 22, 2014

By the Poolside: An Introduction to ADF BC Application Module Pooling

As the ADF Architecture TV series draws to a close with just a few episodes left to publish, Oracle's ADF product management team is still dedicated to creating external training to assist customers in building their ADF applications.

We are pleased to release a series of videos on the ADF Insider Essentials YouTube channel to cover ADF Business Components Application Module pooling.  This progressive-learning set of videos introduces the basic pool settings, passivation & activation, how the pool cleans itself, and some of the advanced pool parameters.

If you've ever been afraid to dip your toes in the application module pool, this set of videos should assure you the pool isn't as daunting as it's made out to be.  Come in and enjoy a paddle with the rest of us.

Image courtesy of phanlop88 / FreeDigitalPhotos.net

Thursday Apr 17, 2014

Netherlands ADF Event with AMIS: Enterprise to Mobility

For Oracle customers interested in ADF, mobility and all things enterprise, Frank Nimphius, Steven Davelaar and myself have the pleasure of attending and presenting at an AMIS hosted ADF conference Wednesday May 21st through Friday May 23rd in Nieuwegein Netherlands.  

Rarely is there a conference focused purely on ADF and ADF Mobile, especially 3 days worth, so as you can appreciate this represents a unique opportunity to talk and learn from your ADF peers.  What makes this conference particularly interesting from my perspective is that it's not just Oracle staff giving the Oracle view of the world, but AMIS staff, Oracle ACE/ACE Directors and real customers will also be presenting.  I'm betting there is going to be a few "friendly debates" during the 3 days.

(though Oracle staff reserve the right to be always right regardless, it's in the safe harbour slide don't you know ;-)

We hope you'll take the opportunity to join us in May. You can check out a full description of the agenda via this AMIS blog post, as well as this site for registration.

Thursday Jan 16, 2014

Learn about Oracle's Mobile Platform at Perth's upcoming Developer Day - Feb 18th

For Oracle customers located in Perth Australia, OTN will be holding an Oracle Developer Day on February 18th to cover contemporary Oracle development topics.  Oracle Developer Days don't come to Perth too often, something to do with being at the end of the earth I suspect, so we hope customers will take the opportunity to attend while the opportunity presents itself.

From a middleware perspective I'll be covering in two sessions Oracle's Mobile Platform, specifically looking at Oracle's ADF Mobile and Oracle Mobile Suite.  This is your chance as a customer to get a handle on Oracle's mobile strategy from a development perspective, as well as a good look at what benefits Oracle ADF Mobile and Oracle Mobile Suite can deliver for both developers and your business.

The day is not just about middleware though, and Oracle has been lucky enough to have well known and respected community speakers Connor McDonald and Penny Cookson join the line of speakers.  Between Penny and Connor they will also cover what's new in the Oracle database for developers, how to internet enable your database for mobile, and mobilizing your Oracle APEX applications.  Overall you can see the theme for the day is "mobile", which really shouldn't be that surprising from a developer point of view as the development world hums the "mobile first" mantra.

We hope you'll take the opportunity to attend the event, listen to both community leaders and Oracle staff give their vision of the mobile development landscape, and network with the local Oracle community.  More information about the event and how to register can be found here.


Monday Jan 06, 2014

ADF Architecture TV in 2014 - bonus episodes on designing for accessibility

The ADF Architecture TV channel on YouTube kicks off for 2014 with two bonus episodes this week on designing your ADF applications to be accessible.  You can view the first bonus episode here.

(And the second bonus episode is now also available).

In 2013 the channel aired just on 24 weekly episodes.  To date the channel has just under 2000 subscribers and 18000 views.  As far as we're concerned, that's not too shabby for a TV series launched mid 2013, recorded with nothing but a couple of webcams, some homemade lighting, and a considerable amount of coffee.

With an eye to continuing our support of customers, and giving all those YouTube cat videos a run for their money in 2014, the ADF product management team has approximately another 50 episodes of ADF topics to go.  You can catch the entire episode index, both current and future episodes on the ADF Architecture Square.

We hope you find the content useful and we wish you the best for 2014. 

Image courtesy of Danilo Rizzuti / FreeDigitalPhotos.net

Friday Dec 06, 2013

ADF Mobile: URL Schemes

The most recent version of ADF Mobile 11.1.2.4.0.39.64.51 adds support for URL Schemes, a capability that allows disparate iOS and Android apps to call each other and pass values.  If you've ever used a mobile app that invokes email, maps, Evernote or LinkedIn, often they're using URL Schemes to do this.

In order to get you on the path to calling other apps using URL Schemes, or even building your own ADF Mobile app so it can be invoked by a custom URL Scheme, the Product Management team has recorded the folowing ADF Insider Essentials video to get your started.

You might note during this recording I stick very carefully to the EmployeesFeature. If you want to invoke multiple different features in your application via the URL Scheme, typically before calling AdfmfContainerUtilities.invokeContainerJavaScriptFunction() in the LifeCycleListenerImpl.start() EventListener.onMessage() method, you would also call AdfmfContainerUtilities.gotoFeature() naming the feature you want to navigate to. However in this version of ADF Mobile the error "Could not show the feature. Attempt to show 'FeatureId' failed. ERROR:- UITabBarController set SelectedViewController: only a view controller in the tab bar controller's list of view controllers can be selected" will be raised. This is due to bug 17450616 and is resolved in an upcoming release of ADF Mobile.

Thursday Nov 28, 2013

ADF Debugging Aid: The ADF Request Analyzer

Seasoned Oracle ADF developers will be familiar with the ADF Logging framework, an instrumentation API that you can use to surface what your application is doing behind the scenes, mainly as a debugging aid.  The ADF framework itself uses the ADF Logging framework to produce copious logs showing what the framework actually does for you.

Admittedly reading the logs, either your's or Oracle's can be a rather tedious process.  Let's admit it, reading text files with 1000 of lines of output isn't what we signed up for when we joined the exciting world of the IT industry.  Arguably reading the logs can also be like drinking from a fire hose too, there's just too much information to digest.

To make your life a little easier as a developer, Oracle's JDeveloper includes the Oracle Diagnostic Log Analyzer which is a visual tool included in the IDE designed to allow you to search, filter and read the logs in a structured fashion.

A superb addition to the Oracle Diagnostic Log Analyzer is the ADF Request Analyzer.  The ADF Request Analyzer is not just designed to assist you read the logs, but restructures the logs to represent the JSF & ADF lifecycle on each request.  In other words it moves from a flat line by line log structure which doesn't really represent the flow or logic of how each request is processed, to showing you visually in a tree structure the different phases of the lifecycle processing the request.

Interjecting with one of the main benefits I see from a personal perspective, the ADF Request Analyzer takes that dry JSF lifecycle you read about in books but never really understood as it was all theoretical, and now shows you the runtime representation of the lifecycle so you really get to see what gets processed when.

For customers who don't know about this tool, the ADF product management team has released a new ADF Insider video on the ADF Insider Essentials YouTube channel entitled the Oracle Diagnostic Log Analyzer - ADF Requests and the JSF Lifecycle.  To make it a little more realistic than "here's the tool and you should use it", the video attempts to show you some real running scenarios, as well as how you would use it in a production environment.

We hope you find this useful.  As can be seen Oracle's ADF Product Management team continue to commit to providing customers comprehensive learning collateral on your ADF endeavours, with the ADF Insider Essentials channel, ADF Architecture TV, ADF Mobile Academy and much more.

Image courtesy of artur84 / FreeDigitalPhotos.net

Monday Nov 11, 2013

Tip: Keeping the ADF Mobile PDF Guide up to date

This is a little tip for customers using Oracle's ADF Mobile.

If you're like me, it's possible you don't rely on the online HTML version of the Mobile Developer's Guide for ADF, but rather download a PDF version of the file to use locally (look to the "PDF" link to the top right of the guide).  For me the convenience of the PDF is it's faster, I can search the whole document easily, I can split read the document across two pages on my home monitor, if I lose my internet connection the document is still available, and it's easy to read on my iPad (especially on long haul flights to the US across the Pacific where there is no internet connection!).

The trigger point for me to download the Oracle PDF documentation has always been on a new point release of JDeveloper.  However in the case of ADF Mobile, as an extension to JDeveloper it is releasing at a much faster and independent schedule to JDeveloper and this includes updates to the documentation.

As such the 11.1.2.4.0 ADF Mobile PDF guide you have locally might be out of date and you should take the opportunity to download the latest version.  This is also particularly important for ADF Mobile as not only are many new features being added for each release and included in the new documentation, but the guide is under rapid improvement to clarify much of what has been written to date.  Our documentation teams are super responsive to suggestions on how to improve the guides and this often shows per point release.

How do you tell you've the latest guide? Look to the document part number which right now is "E24475-03".  This is a unique ID per release for the document, the first part being the document number, and the part after the dash the revision number.  If the website document number has a higher revision number, time to download a new up to date PDF.

One last thing to share, you can follow the ADF Mobile guide document manager Brian Duffield on Twitter to keep abreast of updates.

Image courtesy of Stuart Miles / FreeDigitalPhotos.net

Wednesday Nov 06, 2013

Diagnosing ADF Mobile iOS deployment problems

From time to time I encounter customers who have taken possession of a brand new Apple Mac, have that excited "I've just spent more on a computer then I ever wanted to but it's okay" crazy gleam in their eye, but on pre-loading all the necessary software for Oracle's ADF Mobile to start their mobile campaign, following Oracle's setup instructions and deploying their first app to Apple's XCode iPhone Simulator they hit this error message in the JDeveloper Log-Deployment window:

[01:36:46 PM] Deployment cancelled.
[01:36:46 PM] ----  Deployment incomplete  ----.
[01:36:46 PM] Failed to build the iOS application bundle.
[01:36:46 PM] Deployment failed due to one or more errors returned by '/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild'.  The following is a summary of the returned error(s):
Command-line execution failed (Return code: 69)

"Oh, return code 69, I know that well" I hear you say.  Admittedly the error code is less than useful besides drawing some titters from the peanut gallery.

Before explaining what's gone wrong, I think it's useful to teach customers how to diagnose these issues themselves. 

When ADF Mobile commences a deployment, be it to Apple's iOS or Google's Android platforms, JDeveloper and ADF Mobile do a good job in the Log window of showing you what the deployment process entails.  In the case of deploying to iOS the log window will literally include the XCode commands executed to complete the deployment cycle. As example here's the log output that was produced before the error message was raised.... take the opportunity to read this line by line and note the command line calls highlighted in blue:

(Note some of the following lines have been split over multiple lines to suit reading on this blog, each original line is preceded by a timestamp. Ensure to check the exact commands from JDev)

[01:36:33 PM] Target platform is (iOS).
[01:36:33 PM] Beginning deployment of ADF Mobile application 'LayoutDemo' to iOS using profile 'IOS_MOBILE_NATIVE_archive1'.
[01:36:34 PM] Command-line executed: [/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild, -version]
[01:36:34 PM] Command-line execution succeeded.
[01:36:34 PM] Running dependency analysis...
[01:36:34 PM] Building...
[01:36:34 PM] Deploying 3 profiles...
[01:36:35 PM] Wrote Archive Module to /Users/chris/fmw/jdeveloper/jdev/extensions/
oracle.adf.mobile/Samples/PublicSamples/LayoutDemo/ApplicationController/
deploy/ApplicationController.jar
[01:36:35 PM] WARNING: No Resource Catalog enabled ADF components found to package
[01:36:36 PM] Wrote Archive Module to /Users/chris/fmw/jdeveloper/jdev/extensions/
oracle.adf.mobile/Samples/PublicSamples/LayoutDemo/ViewController/
deploy/ViewController.jar
[01:36:36 PM] Verifying existence of the .adf source directory of the ADF Mobile application...
[01:36:36 PM] Verifying Application Controller project exists...
[01:36:36 PM] Verifying application dependencies...
[01:36:36 PM] The application may not function correctly because the following dependent libraries are missing: /Users/chris/jdev/jdeveloper/jdeveloper/jdev/extensions/oracle.adf.mobile/
lib/adfmf.springboard.jar
[01:36:36 PM] Verifying project dependencies...
[01:36:36 PM] Validating application XML files...
[01:36:36 PM] Validating XML files in project ApplicationController...
[01:36:36 PM] Validating XML files in project ViewController...
[01:36:40 PM] Copying common javascript files...
[01:36:41 PM] Copying FARs to the ADF Mobile Framework application...
[01:36:41 PM] Extracting Feature Archive file, "ApplicationController.jar" to
deployment folder, "ApplicationController".
[01:36:42 PM] Extracting Feature Archive file, "ViewController.jar" to
deployment folder, "ViewController".
[01:36:42 PM] Deploying skinning files...
[01:36:43 PM] Copying the CVM SDK files built for the x86 processor...
[01:36:43 PM] Copying the CVM JDK files built for the x86 processor...
[01:36:43 PM] Command-line executed: [cp, -R, -p,
/Users/chris/fmw/jdeveloper/jdev/extensions/oracle.adf.mobile/iOS/jvmti/x86/,
/Users/chris/fmw/jdeveloper/jdev/extensions/oracle.adf.mobile/
Samples/PublicSamples/
LayoutDemo/deploy/IOS_MOBILE_NATIVE_archive1/temporary_xcode_project/lib]
[01:36:43 PM] Command-line execution succeeded.
[01:36:43 PM] Command-line executed: [cp, -R, -p,
/Users/chris/fmw/jdeveloper/jdev/extensions/oracle.adf.mobile/iOS/jvmti/jar/,
/Users/chris/fmw/jdeveloper/jdev/extensions/oracle.adf.mobile/Samples/
PublicSamples/LayoutDemo/deploy/IOS_MOBILE_NATIVE_archive1/
temporary_xcode_project/lib]
[01:36:43 PM] Command-line execution succeeded.
[01:36:43 PM] Copying security related files to the ADF Mobile Framework application...
[01:36:44 PM] Command-line executed from path:
/Users/chris/fmw/jdeveloper/jdev/extensions/oracle.adf.mobile/Samples/
PublicSamples/LayoutDemo/deploy/IOS_MOBILE_NATIVE_archive1/temporary_xcode_project/
[01:36:44 PM] Command-line executed:
/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild clean install
-configuration Debug -sdk
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/
Developer/SDKs/iPhoneSimulator6.1.sdk
DSTROOT=/Users/chris/fmw/jdeveloper/jdev/extensions/oracle.adf.mobile/Samples/
PublicSamples/LayoutDemo/deploy/IOS_MOBILE_NATIVE_archive1/Destination_Root/
IPHONEOS_DEPLOYMENT_TARGET=5.0 TARGETED_DEVICE_FAMILY=1,2
PRODUCT_NAME=LayoutDemo ADD_SETTINGS_BUNDLE=NO

As you can see when we move from JDeveloper undertaking its work, it then passes the code off in the last few lines for Apple's XCode to assemble and deploy the required .ipa file.  From the original error message which followed this complaining about xcodebuild failing with return code 69, we can quickly see the exact command line used to call xcodebuild.

As this is the exact command line call with all its options, you're free to open a Terminal window in Mac OSX and execute the same command by simply copying and pasting the command line. And via this you'll then find out what return code actually 69 means.  Unfortunately it's not that exciting.

For Macs that have just been installed and configured with XCode, XCode (and for that matter iTunes) which is required by ADF Mobile to deploy must have been run at least once before hand on your brand new Mac (to be clear that's once ever, not once every restart). On doing so you will be presented with a license agreement from Apple that you must accept. Only once you've done this will the command line calls work.  They're currently failing as you haven't accepted the legal terms and conditions. (arguably you an also accept the terms and conditions from the command line too, but ADF Mobile cannot do this on your behalf, so it's just easier to open the tools and confirm the legal requirements that way).

Putting aside the error code and its meaning, watching the log window, watching what commands are executed, learning what they do, this will assist you to diagnose issues yourself and solve these sort of issues more relatively quickly.  From my perspective as an Oracle Product Manager, it allows me to say "this is the stuff you don't need to worry about when you use ADF Mobile when it's configured correctly" .... as you can see my salesman qualities shine through.

For anyone who is happily using ADF Mobile on a Mac and wondering why you didn't hit these issues, it's quite likely that you already accepted the license conditions before deploying via ADF Mobile.  For instance, though I'm not a fan of iTunes itself, iTunes was one of the first things I loaded on my Mac to access my Justin Bieber albums.

Image courtesy of winnond / FreeDigitalPhotos.net
About

Not a selfie
Chris Muir
Oracle Mobility and Development Tools Product Manager

The views expressed on this blog are my own and do not necessarily reflect the views of Oracle.

@chriscmuir
LinkedIn

Search

Categories
Archives
« September 2015
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today