Skip to Content
Technical Articles
Author's profile photo Ludo Noens

What’s new with Hybrid Application Toolkit in 2019

Update 3 April 2020: moved the best practices, frequently asked questions and tips and tricks to a separate blog post.

Update 24 September 2019: Our Mobile Services Cloud Build Service has been updated to use Kapsel SDK 3.1 SP02 PL08. This version includes fixes for iOS 13 and Android 64-bit (offline library), in addition to other fixes.

 

With this blog post I want to update users who are developing hybrid mobile apps in SAP Web IDE Full-Stack on the latest changes in Hybrid Application Toolkit (HAT), for which I am in the role of Product Owner.

It’s been a while since we have created a release for the Hybrid Application Toolkit extension in SAP Web IDE Full-Stack. This month we are releasing version 1.32. We did release a couple of patches in the past year, but this was nothing major. In this blog, I am going to discuss what’s new, and also highlight a number of small improvements we’ve made in the past year. Last but not least, I have added a “Frequently Asked Questions” and a “Tips and Tricks” section.

Before I jump into the details, I want to provide you one important recommendation:

When you start developing a new mobile app, we strongly recommend that you consider developing this with either MDK (Mobile Development Kit) for cross platform applications, or our native SDKs (SAP Cloud Platform SDK for iOS or SAP Cloud Platform SDK for Android).

What are the biggest changes in this latest release ?

With Hybrid Application Toolkit version 1.32 we are now allowing hybrid app developers to make changes to code and files which were previously generated on our cloud build service. All the details can be found in our online help. By giving developers access to these files in their SAP Web IDE project, they are now able to configure and tweak the application to their needs:

  1. You are now able to select, but more importantly also unselect Cordova and Kapsel plugins. Previously your application would by default include a relatively large set of plugins. You can now tweak this to your own needs (e.g. to remove redundant plugins or plugins that give conflicts with others).
  2. You can now modify hybrid app settings and behaviour by editing the config.xml file.
  3. You can now edit the appConfig.js file, which contains your app’s configuration settings used at runtime. We do not recommend changing the contents of this file. Only advanced users might have a need to change this.
  4. You can modify appRoutes.js, which is used to route your app’s data flow.

The above explanation might not be very clear for everyone, so let’s use an example to go through some of the details. Since I’ve already published a blog about creating an offline app here, I will not duplicate this. Instead, I’ll create a CRUD app that only works in online mode.

Please be aware that for existing projects, you will need to re-enable it as a Hybrid Mobile Project. Make sure you have a copy of the current mobile folder in your project before doing this step.

Creating an online CRUD mobile app

Let’s start with something that is actually optional (you can skip this step): a fresh workspace in SAP Web IDE. In case you are not aware, you can create multiple workspaces. This will help you keep your workspace organised. Go to the menu Tools > Workspace Manager and select “Create Workspace”. Once you open the new workspace, ensure the HAT extension is enabled.

Now we will create a new project from a template.

In the template selection dialog, we select the CRUD Master-Detail Application template that I’ve also used for the offline app blog.

Note that you now have a dropdown for selecting the environment. In this case, you have to select Neo. Other environments are not supported. We are looking into Cloud Foundry support, but this is currently still a roadmap item. With some manual work, it is possible to create hybrid mobile apps that work with Mobile Services on Cloud Foundry though.

Another thing to keep in mind is the SAP UI5 version selected here. This is the version on which the templates are based. This does not mean your app will actual load this version of the UI5 libraries. The latter actually depends on settings in the Portal (if you deploy the web app to Cloud Platform), or in case of Packaged mobile apps, it depends on the version included in the packaged app. More on this in the next section.

In the next step, we will provide some basic information regarding the application.

Note that the template requires you to provide the Application Component Hierarchy. However, in the mobile app this is not relevant. You can use any 3 letter combination to get passed this.

For the data connection settings, I am using a destination created on SAP Cloud Platform, pointing to the mobile services sample OData service. If you don’t know how to create this, please check this tutorial on the SAP Developers Center.

For the template customisation, I will use the same data binding as used in the offline blog.

After selecting Finish, the project is created in the workspace.

If you want to test the web application, you just hit the run button and run the app as Fiori Launchpad Sandbox. If this doesn’t work, you should resolve this problem first, before proceeding with the next steps. Remember that debugging and solving issues on a web application is way easier than debugging a mobile app running on a device.

Converting the web app into a mobile app

Now that we have a working web application, let’s turn this into a mobile app. The first step is to enable this project as a Hybrid Mobile project.

This step will create a folder named “mobile” in your project. In HAT 1.32 we also introduce 3 new files: config.xml , mobile/appConfig.js and mobile/appRoutes.js. The mobile folder contains the source files related to the mobile app. You can still deploy the web application (stored in the webapp folder) to SAP Cloud Platform and run it as a web application.

