TC70 device is not supported on the Play store

Hello all, I have two devices that I am developing an app (using Xamarin), one is the TC75X and the other is the TC70X. I followed the EMDK samples and have these two lines in my app manifest.

<uses-permission android:name="com.symbol.emdk.permission.EMDK" />

<uses-library android:name="com.symbol.emdk" />

As you can see, I don't have those marked as required.

The issue is, I can install on the TC75X device but not the TC70X. I get ‘Your device isn’t compatible with this version’

I noticed that when I submit an app release via the Play store console, Google automatically says my app supports only 4 devices.

TC70NotSupported.PNG

I did not select these four, it found them for me automatically. I believe it is narrowed down to only these four based on the EMDK library that is needed. So, I investigated that a bit further and found this for the TC75X

TC75SupportsEMDK.PNG

Notice the TC75X lists the com.symbol.emdk library as supported. However, look at the TC70X

TC70NoEMDKListed.PNG

So, I believe this clearly explains why I can only support 4 devices and the TC70X is not one of them. However, I don't know how to fix it. I cannot see a way to force the TC70X in my list, it is greyed out, like many others and I cannot do anything with them.

TC70NotSupported2.PNG

Here are all 17 of the devices, you can see all but four are greyed out and say not supported. I don't care about many of these but I do care about the TC70X.

Anybody know how to get around this? How did Google get the wrong information about these devices and how is that fixed as it is the root cause of the issue.

Another related question, how can I support and test on devices I know do not have an EMDK? For example, I have the two lines above in my manifest for the Zebra devices but what if I want to load my app on my Samsung device, which I know does not have support for the EMDK and simply just not try to load/use any of the barcode scanner/EMDK components when I am loading on this device or any other non-EMDK device?

Thanks!

Mike

Anonymous (not verified)
Hi Mike,All those devices

Hi Mike,

All those devices which are not grayed out are WAN devices which contain a GPS chip, I suspect somewhere in your manifest you are saying that GPS or WAN is required, can you check that?  Or share your manifest here?  I haven't heard of a device in the Play Store not being able to support the EMDK before.

Regarding the second question, most customers put the EMDK library behind a sort of proxy, I have an example from one of my own projects here: WakeLock_WifiLock_Exerciser/EMDKProxy.java at master · darryncampbell/WakeLock_WifiLock_Exerciser · GitHub

If you are not too far in your development, you may choose to use DataWedge rather than the EMDK & there is a tutorial here if that appeals: .  With DataWedge you would not have had either these issues as it has no library dependencies so your app could have been installed on any Android device.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Mike Bedford
Hello Darryn, Thank you for

Hello Darryn,

Thank you for the response. I agree with you that there seems to be some commonality with the four devices with regard to GPS and WAN. However, I don't think I am requiring those features. I do have permissions listed for accessing location and network state but I don't see how those can cause this issue? Below is my complete manifest for you to review. Furthermore, to prove my theory is correct and there is something wrong with the device descriptions in the play store, look at my two screen shots I attached that show the TC70X device details and the TC75X device details. These are taken from the Play store details/decriptions of each device. You can see in the shared libraries section that the TC75X has "com.symbol.emdk" reference where the TC70X does not. I believe this is actually causing the problem.

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

<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="2" android:versionName="1.2" package="com.OdenIndustries.PacTracMobile" android:installLocation="auto">

<uses-sdk android:minSdkVersion="23" android:targetSdkVersion="27" />

<uses-permission android:name="com.symbol.emdk.permission.EMDK" />

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<application android:allowBackup="true" android:icon="@drawable/mainapplogo" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme">

<uses-library android:name="com.symbol.emdk" />

</application>

</manifest>

Thank you for your sample, I will look into that.

I did look at data wedge a few years back but we opted to not go that route because one, we did not want to rely on another app in order for our app to work properly, it adds another layer and point of failure (plus data wedge had to be configured for what we wanted to do and this caused additional confusion at time). Second reason, data wedge does not give us enough control over the barcode scanner. For example, if we want to have an event that raises when we get a scan so we can pre-process and at times, pause of shut down the barcode scanner, we cannot do those things unless we are using the EMDK.

