Thursday Jan 30, 2014

New Enhancement Released for iOS7+Android Native Look & Feel and Xcode 5 Support

Hi, everyone:

It has been a while since a blog article was published last.  While the bloggers took a little time off during the holidays, the product development team has been hard at work to release a new ADF Mobile "Patch" (Patch 5) that adds some significant new functionality, in addition to numerous bug fixes.  You can find the release note for the new patch here.

To download, you would simply need to start JDeveloper 11.1.2.4, and select menu item Help->Check For Updates->Official Oracle Extension and Updates, and select ADF Mobile.  It should have version number 11.1.2.4.39.64.62.

For any customers who have received one off patch through the BLR process, please note that one-off patches obtained through the BLR process are not automatically rolled into this overall patch.  Therefore, please work with your Oracle Support representative to request a new BLR patch for this latest patch.

We will focus on two specific enhancements in this article:

  • New iOS7 and Android Native Look and Feel (mobileAlta Skin)
  • Xcode 5 support

mobileAlta Skin for Native iOS 7 and Android Look and Feel

With iOS7, Apple introduced a new look and feel that gives the iOS user interface a cleaner and more stream-lined look and feel  Gone are a lot of the three-dimensional and gradient effect in the user interface and icons, and replaced by simple and modern "skins" to complement the iOS device hardware.  With the latest ADF Mobile patch, we introduced a new mobileAlta skin that, when running on iOS devices, would closely match the standard look and feel of the iOS7 look and feel.

Here is what the HR application looks like with the old (mobileFusionFX) skin:

The updated skin on the iPhone now looks like:

As for Android, as many of you noticed, the look and feel of the ADF Mobile skin has always more resembled that of the iOS than Android.  Android did not introduce a more formal UI standard until Android 4.x, and is still evolving.  Nevertheless, it has evolved to a look and feel that's very distinctive from the iOS UI.  Many of you have reported this issue to us, and we listened.  When rendered on Android devices, mobileAlta skin would also introduce a more Android look and feel. 

Here is the new Android native look-and-feel:

How to Apply the New Look and Feel

To apply the new look and feel, you simply need to edit the adfmf-config.xml file, and change the skin family as follows:

<skin-family>mobileFusionFX</skin-family>

to 

<skin-family>mobileAlta</skin-family>

 That's it.  If you have over-written out of box ADF Mobile CSS styles or added your own CSS classes, please test the application thoroughly and ensure the new style is compatible with the customized classes.  Color, coordinates, and icon references may have changed, and thorough UI testing is needed to ensure there is no unexpected side-effects.


Xcode 5 support

With the latest patch, you will need to use Xcode5 to deploy the iOS version of the ADF Mobile application.  Only Xcode 5 is supported.  This complies with the latest Apple guideline due to take effect on February 1, 2014, where all apps submitted to the AppStore must be compiled with Xcode5 and optimized for iOS 7.

Update to the latest Xcode requires downloading and installing Xcode 5, and then configure the location of the Xcode 5 in JDeveloper - Tools - Preferences - ADF Mobile.  

While JDeveloper's integration with Xcode 5 did not change, Xcode 5 itself introduced a number of changes.  The most prominent change is around how Provisioning Profiles and Developer Accounts are managed.  Previously Provisioning Profiles and Developer Accounts are accessed and managed through the Organizer utility that's accessed through menu item Windows - Organizer.  Now it is managed through the Xcode Preferences dialog box accessed with menu item Xcode - Preferences, and then select the "Accounts" tab.  You will then see your Apple Developer account information displayed.  When you click on the "View Details..." button, you will then see the list of certificates and provisioning profiles assigned to you.  Therefore, when you need to verify the Provisioning Profiles, you will need to access this dialog box.  You can still double click on the .mobileprovision file to install the Provisioning Profiles, but must use this functionality to see it.

Please consult Apple documentation for details of how to use this new functionality.

There had been some blog article published that references the old "Organizer" functionality.  These blog articles would be updated over time.  

Thanks,

ADF Mobile Product Management Team 

Wednesday Nov 27, 2013

New ADF Mobile Application User Interface Design Guidelines