Note that some of these newly introduced files contain placeholder values. These values will automatically be replaced after you trigger a mobile cloud build. Once this build is done and the application is generated on Mobile Services, you will see the values used for your application. If needed, you can change them after this.

Below is the generated appConfig.js file with placeholder values. This file contains configuration details which were related to Fiori Client. Our current Cloud Build does not add the Fiori Client plugin, but we’ve borrowed some of its configuration format. Previously, this file was generated by Mobile Services and used during the cloud build process. As a developer, you had no access to this file. Now, you can change it in SAP Web IDE.

HOWEVER, in general, this file should not be modified manually. Instead, it is recommended to use the Mobile Services admin cockpit to make changes to the application’s settings (e.g. authentication settings). When you trigger a new mobile build, these values will automatically be reflected in this file.

Another file which was generated during the build process is appRoutes.js. This configuration file is used to route the data flow for your application, by specifying the destination and path to be used. More details can be found in our online documentation.

The most important file getting exposed in this release is config.xml. This is a file used by Apache Cordova to build the hybrid app and contains various settings, including the Cordova plugin list. It is a global configuration file that controls various aspects of the Cordova application’s behaviour. Some portions of this file will be updated automatically by the HAT plugin (e.g. splash screen and icon image selection, plugin selection). In general, we recommend that you do not touch this file. For special cases, advanced developers are able to change the file manually as well.

The config.xml allows you to change your application’s settings. For example:

  • access : define external domains the app is allowed to communicate with
  • allow-navigation : controls which URLs the web view in the container can be navigated to
  • allow-intent : controls which URLs the app is allowed to ask the system to open
  • plugin : specify which plugin to add. You can also specify the version number (limited to the public plugins; not the default / Kapsel plugins). We recommend using the Plugin selection UI instead.
  • preference : here you can define a wide range of options as pairs of name/value attributes. Many of them are unique to a certain platform.
  • param : can be used to specify certain plugin parameters.
  • config-file : this allows you to modify the platform specific configuration files AndroidManifest.xml and info.plist. More details can be found in the Apache Cordova documentation here.

More details on the settings that can be used in config.xml can be found in the Apache Cordova documentation.

Warning: changing this file manually can result in failing builds. I recommend keeping your project under revision control (should be part of any developer’s way of working anyway) and roll back your changes if the cloud build fails due to modifications you’ve made in this file. Remember that your build environment is probably sitting on the other side of the world, and it is pretty troublesome to debug that.

Let’s take a look and see what has changed for the plugin selection.

Previously, there was a relatively large set of Kapsel plugins and public Cordova plugins added into the hybrid mobile apps. We have reduced the amount of default selected plugins and we now allow you to remove them if you think they are not required. This can save you a bit of application footprint.

We have also introduced a tab where you can see the Kapsel plugins, and allow you to select or unselect them. Please be careful when removing plugins. Your application might compile and build just fine, but fail at runtime due to missing plugins.

In the Public tab, you can search and select public plugins available in the public NPM repository. At the moment there are more than 4000 plugins to choose from. Some of these plugins might conflict with other plugins. So it is good to be able to select or unselect any plugin.

The plugin selection will be stored in your project’s config.xml file. If for some reason the plugin you are interested in is not selectable in our dialog, then you are still able to add it manually in the config.xml file. In general, we recommend using the Plugin selection UI instead.

Now that we are done with the plugin selection, let’s go ahead and build the packaged app.

In the first step of the build wizard you can provide information about the mobile app.

Previously, the application version was automatically generated and increased. We have recently added the ability to specify the version manually.

In the platform settings, you can select for which platform you want to build the application. We only support iOS and Android here. The Windows platform is not supported with our Cloud Build Service.

Note that you can opt for saving the Xcode and Android Studio projects as generated by us on the Cloud Build Service. Once the build is done and the files stored in our cloud service, you can download them to your machine and use them to develop the application locally.

Since these Xcode and Android Studio project are huge, it will take quite some time to store and retrieve them. You should only make use of this option when it is really required.

UI5 libraries

Another topic is the UI5 version to be packaged. As you can see, you can select only a limited set. Over time, we will pick certain new versions to be included in this list (and drop older ones). We have validated that the versions selectable work on mobile with the SAP Web IDE templates we support. As this is producing quite some overhead, we have limited the update cycle.

One of the challenges with UI5 is that it keeps on evolving and growing in size. What we include in the packaged apps is a curated set of libraries, relevant for most apps created for mobile. It is quite likely that we include more libraries than YOUR application needs. As a result, the footprint of the app is relatively large. Unfortunately, we don’t have a safe way to remove libraries deemed redundant. If a library is actually required by an application and we did not include it, it will only show up as a problem at runtime. So, yes, the apps are large; and there is not much we can do about this with cloud build. If you really want to strip down the UI5 libraries in your application, then you can do this manually. Simply download the Xcode and Android Studio project and remove some of the folders in the resources folder. But again, you are taking a risk here that your app fails at runtime.

 

