Mobile Foundation compatibility for Android 11 and iOS14

Update 18 Aug 2020:

We have validated Mobile Foundation compatibility against final beta (3) release of Android 11. All the Mobile Foundation features are tested against final beta of Android 11. Take a look at the updated Known Issues section of this blog.

2020 is a year that most of us will never forget. The ongoing pandemic has affected all our lives in more ways than one. In the world of mobile app developers, both Google I/O and WWDC did not have an in-person conference this year. While Google I/O was completely cancelled, WWDC took a fully online format this year. However, all of this did not stop both Google and Apple from releasing pre-release versions of their new mobile OSes to developers this year. In this post, we will assess the new changes and features in both iOS 14 and Android 11 and the compatibility of Mobile Foundation SDKs with Android 11 and iOS 14.

iOS 14

Apple announced a feature-packed iOS 14 during their annual WWDC 2020 conference on 22 June, 2020. A slew of new iOS 14 features that is inviting a lot of interest from the developer community are App Clips that allows users to use an app without downloading it. Widgets allow Apple users to display information from an app without the user having to start the app on their home screens. App Library will automatically organize apps into folders based on their functions. Privacy will give more transparency to user and control over their personal information. Apple has changed its App Store policy to require apps to ask users before tracking them across apps and websites owned by other companies. As a developer, you will want to take a thorough look at the changes to user privacy and its impact on your apps.

You can read more about all the new features in iOS 14 here.

Android 11

Google focused on improved 5G support and improved privacy protection in its upcoming OS Android 11. The first developer preview build of Android 11 was released on 19 February, 2020, and the updates of developer preview builds are available for a while now for testing, development, and feedback. Android 11 introduces various new Features and APIs, Behavior changes and Privacy in Android 11 for developers and end users.

We have been testing iOS 14 Beta 2 and developer preview 3(DP3) of Android 11. We verified various features of MobileFirst Platform Foundation on the iOS 14 Beta 2 and developer preview 3(DP3) of Android 11 for MobileFirst Platform Foundation v8.0. ​

Mobile Foundation Support for DP3 of Android 11 and iOS 14 Beta

​ Here are some notable feature compatibility tests that were performed with Mobile Foundation v8.0. ​

  • Invoking backend procedures through adapters
  • Application Authenticity
  • Application Management
  • JSONStore
  • Direct Update
  • Oauth Flow
  • Certificate pinning
  • Device SSO
  • Analytics
  • Push Notifications
  • Appcenter
  • In-App Feedback

We encourage you to start testing your application(s) with iOS 14 Beta and Android 11 Beta.

Existing application

Our tests have also ensured that native iOS and hybrid/Cordova apps that are built on older versions of iOS work on the iOS Beta. We have also ensured the integrity of apps on devices that upgrade from iOS 13.x to iOS 14 beta.

Known Issues

Local Network Privacy Restrictions with iOS 14

Due to iOS 14 Local Network Privacy Restrictions, you might hit the following error in your dev/test environment while connecting to Mobile Foundation server that is running on a local network. Device Log Error

You must choose OK to allow the app to access the local network. Device Log Error

To overcome Local Network Privacy restriction

  1. Following settings are required on the device (Settings->Privacy->Local Network). Device Setting

  2. Customize the usage description in the Info.plist file by using the key NSLocalNetworkUsageDescription, if your app intends to use the local network on the device. Plist Setting

We encourage you to start testing your applications with new builds of Android 11 and iOS 14. We would love to hear back from you.

Update 18 Aug 2020:

In App feedback feature crashes app with android 11

After upgrading to Android 11, if the targetSdkVersion of the app is set to API Level ‘30’, while attempting to click send button from inappfeedback popup, app crashes with NullPointerException as stated below, due to updates of toasts feature in android 11

2020-05-22 11:28:53.420 5298-5330/sample.com.pincodeandroid E/com.worklight.common.Logger$UncaughtExceptionHandler: Logger$UncaughtExceptionHandler.uncaughtException in Logger.java:491 :: Uncaught Exception
    java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.ViewGroup.getChildAt(int)' on a null object reference
        at com.worklight.analytics.feedback.EditFeedback.sendAppFeedback(EditFeedback.java:469)
        at com.worklight.analytics.feedback.EditFeedback.access$700(EditFeedback.java:53)
        at com.worklight.analytics.feedback.EditFeedback$3.onClick(EditFeedback.java:207)
        at android.view.View.performClick(View.java:7356)
        at android.view.View.performClickInternal(View.java:7333)
        at android.view.View.access$3600(View.java:807)
        at android.view.View$PerformClick.run(View.java:28200)
        at android.os.Handler.handleCallback(Handler.java:907)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7476)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:549)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:939)

This issue has been fixed on following levels of android library.

  • Native android library: com.ibm.mobile.foundation:ibmmobilefirstplatformfoundationanalytics:8.0.2020081208
  • Cordova android plugin: cordova-plugin-mfp-analytics@8.0.2020081211

Please use above levels which contains fix for this issue.

Application Authenticity feature crashes app, when app is built using gradle plugin >= v3.6.0 and gradle version >= v5.6.4

Update 23rd December 2020:

When an app built using gradle plugin >= v3.6.0 and gradle version >= v5.6.4 and if application authenticity feature is turned on in the Mobile Foundation server, the app crashes with following error during runtime. This issue is being investigated. To overcome this issue, use a lower version of gradle plugin and gradle while building the app.

2020-08-18 11:43:29.534 17533-22369/? A/pstarterandroi: java_vm_ext.cc:570] JNI DETECTED ERROR IN APPLICATION: java_object == null
2020-08-18 11:43:29.534 17533-22369/? A/pstarterandroi: java_vm_ext.cc:570]     in call to GetObjectClass
2020-08-18 11:43:29.534 17533-22369/? A/pstarterandroi: java_vm_ext.cc:570]     from java.lang.String com.worklight.common.security.AppAuthenticityToken.a1(android.content.Context, java.lang.String)
2020-08-18 11:43:29.688 17533-22369/? A/pstarterandroi: runtime.cc:631] Runtime aborting...
2020-08-18 11:43:29.688 17533-22369/? A/pstarterandroi: runtime.cc:631] Dumping all threads without mutator 

The issue happens when the Manifest.MF file is not present in the application binary. Earlier Gradle versions (prior to 4.x) used to package Manifest.MF file by default and this is not happening with recent Gradle version 4.x. This in-turn causing the above issue. For more details on this issue refer Known Limitations section. Also see this open issue on the Android Issue Tracker.

To overcome Application Authenticity crash, Package Manifest.MF file manually in the application binary with following steps

  • In the Application’s build.gradle file, Add the following line to pacakge Manifest.MF file manually.
android {
    …
    …
    packagingOptions {
        pickFirst 'META-INF/MANIFEST.MF'
    }
    …
    …
  • Clean & Rebuild the Application

Stay tuned for further updates, as we continue to update our findings on Android 11 beta and iOS 14.

Disclaimer: Some of the action items that are mentioned in the list above are not under IBM’s control. Therefore, we expect developers and IT managers to ensure that their infrastructure is up to date according to Apple’s requirements.

Inclusive terminology note: The Mobile First Platform team is making changes to support the IBM® initiative to replace racially biased and other discriminatory language in our code and content with more inclusive language. While IBM values the use of inclusive language, terms that are outside of IBM's direct influence are sometimes required for the sake of maintaining user understanding. As other industry leaders join IBM in embracing the use of inclusive language, IBM will continue to update the documentation to reflect those changes.
Last modified on December 24, 2020