We are happy to announce the release of the ADF Mobile Application User Interface Design Guidelines wiki. We call it ADF Mobile Design for short. This wiki provides design best practices, design pattern examples, component information and developer resources. It is intended to assist teams designing native phone and tablet applications on iOS and Android. Feel free to use this as a reference when beginning application design or redesign project. The design content and examples will continue to change, grow and update on this wiki. Remember this is still work in progress in some areas.

Here is the full address: https://wikis.oracle.com/display/ADFMobileDesign/Home

Monday Oct 07, 2013

New ADF Mobile Patch Release Is Available

We are happy to announce the release of patch 4 for Oracle ADF Mobile 1.1 - this updates the extension version to 11.1.2.4.39.64.51.

This release contains several bug fixes and also introduces two new features:

URL Scheme support

  • Allows Oracle ADF Mobile Applications to be launched from other applications using URL scheme
  • Supports listener to process the context parameters passed via URL scheme
  • Documentation here

Custom SOAP Header support

  • Allows custom SOAP Headers to be included in the Web Service Data Control SOAP Requests
  • Documentation here

To get this new feature use the Help->Check for Update option in your JDeveloper menu, and download the new version which will overwrite the existing extension.

Release notes for this patch are listed here


Tuesday Sep 17, 2013

ADF Mobile @ Oracle OpenWorld 2013

Hi, everyone:

Oracle OpenWorld 2013 is shaping up to be the single most exciting event for anyone in the enterprise mobile application space, and ADF Mobile is literally the face and also at the core of Oracle's mobile application offerings.  If you are not able to come to the Oracle OpenWorld 2013, please do check on all blog, social media, and traditional media outlets for announcements around mobility.  However, if you are coming to Oracle OpenWorld, there are a number of "can't miss" sessions and demos. 

Please download this PDF document that lists all Oracle ADF Mobile related sessions and events.

Also, for a list of all mobile related sessions at Oracle OpenWorld, the starting point is this "Focused on Mobile" document.

Additionally, a number of Oracle Partners will also be present at the Mobile Enterprise Solutions Pavilion located in Moscone West Exhibit Area, Booth area 3347.  They are hardware providers, software partners, and systems integrators that have done a lot of work in leverage Oracle mobile technology.  Be sure to drop by and talk to them as well.

Lastly, I would like to invite you to attend the ADF Meetup, where you will meet ADF Mobile Product Managers and fellow developers.  It will take place Wednesday from 2-3 PM, in the OTN Lounge (Moscone South).  Hope to see you there!

Thanks, 

Joe Huang 

Friday Sep 06, 2013

Modify Android Device Permissions and Form Factors Support for Google Play

Hi, everyone:

This is a re-post of a forum reply - I hope you will find it useful. 

Recently Google Play made a number of changes, so that it is much more strict in terms of Android device/form factor support.  For example, if you simply published an ADF Mobile application on Google Play and then try to download the app from an Android tablet, you may see "This Application is not compatible with your device".  This is true even if you have created tablet-optimized screen in your ADF Mobile application.  This is because Google Play now inspects the content of AndroidManifest.xml file for supported screen form factors. Google Play uses the "Supports Screen"  element in the AndroidManifest.xml file to determine what devices/form factors are supported.  Summary of the supported form factors and densities are described here: Supporting Multiple Screens | Android Developers.  ADF Mobile supports different screen density display already in the deployment profile, and you don't really have to do anything there other than specified the required icon resources.  As for screen size, you would need to add the "Supports Screen" element in the manifest xml file template for the screen size you want to support.  For example, if you want to add to support all devices:

<supports-screens android:smallScreens="true"

                  android:normalScreens="true"

                  android:largeScreens="true"

                  android:xlargeScreens="true"/>

The Android site would give you definitions of what these different sizes mean. Basically, Normal = most of the smartphones, Large = small tablets with ~7 inch display, and xLarge = ~10 inch display.  

Furthermore, when you download the ADF Mobile application from Google Play and attempt to install it, you will also see the application requesting all sorts of device permissions, regardless of whether you are actually using that device service or not.  By default, ADF Mobile declares all the device permissions that may potentially be required by the framework.  Therefore, for example, even if the app does not access camera, the AndroidManifest.xml file will still contain references to camera permissions.  Ability to selectively choose the correct hardware permissions is planned for the next release of ADF Mobile.  In the meantime, you can modify the AndroidManifest.xml file template in the ADF Mobile extension as the workaround.