Cloud Build Service with Mobile Services

Since we are not going to use Push Notifications in this example, we can now proceed with building the app.

The build progress will be visible in the SAP Web IDE console.

As you can see, building and storing this iOS app in the cloud only took a few minutes. Depending on your location, the downloading will probably take a bit longer though.

When the build is finished, a dialog will pop up showing you a QR code and 2 hyperlinks for downloading the binary and optionally the project files. By scanning the QR code on your device, you can download and install the application directly onto your device. No wires needed.

Note that the download can sometimes fail due to network conditions. If you are using the Firefox browser, you will be able to resume a failed download (note that this won’t work with the Chrome browser).

 

Once you have installed the application on your device, you can start your testing.

 

What’s next ?

As indicated above, we have one topic on our roadmap: supporting Cloud Foundry environments. Since we are aiming to support multi-cloud scenarios, it is possible that customers want to use Mobile Services on Cloud Foundry, instead of Neo.

As stated, it is a roadmap item. I cannot confirm delivery at this point, and don’t have a target date for this. Meanwhile however, you can actually build your hybrid mobile apps with our services available on Neo. It does require some more manual steps to configure the application to work with Mobile Services on Cloud Foundry. The details are described in this blog.

With respect to features, we actually consider HAT to have matured and therefore do not intend to add more features.

 

Reporting issues

I will not be monitoring this blog very frequently, so in case you run into issues with our SAP Web IDE extension or Cloud Build Service triggered via SAP Web IDE, please raise a support ticket for component CA-WDE-MOB.

If you have questions, feel free to comment down below. Again, please don’t expect instant answers.

 

Regards,

Ludo Noens – Product Owner, Hybrid Application Toolkit

