Hello Team,
since we updated the devices to K-10-02 we ran into a serious issue with street navigation.
Preparing a rollout where street will be used along with the customer application, we decided to copy all maps onto a external SDCARD.
Installing the App using a MDM system caused very limited network traffic because all maps are already on the device and they do not have to be deployed via a MDM system.
The Street navigation app was easily able to recognize the pre-installed maps on the external SD Card and was able to use them.
Using the latest Beta OS (along with Googles Android 4.4.2 write restriction), the street navigation app is not able to use the pre-installed maps from the SD Card.
Instead of this the App will download and install maps into the internal memery. As you may can imagine, we very soon ran out of memory, because this is limted to 1GB.
So far the Sygic is not able to find a short time solution on that. I copy the latest conversation along with their suggestions below.
In my opinion, we should give customers the possibility to exclude the external SDCard from the Sandbox. As far as I understand this is a simple parameter and we may should give this feature as a CSP. So a customer will be able to do it`s own decision.
Please let me know any suggestions which might adress or solve this problem.The two suggestions from Sygic are not an option for us or for the customer.
This is the latest answer from Sygic:
Hello Horst,
we just have finished our research and tests regarding your requirement to decrease installation time on your Motorola/Zebra TC75 device. I want to say that issue is not on side of our application or your device, but it´s issue of new Android OS write restrictions.
Unfortunately even if we were able to install software directly to Android sandbox outside of our navigation, this method is still quite complicated and there may be a potential risk that our application will crash on some untested functionality in a future. For example during map update due to some unassigned write permissions from Android 4.4.2 system.
With a new Android 4.4.2 write restrictions only correct method is that application will install all resources into sandbox by itself and only in this case will have assigned required write restrictions (user name and group) from Android system.
Here are some technical details:
The new versions of Android, starting from 4.4 KitKat operating system has new FUSE virtual file system for management of external storages (SD cards), that creates problems for SD card installation of navigation.
Files, that are copied to SD card outside of phone (e.g. on PC or on card copy machines) are given root ownership in the phone. Any app on the phone can only read files owned by root, but cannot delete or edit them.
Off course, files that the app will download over Wi-Fi and create them on SD card, will be owned by that app. If the app will duplicate files, it will get ownership for the duplicate copy. But this means, that you need the time for duplication and twice as much SD card free space as needed for navigation.
Whole problem of these new Android 4.4.2 restrictions is described in details here: http://possiblemobile.com/2014/03/android-external-storage/
In my opinion is currently used method of mass installation best for device with preinstalled Android 4.4.2 OS (our application is installing and copy resources from sdcard into android sandbox itself)
You have only these additional 2 options, how to perform mass installation:
1. Solutions for this issue may be to install some previous version of Android on your device (4.1.2 which was used in TC55 for example). This will solve these issues and our navigation will be working without any problems from resources copied to sdcard
2. Perform the download of navigation over Wi-Fi. You can connect multiple devices on charger in Wi-Fi covered area and if you start the download in evening, in morning could be all the devices updated.
But this will take also a lot of time and there is not available method to check if installation process exited without errors, for example if wifi connection will be interrupted
If you will find any questions, please don´t hesitate to contact me.
Thank you very much.
Best regards,
Michal
1 Replies
Hi Horst,
Had an exchange with one of our Android architects, please see the response he gave copied below:
An application, such as the one they describe is NOT prohibited from READING data stored in the root of an external SD Card, it is prohibited from WRITING to it. If the data is, as they say, pre-loaded on the SD Card and is only READ by the application, then the use case should still work. However, they will have to make a minor change to their application to get it to work. Prior to Kit Kat, an application had to declare the permission WRITE_EXTERNAL_STORAGE to read OR write ANYWHERE on ANY storage card, internal or external. Beginning with Kit Kat, that permission does the same thing on INTERNAL but WILL NOT be granted on EXTERNAL to a non-system application. But, the new permission READ_EXTERNAL_STORAGE can be granted to ANY application and will give that application the ability to READ ANYWHERE on any storage card, including EXTERNAL. So, if they change their application and ADD this additional permission, then their application should be able to find the data on external and use it, so long as it does not try and open it for writing.
Regards,
Glen