Here is what you will need to do to update the AndroidManifest.xml template:

  1. Navigate to file <JDev Install>/JDeveloper/JDev/Extensions/oracle.adf.mobile/Android/Oracle_ADFmf_Framework.zip
  2. Make a backup copy of the zip file
  3. Unzip the file, which would extract all files into a "framework" directory
  4. Navigate to framework/template/AndroidManifest.template.xml file
  5. Use a text editor to modify the device permissions, as well as adding the supports screen element as referenced above.  Check the list of device permissions and their definitions here for device permission modification, and please ensure you remove only the ones that you don't need.  Note that some permissions are required for framework to operate.  Please see the example below on what permissions are needed - the example below shows permissions required by the framework + GPS access.
  6. Zip up the framework directory and name zip file as Oracle_ADFmf_Framework.zip, replacing the old one.  Please make sure the zip file has the exact same directory structure as before.
  7. In JDeveloper, before deploying the application again, please do a "Clean All" to clean out all old deployment artifacts.
  8. Deploy the app - the app should now be visible for tablets, as well as has the appropriate permissions.
  9. Upload the app to Google Play - no additional actions are needed in Google Play around supported form factors and device permissions.

 

Now Android deployment process does not do any extra validation for what device permissions are actually needed, so it's up to you to ensure these are set correctly.  Also, you do not need to change the minimum and target API levels in the deployment profile - you would change it only if you want to restrict the application to support certain Android versions.  

Below is an example of the Android Manifest template file where device permissions have been striped down to only include GPS access and what the framework needs, but screen form factors have been specified to support all smartphone and tablet devices. 

Thanks,

Joe Huang 

 <?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

  package="$$app.package$$">

  <uses-sdk/>


  <application android:icon="$$app.icon$$"

    android:label="$$app.name$$" android:name="oracle.adfmf.Application">

    <activity android:name="oracle.adfmf.Container" android:label="$$app.label$$" android:theme="@android:style/Theme.NoTitleBar"

              android:configChanges="$$app.configChanges$$" android:windowSoftInputMode="adjustPan" >

      <intent-filter>

        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />

      </intent-filter>

    </activity>

    <activity android:name="oracle.adfmf.AMXActivity" android:theme="@android:style/Theme.NoTitleBar" android:windowSoftInputMode="adjustPan"></activity>

    <activity android:name="oracle.adfmf.RemoteURLActivity" android:theme="@android:style/Theme.NoTitleBar" android:windowSoftInputMode="adjustPan"></activity>

    <activity android:name="oracle.adfmf.LocalHTMLActivity" android:theme="@android:style/Theme.NoTitleBar" android:windowSoftInputMode="adjustPan"></activity>

    <activity android:name="oracle.adfmf.phonegap.AdfSpringboardPhoneGapActivity" android:theme="@android:style/Theme.NoTitleBar" android:windowSoftInputMode="adjustPan"></activity>

    <activity android:name="oracle.adfmf.SettingsActivity" android:theme="@android:style/Theme.NoTitleBar" android:windowSoftInputMode="adjustPan"></activity>

    <activity android:name="oracle.adfmf.navbar.MoreTabActivity" android:theme="@android:style/Theme.NoTitleBar" android:windowSoftInputMode="adjustPan"></activity> 

    <activity android:name="oracle.adfmf.BlankActivity" android:theme="@android:style/Theme.NoTitleBar" android:windowSoftInputMode="adjustPan"></activity>

  </application>

  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

  <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />

  <uses-permission android:name="android.permission.READ_PHONE_STATE" />

  <uses-permission android:name="android.permission.INTERNET" />

   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />   

  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />


<supports-screens android:smallScreens="true"

                  android:normalScreens="true"

                  android:largeScreens="true"

                  android:xlargeScreens="true"/>

</manifest>

About

This blog is is dedicated to tips and tricks for developing, integrating, securing, and managing mobile applications using Oracle Mobile Platform. It is created and maintained by the Mobile Suite/Oracle ADF Mobile product development team.

Archive of past entries

Even More Mobile Development Blogs

Oracle A-Team Site - Mobile Related Entries

Code samples from the Community

Fusion Middleware Blogs

Search

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