I wrote an application for Android and now one of the users reports that the application is incompatible with many phones. I think the requirements/permissions are not that exotic.
My manifest file has following code:
<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="4"/>
<supports-screens android:largeScreens="true" android:normalScreens="true" android:smallScreens="true" android:anyDensity="true"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.VIBRATE"/>
Incompatible phones are shown in gray:
Market http://www.preston.be/market.png
Anyone an idea what's missing/wrong?
according to
android:minSdkVersion="3" android:maxSdkVersion="4"
you are supporting only devices with Android 1.5 and 1.6
most of the devices have a newer OS version like froyo 2.2
install the latest SDK then in your android proyect go to "Properties" -> "Android" and change the "Project Build Target", for example Android 2.2 , API level 8.
then change in your AndroidManifest.xml
android:minSdkVersion="3" android:maxSdkVersion="8"
then your app will be able to support more devices...
The problem is that with the SDK versions you're using, there's an implied CALL_PHONE permission (see here and here for more detailed explanations). You should be able to work around this by changing the targetSdkVersion as shown in the second link.
Here lies the problem <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="4"/>.
You are targeting Android 1.6 handsets, there are less than 15 % handsets out there that have that version of Android. You should target the latest Android versions. Here is Android docs about api levels that will make this more useful for you.
Also read up what it says about versions here.
As #commonsware mentioned below, I misunderstood, this. My apologies.
Related
I'm developing a android app. While developing I tested it on Moto E os-4.4.4. It works properly. But after deployment playstore shows your device is incompatible with this version. It shows compatible with many other devices running same os version.
I found some similar questions I tried there answers but nothing seems to work for me.
Any help is appreciated.
Here's my manifest file
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18"
/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
Not only moto e, its showing incompatible with over 1000 devices. The external libraries I've used are apptentive,flurry,facebook and actionbarshelock.
Android 4.4 is version 19. By setting a max SDK version, you're telling it not to allow install on any version over 18. So it won't consider your device compatible. Remove that max sdk version. Even google no longer checks this on the device beyond version 2.0.1.
There was some problem with google-playstore. It got solved after playstore update and now it's compatible with my device as it should be.
I have developed one android application, its available in Google Play Store for all the devices post 2.2. But, while trying to download the application from Samsung Galaxy Star GT-S5282, which is having 4.1.2. we are getting this error this version is not compatible for this phone
manifest code:
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true" />
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="16" />
Below Permission used:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
Please advice me on this Issue.
thanks in advance.
Maybe this is helping you Google Support Devices and I found another one who asked a similar question: Android Device not supported by app why?
I have an app on the google play app store for more than two years with more than 8000 download and its a paid app. recently i received a mail from one of the customers saying that he had been using the app over two years and recently he updated his devices with latest os versions
after which he is not able to install the app from the app store. No updates have been pushed from developer end. the customer gets the error " your device is not compatible with this version" but the app is of the
same version that he had been using. what could be the error. any suggestion pls
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="au.example.test"
android:installLocation="auto"
android:versionCode="12"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<supports-screens android:largeScreens="true" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
In AndroidManifest.xml you can specify the minimum and maximum sdk version in this form:
<uses-sdk android:minSdkVersion="integer"
android:targetSdkVersion="integer"
android:maxSdkVersion="integer" />
Change your maxSdkVersion to the latest android sdk version(18), then it should work
This may or not make a difference but it is recommended that you target a particular API level. It may be worth setting the target sdk version to the latest android release and ensure it is working as expected.
I'm a little confused about something.
I wrote an app and tested it on an LG Ally with the following specs:
Android version: 2.2.2
Kernel version: 2.6.32.9
Build number: FRG83G
Now I'm trying to install it (via adb install AppName.apk) on an HTC with the following specs:
Android version: 2.3.3
Kernel version: 2.6.35.10-gc0a661b HTC-kernel#and 18-2#1
Build number: 4.24.651.1 CL61076
and I get an error like 'error parsing package'
Here's where I get confused. I wanted to try duplicate the problem. So I created an emulator AVD with the specs:
Android version: 4.0.3
Kernel version: 2.6.29-g46b05b2 vchtchetkine#vc-irv #28
Build number: google_sdk-eng 4.0.4 MR1 302030 test-keys
And....I am able to install my app successfully with the adb install command that will NOT install the app on the HTC.
I don't understand why I'm able to use 'adb install' to put it on the LG Ally and the emulator but I get the parse error on the HTC.
I thought I might need in the AndroidManifest but then why am I able to install on the emulator without it?
My manifest is below (I removed the activity definitions for brevity):
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mj.molepatrol"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="#drawable/icon" android:label="#string/app_name">
<uses-library android:name="com.google.android.maps" />
</application>
<uses-permission
android:name="android.permission.READ_CALENDAR">
</uses-permission>
<uses-permission
android:name="android.permission.WRITE_CALENDAR">
</uses-permission>
<uses-permission
android:name="android.permission.EDIT_CALENDAR">
</uses-permission>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
</manifest>
Try to use
<uses-sdk android:minSdkVersion="10">
It will solve your problem. Because, I read this documentation about uses-sdk,
Caution: If you do not declare this (uses-sdk android:minSdkVersion) attribute, the system assumes a default value of "1", which indicates that your application is compatible with all versions of Android. If your application is not compatible with all versions (for instance, it uses APIs introduced in API Level 3) and you have not declared the proper minSdkVersion, then when installed on a system with an API Level less than 3, the application will crash during runtime when attempting to access the unavailable APIs. For this reason, be certain to declare the appropriate API Level in the minSdkVersion attribute.
Source: Android Developers Website
The possible problem for this is that you are using a feature that is not available to the device. Such as a camera or NFC.
You have only set minSdkVersion and targetSdkVersion right?
There will be something in the manifest that the htc doesn't like, please post your AndroidManifest.xml file so we can see specifics and figure it out for you
We've upgraded yesterday our App (easy.go) on the Android Market and after that we have got several messages from HTC Tattoo and Sony Ericsson XPeria mini users, that they can't see application on Android Market.
We are not you using Copy Protection when uploading to the market, so I guess, it couldn't be a problem.
The first assumption is that the problem was beacause of small screens. I took a look in manifest.xml. There is written:
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="true"/>
And here are all permissions:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-sdk android:minSdkVersion="3"/>
Any suggestions?!
There are some big images with resolution 320x480 and no alternatives for them in resolution 240x320. Could it be the problem?!
Is there some preview before upgrading an app to know for which devices it will be invisible on the market?
I guess, I know now the answer:
http://developer.android.com/guide/appendix/market-filters.html#manifest-filters
If I understood it right
Example 1 The manifest declares <uses-sdk android:minSdkVersion="3">
and does not does not include a
<supports-screens> element. Result:
Android Market will not show the app
to a user of a small-screen device,
but will show it to users of normal
and large-screen devices, users,
unless other filters apply.
Example 2 The manifest declares
<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="4"> and does
not include a <supports-screens>
element. Result: Android Market will
show the app to users on all devices,
unless other filters apply.
then <uses-sdk android:minSdkVersion="3"/> should be replaced with <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="4"/>
Have a look at market filters rules if it's not already done, maybe it could help you:
http://developer.android.com/guide/appendix/market-filters.html