Assigned Tags

      67 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Krishnakumar Padinjhare Marath
      Krishnakumar Padinjhare Marath

      Thanks for the blog.

      In the build wizard, while on second step -  configure mobile build settings, I am getting an error "fail to get minimum os version" This is not defaulted and the drop down is also blank . Any clue on what could be the issue and how to resolve?

       

      Regards,

      Krishnakumar

      Author's profile photo Ludo Noens
      Ludo Noens
      Blog Post Author

      Hi Krishnakumar,

      Please let me know on which landscape you are seeing this.

      Thanks,
      Ludo

      Author's profile photo Krishnakumar Padinjhare Marath
      Krishnakumar Padinjhare Marath

      Issue was noted on trial landscape. Now its good. Thank you.

      Author's profile photo Samir Nigam
      Samir Nigam

      Hi Krishnakumar,

      Could you please try again. If problem still persists, could you create a BCP ticket for MOB-CLD-BLD component - with details such as build log, error screenshot, etc. Also let us know which SAP Cloud Platform landscape/region you are using?

      Thanks,
      Samir

      Author's profile photo Krishnakumar Padinjhare Marath
      Krishnakumar Padinjhare Marath

      Thank you Samir. Its good now and I can build the application today.

      Author's profile photo Angel Gutierrez Bellido
      Angel Gutierrez Bellido

      Hi Ludo,

      How can i hidden passcode screen in my app?

      Author's profile photo Zhigao Chen
      Zhigao Chen

      Hi Angel,

       

      To disable the passcode screen for a packaged app, add one line in the mobile/hybrid/sap-mobile-hybrid.js like below.

       

      To disable the passcode screen for a custom Fiori Client app, modify the "disablePasscode" property in the appConfig.js file.

      	"disablePasscode": true,

       

      Save the file change and then rebuild your app.

       

      Regards,

      Zhigao

      Author's profile photo Anil Thammisetty
      Anil Thammisetty

      Hi Ludo,

      Getting the below error while generating the build

       

       

      Any inpus on this ?

      Author's profile photo Ludo Noens
      Ludo Noens
      Blog Post Author

      Hi Anil,

      We are in the process of releasing a patch to fix this problem. While waiting for that fix, please do the following to ensure the styling of your app is correct :

      Add this line to the SAPUI5 bootstrap <script> in mobile/index.html:

      data-sap-ui-xx-lesssupport="true"

      Thanks,
      Ludo

      Author's profile photo Anil Thammisetty
      Anil Thammisetty

      Hi Ludo,

      Thanks for the reply.

      The above code (data-sap-ui-xx-lesssupport="true") is coming bydefault in mobile index.html file if we enable the project as Hybrid Mobile Project and still it is throwing the same error 🙁

      Please suggest.

      Author's profile photo Ludo Noens
      Ludo Noens
      Blog Post Author

      Hi Anil,

      We have released a patch to fix it. Hybrid Application Toolkit version 1.32.1 is now available on productive landscapes.

      Regards,
      Ludo

      Author's profile photo Anil Thammisetty
      Anil Thammisetty

      Hi Ludo,

      Its working now.Thanks for the quick fix:).

      KR,

      Anil

      Author's profile photo Angel Gutierrez Bellido
      Angel Gutierrez Bellido

      Hi Ludo,

       

      I have got current user, but the request returns 403. What is the reason this error?

      Author's profile photo Ludo Noens
      Ludo Noens
      Blog Post Author

      Hi Angel,

      The information you are providing here is not sufficient to provide a reasonable answer. Please check the app's configuration settings and logs in the Mobile Services admin cockpit.

      Thanks,
      Ludo

      Author's profile photo Angel Gutierrez Bellido
      Angel Gutierrez Bellido

      the problem is when i exit app. Later i open the app, that show screen login.. Do you have anyidea  about it.

      Author's profile photo Daniel Krancz
      Daniel Krancz

      Hi Ludo!

       

      I have a problem using the offline capabilities of HAT. When I'm trying to open the offlineStore I get a HTTP 404 within the URL of my destination in the SAP CP ms:

      "[-10210] The operation failed due to an error on the server: -857 (SERVER_SYNCHRONIZATION_ERROR) ([-10225] Message: User exception: [-100025] An error occurred while communicating with the OData server to retrieve the result of request "https://mobile-e1a...b.eu2....../$metadata".
      Error caused by: [-100010] Retrieve metadata failed because the OData server returned HTTP code, 404, with message: null)"

      If I follow the URL of the destination then I get a HTTP 403 with following error:

      HTTP Status 403 - Neither Application connection id nor Application id is provided.

      Before this update of HAT my app had worked also offline (I have followed your blog from last year) but now it seems that the destination can not be resolved successfully and the load of the $metadata from the FSD failed.

      Do you have some tipps or any approaches for debugging my app?

       

      Regards,

      Daniel

      Author's profile photo Ludo Noens
      Ludo Noens
      Blog Post Author

      Hi Daniel,

      I recommend using the trace functionality available in the Mobile Services admin cockpit to check the communication between the mobile app and Mobile Services, and between Mobile Services and the backend.

      The offline plugin communicates over Mobilink, which will not show up in your browser's network trace.

      Thanks,
      Ludo

      Author's profile photo Daniel Krancz
      Daniel Krancz

      Hi Ludo,

      thank your for your fast reply.

      If I execute an "OData Application Destination Test" in the Mobile Services -> My app -> Connectivity I recieve data from my OData Service published on the FSD:

      But here i need to enter the relative service path, is it possible that exactly this path is missing somewhere in my configuration?

      Thanks,

      Daniel

      Author's profile photo Ludo Noens
      Ludo Noens
      Blog Post Author

      Hi Daniel,

      That’s why I suggest to use Network Traces (See Analytics tab in Mobile Services cockpit). It will show you exactly which path is being used.

      Other debug options are described here: https://blogs.sap.com/2017/07/20/mobile-services-debugging-and-root-cause-analysis-walkthrough/

      Regards,

      Ludo

      Author's profile photo Daniel Krancz
      Daniel Krancz

      Thanks! I have started the trace and found an entry with the URL for the GET-Request of the $metadata:

      I think the problem is that this relative ODataPath between server URL and /$metadata, as in my last reply described, is missing somewhere and that’s why the metadata file couldn’t be loaded.

      Whats your opinion on this output?

      Regards,

      Daniel

      EDIT: Response is a HTTP 404 - Not Found with the Messages:

      "What happened? URL call was terminated because the corresponding service is not available."

      "Note: The termination occurred in system with error code <b>404</b> and for the reason <b>Not found</b>."

      "What can I do?: Select a valid URL"

      Author's profile photo Ludo Noens
      Ludo Noens
      Blog Post Author

      Can you check whether the correct path is set in the manifest.json in your webapp folder in SAP Web IDE?

      Author's profile photo Daniel Krancz
      Daniel Krancz

      Hi Ludo!

      I have found out what the problem was. The SCP ms can not resolve the relative path to the OData Service. I had to add the service with the nodes at my FSD to the destination URL in the SCP.

      Now the OfflineStore is created, but the next problem is, that every call is made against the online OData Service.

      As error I only get "HTTP failed 0,," which is really not meaningful to me.

      Do you have any ideas?

      Thanks,
      Daniel

      Author's profile photo Ludo Noens
      Ludo Noens
      Blog Post Author

      Hi Daniel,

      If the calls are made against the online OData service, then there is a mismatch between the path used to access this data, and the serviceRoot defined when you’ve created the offline store. We are basically intercepting the calls to the OData service and if the path matches the one defined for the offline store, then we will direct them to the offline store. In all other cases, we assume the service is online.

      Possible solutions for your case:

      1. Check the serviceRoot defined in createStores.js and make sure it matches your updated path.
      2. If you have already run your app on-device and it created an offline store, then you need to delete it. I recommend deleting the app, and if you are using Android, ensure the app data is deleted as well. Note that overwriting an existing app with an updated version will not clear that offline store.

      The code responsible for constructing the path resides in index.html. You can set a breakpoint there and check what path is being constructed.

      Hope this helps.

      Cheers,
      Ludo

      Author's profile photo Daniel Krancz
      Daniel Krancz

      Hi Ludo!

      Thank you for your help.

      My next question would be, why the generated APK is a 32-bit version and how can I change it to a 64-bit? The Google Store require APKs that are 64-bit. Or ist this change on the roadmap for HAT or SAP CP ms?

      Cheers,

      Daniel

      Author's profile photo Ludo Noens
      Ludo Noens
      Blog Post Author

      Hi Daniel,

      Sorry for the later response. We have already updated the SDKs to support 64-bit and are planning to update our Cloud Build Service accordingly. I am currently not able to provide an ETA for that, but let's just consider it 'soon'.

      Regards,
      Ludo

      Author's profile photo Ludo Noens
      Ludo Noens
      Blog Post Author

      Hi Daniel,

      I can confirm our Mobile Services Cloud Build Service has been updated to Kapsel SDK 3.1 SP02 PL08. This version includes fixes for iOS 13 and Android 64-bit (offline library), in addition to other fixes.

      Regards,
      Ludo

      Author's profile photo Martin Koch
      Martin Koch

      Dear Ludo,

      thanks for the great explaination. A stupid question from my side. If i have a model in the manifest.json with the defaultOperationMode property set to server - does this interfere with the Offline functionality ?

      Thanks!

      Best regards,
      Martin

      Author's profile photo Ludo Noens
      Ludo Noens
      Blog Post Author

      I think it doesn't matter, but frankly speaking, I'm not an expert on model definitions.

      Regards,
      Ludo

      Author's profile photo Benny G. Sørensen
      Benny G. Sørensen

      Would you recommend SAP Web IDE Full-Stack With HAT, as the right version for developing desktop Fiori Apps and Mobile Fiori Apps with native and offline functionality. Our customer uses on-premise system, without connection to the internet. The SAP Systems is within a closed network for security reasons. The backend system is Abap 7.5 HDB ECC EhP8. The frontend server and web dispatcher implemented as hub.

      tia Benny

      Author's profile photo Ludo Noens
      Ludo Noens
      Blog Post Author

      Hi Benny,

      May I assume that your customer is already making use of SAP Mobile Platform, on-premise?

      Your customer is not keen on using cloud services. What we provide with SAP Web IDE Full-Stack with HAT are in fact cloud services for developing mobile apps. You develop the apps in the cloud, build them in the cloud and deploy to Mobile Services in the cloud. As we have phased out HAT local add-on, we no longer support the on-premise scenario in SAP Web IDE.

      SAP Web IDE Full-Stack might still be a valid option for prototyping and getting started quickly. But once development gets into full swing, I recommend switching to a local (some call it on-premise) environment. In this case, you can use the SAP Mobile SDK (Kapsel) and any IDE you like (e.g. VSCode). It does require some more hands-on work with Apache Cordova.

      Regards,
      Ludo

      Author's profile photo Benny G. Sørensen
      Benny G. Sørensen

      Hi Ludo, Thanks for your quick response. Your assumption is right, our customer is using SAP Netweaver Mobile 7.1 and dedicated Handscanner. As both hardware and SAP NWM soon is outdated, the customer looking into SAP Fiori solution on a Secure Tablet. Due to the restriction of closed network, we think that we might be able to use SAP HANA Studio, elicpse, ADT and SAP Web IDE for Hana. Therefore we have to install/activate SAP HANA XS with SAP Web IDE for HANA. We do not believe that SMP 3.0 would be the right solution, as we think that SP 3.0 has a shorter lifetime. What do you think. The customer like this so-called on-premise environment. Natually we have to build our custom Fiori Mobile Client, including Kapsel and perhaps make some more hands-on work with Apache Cordova. Are we an the right track ?

      Author's profile photo Shanir Tvaija
      Shanir Tvaija

      Hi Ludo Noens

      Can you please elaborate on how to include npm plugins into custom Fiori Client. I read your last years  blog on creating custom Client with webIDE,  but there is no explanation how to include selected plugins with fiori client. Like if I want to access root certificate  as authentication method on iOS by utilizing this plugin?

       

      Thanks, Shanir

      Author's profile photo Ludo Noens
      Ludo Noens
      Blog Post Author

      Hi Shanir,

      The steps to add a plugin are described in this blog post.

      Open the context menu on your Custom Fiori Client project in SAP Web IDE, select Mobile > Select Cordova Plugins

      In the dialog, select the Public tab and search for AirWatch. The plugin you've mentioned is part of the search result.

      The plugin's documentation indicates that you need to add an entry in appConfig.js :

      "certificate": "com.airwatch.x509provider",

       

      Hope this helps,

      Ludo

      Author's profile photo Shanir Tvaija
      Shanir Tvaija

      Hey Ludo Noens

      Thanks for the prompt answer! I guess I wasn't clear what y question is - I understand how to add plugin that is used within the apps. But how to utilize the added plugin methods and events? Should I add them in index.js within ondeviceready, if there is neccesity? or how to use events that are needed for Fiori container, not the apps?

      Like in this case I have added the plugin, but that is not finding the airwatch provided certificate that is stored on the device, so I guess I need to check initSuccess event, but how?

      Thanks, Shanir

       

      Author's profile photo Ludo Noens
      Ludo Noens
      Blog Post Author

      Hi Shanir,

      The example in the plugin's documentation sets the SDK event listener on deviceready, by calling window.plugins.airwatch.setSDKEventListener(sdkEventCallback).

      In the event callback you can check for the initSuccess event.

      To verify the plugin is loaded, please set a breakpoint after deviceready and type window.plugins.airwatch on your console. If this is undefined, then the plugin is not loaded.

      Hope this helps; I cannot really provide further support for 3rd party plugins ...

      Thanks,
      Ludo

      Author's profile photo Oleksii Konchyts
      Oleksii Konchyts

      Hello Ludo Noens ,

      Thank you for blog, it’s very helpful. I tried with …/SampleServices/ESPM.svc and everything works fine. But when I try use my own .xsodata, I’m facing with issue.

      This is in Log:
      Retrieve service document failed because the OData server returned HTTP code, 406, with OData error message: Code: 406, Message: Format application/xml not supported., and Inner Error:

      This is on mobile device:
      “Alert.
      An error occurred “[-10210]. The operation failed due to an error on the server: -857 (SERVER_SYNCHRONIZATION_ERROR) ([-10225] Message: User exception: [-100025] An error occurred while communicating with the OData server to retrieve the result of request \”https://hcpms-XXXXXXXXXXXtrial.hanatrial.ondemand.com:443/appId_dest\”.\nError caused by:[-100046] Retrieve service document failed because the OData server returned HTTP code, 406, with OData error message: Code: \”406\”, Message:\”Format application/xml not supported\”. and Inner Error:\”\”

       

      The problem is, that there is no /$metadata  in the end of request(….443/appId_dest/$metadata). It’s not happen with path “/SampleServices/ESPM.svc” in appRoute.js. If you use .xsodata for OData V2 or /catalog/ for OData V4, the $metadata is not added. That's why the request failed.

      Could you check it. 

      Author's profile photo Ludo Noens
      Ludo Noens
      Blog Post Author

      Hi Oleksii,

      The problem is described in the error message. The xsodata service is not able to provide the expected metadata in XML (Atom) format. Take note that xsodata services only support JSON format. The sample service does provide metadata in xml format and hence works fine.

      What needs to be done ?

      In the SAP Mobile Services admin cockpit, find the mobile application under Mobile Applications > Native/Hybrid

      Select the application and select the Offline feature

      The configuration of the destination used to access the xsodata service needs to be changed.

      Either use the Create button under Actions, or upload a text file containing the same (Application Configuration File).

      More info here:  https://help.sap.com/doc/329ac769552a411b97bc7adb991b6197/3.0.12/en-US/f5a25877c16f4fc384c44fcf0b92dab8.html

       

      As you can see, the OData Communication Format can be changed to JSON:

      Hope this helps !

      Regards,
      Ludo

      Author's profile photo Oleksii Konchyts
      Oleksii Konchyts

      Hello Ludo Noens ,

      thank you for feedback. The format “application/json” was set as value for “OData Communication Format” and “Delta ..” as well.

       

       

      But it’s not helped :(, the error message is the same:

      “Retrieve service document failed because the OData server returned HTTP code, 406, with OData error message: Code: 406, Message: Format application/xml not supported., and Inner Error:“.

      I red documentation regarding Offline setting, which you provided. The Gateway is very oft as Backend mentioned, but I didn’t find info about HANA as Backend.

      May be you have another solution for this issue?

       

      Thank you in advance.

      Best Regards,
      Oleksii

      Author's profile photo Jayakrishnan Chandramohan
      Jayakrishnan Chandramohan

      Hi Ludo Noens  Thanks for the information

      I just posted the question on SCN regarding generation of apk. Could you please assist me on the issue.

      https://answers.sap.com/questions/12853137/apk-generation-on-sap-mobile-services-in-sap-full.html

      Thank you,

      Regards,

      JK

      Author's profile photo Angel Gutierrez Bellido
      Angel Gutierrez Bellido

      Hi Ludo,

       

      I am having a problem.  When i start my app in mode offline. Which shows a screen in blank.

      Could you help me with this problem, please?

       

      Regards

      Ange,

      Author's profile photo Ludo Noens
      Ludo Noens
      Blog Post Author

      I realise this is a very late response. A few remarks:

      • Blank screen doesn't tell anything. In most cases, an error occurred and your app has stopped running in the web container.
        The question is what error is reported when you hook up a debugger (through your desktop web browser).
      • If need help, please raise a support ticket for component CA-WDE-MOB. We will provide support as soon as we can and these tickets are tracked.

      Please understand that I do not monitor the questions on the blog, so response is not guaranteed.

      Thanks,
      Ludo

      Author's profile photo anita carola
      anita carola

      Hi Ludo,

      is there a planned date for Mobile Services Cloud Build Service to be updated to use Kapsel SDK 3.1 SP02 PL09?

      As far as I have understood this should help solving push notification issue on iOS13.

      Regards

      Anita

      Author's profile photo Ludo Noens
      Ludo Noens
      Blog Post Author

      Hi Anita,

      We are working on an update. I have no planned date at this point.

      Can you please help raise a support ticket, in which you indicate on which service you need this update ? (Cloud build service with Mobile Services, or the older Fiori Mobile).

      You can use component CA-WDE-MOB for this.

      Thanks,
      Ludo

      Author's profile photo Siddharth Chauhan
      Siddharth Chauhan

      Hi Ludo,

      I am trying to apply custom theme to my app and I have updated the following things in the mobile/index.html

      data-sap-ui-xx-lesssupport="true"
      data-sap-ui-theme="clientfioritheme"
      data-sap-ui-theme-roots='{"clientfioritheme" : "clientfioritheme/UI5/"}'

      I kept the theme in my workspace during the build and everything went well except that the app now do not show any theme.

      Thanks

      Sid

      Author's profile photo Ludo Noens
      Ludo Noens
      Blog Post Author

      Hi Sid,

      Things have changed a bit. Please put the “clientfioritheme” folder under the “webapp” folder in your project. And change the data-sap-ui-theme-roots path in the “webapp/index.html”

      data-sap-ui-theme-roots=’{“clientfioritheme”: “/clientfioritheme/UI5/”}’

      Tweak the path, e.g. remove the trailing or preceding “/”, to ensure the web app can load the custom theme successfully in SAP Web IDE Full-Stack. Once the web app works fine, replicate the two UI5 bootstrap attributes to the “mobile/index.html” file and rebuild the project.

      Hope this helps.

      Regards,
      Ludo

       

      Author's profile photo Volker Ritzau
      Volker Ritzau

      Hi Ludo,

      i received an answer to an note, that a problem with wkwebview in ios13 will be fixed with. KAPSELSDK02P_10-70003613.ZIP.

      The current cloud build service is on :

      2019-12-17 09:59:31.09370] [IT] [LogToken] [Software Inventory:
      {
          "Platform": "iOS",
          "number": "3",
          "type": "CORDOVA",
          "kapsel": "4.2.12-SDK31_SP02_PL09",
      ...
      Is there a shedule, when the cloud build service will be updated?
      best regards
      Volker
      Author's profile photo Ludo Noens
      Ludo Noens
      Blog Post Author

      Hi Volker,

      Unfortunately I don't have a timeline for this update at this moment. I recommend opening a support ticket for component MOB-CLD-BLD requesting the update.

      Regards,
      Ludo

      Author's profile photo Volker Ritzau
      Volker Ritzau

      Hi Ludo, another question.

      Is it possible to add the

      <application

      android:allowBackup:"false"

      ...

      </application>

       

      parameter in the config.xml so that it is passed in the cloud build service on to the AndroidManifest.xml?

      Thanks in advance.

      best regards

      Volker

      Author's profile photo Ludo Noens
      Ludo Noens
      Blog Post Author

      Hi Volker,

      Yes, by using ‘config-file’ settings. I’ve mentioned this in my blog here: https://blogs.sap.com/2019/04/16/whats-new-with-hybrid-application-toolkit-in-2019/

      More details on this can be found in the Cordova documentation: https://cordova.apache.org/docs/en/latest/plugin_ref/spec.html#config-file

      Cheers,
      Ludo

      Author's profile photo K R Manjunath
      K R Manjunath

      Hi Lodo Noens,

       

      I am Not getting Mobile Option if right click on the project, so let me know how to add that option..................

      Thanks In Advance

      Regrad

      K R Manjunath

      Author's profile photo Ludo Noens
      Ludo Noens
      Blog Post Author

      Hi Manju,

      This either means you did not activate the Hybrid App Toolkit extension in the SAP Web IDE preferences, or you don't have the SAP Mobile Services enabled (please check the SAP Cloud Platform cockpit, Services tab). There should be a 'mobileservices' destination in the SAP Cloud Platform, Destinations list.

      Note: for productive environments, you do need a subscription for SAP Mobile Services.

      Cheers,
      Ludo

       

      Author's profile photo Edwar Soto
      Edwar Soto

      Hi, Ludo!!!. Hi people!!!.

      I have a question.

      Now with simplified method for build hybrid apps,  When excecute a "Build Packed App" on your sapui5 project "mobile enabled", this automatically create a Application definition in Cloud Platform Mobile Services.

      Then already isn´t neccesary add "Offline" feature in "Assigned Features" ?

      Thank in advance.

       

       

      Author's profile photo Ludo Noens
      Ludo Noens
      Blog Post Author

      Hi Edwar,

      You are referring to SAP Mobile Services available on Cloud Foundry, while our service makes use of SAP Mobile Services available on Neo. The "Assigned Features" is only available on the Cloud Foundry flavour of SAP Mobile Services.

      Hybrid App Toolkit doesn’t work out of the box with SAP Mobile Services on Cloud Foundry. However, with minimal manual effort the apps on Neo can be migrated to Cloud Foundry. I have published the steps in a blog post here: https://blogs.sap.com/2019/05/10/how-to-adapt-hybrid-apps-created-with-hat-to-use-mobile-services-on-cloud-foundry/

      For the offline topic, please refer to this blog post : https://blogs.sap.com/2018/05/22/creating-an-offline-crud-hybrid-mobile-app-in-sap-web-ide-full-stack-with-hybrid-application-toolkit/

      Regards,
      Ludo

      Author's profile photo Nishant Kathuria
      Nishant Kathuria

      Hello Ludo,

      Is it possible to add sap_belize plus theme to a hybrid application? We specified the sap_belize plus theme in the following property in iab.html file. However it did not work.

      data-sap-ui-theme
      
      Thanks
      Nishant Kathuria
      
      

       

      Author's profile photo Ludo Noens
      Ludo Noens
      Blog Post Author

      Hi Nishant,

      May I assume that you have already applied the theme to the application, and now you want to make  sure the login page of the Kapsel Login plugin is using the same theme ?

      Thanks,
      Ludo

      Author's profile photo Leonardo Gomez
      Leonardo Gomez

      Hi Ludo,

      Can you clarify what's the reason behind this?

      When you start developing a new mobile app, we strongly recommend that you consider developing this with either MDK (Mobile Development Kit) for cross platform applications, or our native SDKs (SAP Cloud Platform SDK for iOS or SAP Cloud Platform SDK for Android).

      Thanks!

      Leonardo.

      Author's profile photo Ludo Noens
      Ludo Noens
      Blog Post Author

      There are more modern frameworks available now. Hybrid is considered legacy.

      Author's profile photo shanath shetty
      shanath shetty

      Hi Ludo,

      Could you please assist with the error attached below while building HAT.

      Author's profile photo Ludo Noens
      Ludo Noens
      Blog Post Author

      Hi Shanath,

      Which landscape (data centre) are you seeing this on, and can you open the browser's developer tools to check the network tab for the 500 error. It should provide more information on the reason there.

      Thanks,
      Ludo

      Author's profile photo JaiR S
      JaiR S

      Hey ludo,

      offline mobile hybrid application support Spreadsheet or not ?

      if support please suggest me any thing .

       

      thank you .

       

      regard

      jai sharma

      Author's profile photo Ludo Noens
      Ludo Noens
      Blog Post Author

      I don't have anything to recommend here, besides doing a search. In general, SAP does not recommend specific solutions from other vendors. What you are looking for might be available though.

      Regards,
      Ludo

      Author's profile photo Said Moshref
      Said Moshref

      Hello Ludo,

       

      you mentioned in your blog last year, that you don’t suggest to use hybrid toolkit for new project.

       

      When you start developing a new mobile app, we strongly recommend that you consider developing this with either MDK (Mobile Development Kit) for cross platform applications, or our native SDKs (SAP Cloud Platform SDK for iOS or SAP Cloud Platform SDK for Android).”

       

      Do you have any official announcement of the sap, which determine your announcement?

       

      Best Regards

       

      Said

      Author's profile photo Ludo Noens
      Ludo Noens
      Blog Post Author

      Hi Said,

      There is an official statement published as SAP Note:  https://launchpad.support.sap.com/#/notes/2982808

      Regards,
      Ludo

      Author's profile photo Said Moshref
      Said Moshref

      Thank you Ludo!

      Author's profile photo Fadi Jaber
      Fadi Jaber

      Hi Ludo,

      does the recommendation to use either the MDK or a native SDK (Android/iOS) generally suggest that SAP will no longer support the Hybrid Application Toolkit in the future? And if so, is there already information on how long it will be supported?

      Many thanks and best regards

      Fadi

      Author's profile photo Ludo Noens
      Ludo Noens
      Blog Post Author

      Hi Fadi,

      We will continue supporting our products. However, there will be no further investments into new features.

      Hope this clarifies.

      Regards,
      Ludo

       

      Author's profile photo Fadi Jaber
      Fadi Jaber

      Hi Ludo,

      Understand. Thank you very much for your quick reply.

      Have a nice day

      Fadi