Thanks!

Mike

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Anonymous (not verified)
Interesting... let me do a

Interesting... let me do a few tests to understand this a bit more.

Thanks for the feedback on DataWedge

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Anonymous (not verified)
Please remove the following

Please remove the following permission and it will work:

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

That permission results in the app having the android.hardware.telephony feature, hence why it is not showing as supported on TC70X

I am not sure why there is a difference between declared 'shared libraries' on the device, I'm not sure where that information comes from.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Mike Bedford
Hello Darryn, I did a test

Hello Darryn,

I did a test where I removed the SMS permission as you recommended and I can confirm that it fixed the issue, I now support 10 Zebra devices and the TC70X is one of them! This is good news. I have marked your response as an answer.

I now have a follow up question that is very important. This might be similar to the EMDK proxy that you recommended (which I am still looking at). How would you create your app so that if it is running on a TC75X (or similar) that you would and could have SMS capability but on a device like TC70X, you could still install the app, you just wouldn't have SMS capability. Obviously, based on what we learned so far that I can't put it in the permissions for the manifest in order to have more devices show up, I would leave it out of the manifest but then need to add the permission in at runtime if I detect that I am running on a SMS capable device. I guess that is the high level approach to it?

Also, one more question, is it because of the EMDK permission that only Zebra devices show up? So, related to SMS, I would leave EMDK out of permissions so I can target other devices and then use your proxy sample to still utilize the EMDK at runtime?

Sorry, I am new to all of this and it is very confusing but I almost have the full picture, just missing this last piece above.

Thanks!

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Anonymous (not verified)
Hi Mike,You can mark the SMS

Hi Mike,

You can mark the SMS permission as android:required="false", this StackOverflow post gives a good answer: android - Optional permissions so an app can show on all devices and enable optional features on some? - Stack Overflow

I had not realised that using the EMDK permission caused only Zebra devices to show up(!) But yes, that is the reason.  I just tested it and can confirm you can specify android:required="false" for the EMDK permission and EMDK library (remember to mark both as not required in the manifest) and the application can now be deployed on all devices.  I have never tried marking the EMDK as optional and using the proxy technique I shared previously but I see no reason why it would not work.

Darryn.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Peter Arcuri
As a FYI, there is a

As a FYI, there is a programming practice in the EMDK docs that covers this.

Creating a common Application to run on Zebra and Non-Zebra devices

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Brad Thomas
I’m sorry sir, but you’re

I’m sorry sir, but you’re mistaken. I have all GSM (YouTube,etc...) on my old TC70 and on my new TC70x. I keep seeing people blog and chat about this very issue.

bought my TC7, a man at the warehouse auction gave me software to load Android 7.1.2 with all GSM and playstore. I’ve got it on my new TC70x as wel. If I can share it on here with out getting kicked off, I’d be glad to help you.

But if it’s against the rules.... I’m sorry.

and ill repeat.... the TC7 will run playstore and GSM and go it well!

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Brad Thomas
I have GSM and Playstore on

I have GSM and Playstore on my old TC70 and my new TC70x. No problems. Works great. Contact me if I can help you. I could email you the zip for Android 7.1.2. It’s got playstore all GSM stock.

I dont ln if we’re allowed to exchange software on this platform without going through the company. I’m new and dont want the webmaster to dismiss me, but if I can, I’d be glad to send you the zip.

Just apply it to a micro SD card in TC70x and reboot from that internal SD and wait. Then you’ll be running Android 7.1.2. With playstore and all Google apps stoc. Then you deleye what you dmy want. It’s nice. I think this version is most stable.

Im actually trying to find a windows software to apply the same way, but all the links they have sent me links to are not working.

Let me know if it’s ok for me to send you that zip without breaking any rules and I’d be glad to help you.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Log in to post comments