I have published my app on android market. I was able to download it to my phone(samsung galaxy sl [i9003]) but, recently I updated my phone through kies to 2.3.6 from 2.3.5 and now market is saying your app is incompatible with my device. What should I do to make it compatible ?
My phone is rooted and have market version 3.3.12 . Do I need to change any properties of app in manifest ?
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="XXX"
android:versionName="1.1.1" android:versionCode="7">
<uses-sdk android:minSdkVersion="7"/>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<supports-screens android:smallScreens="true" android:normalScreens="true" android:anyDensity="true" android:largeScreens="false"></supports-screens>
<application android:icon="#drawable/icon" android:debuggable="false" android:label="#string/app_name">
<activity android:name=".SplashActivity"
android:label="#string/app_name" android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="MenuActivity" android:screenOrientation="portrait"></activity>
<activity android:name="com.inmobi.androidsdk.IMBrowserActivity"
android:configChanges="keyboardHidden|orientation|keyboard" />
<activity android:screenOrientation="portrait" android:name=".BrowseMovies"></activity>
<activity android:name="SongDisplayDetails" android:screenOrientation="portrait"></activity>
<activity android:name="com.google.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
<activity android:name="SearchDataActivity" android:screenOrientation="portrait"></activity>
</application>
There is options in market console: when you publish your app, in section "publish params" there is list of all known devices, and there you can see all incompatible devices, and reason why they are incompatible.
// I'm not sure in names of sections in market case I have Russian version of market console. Section "publish params" goes just before "Contacts"
Find out which devices are incompatible by clicking the "compatible devices see List" in Developer Console when you are able to "Upload APK".
This lists all those it will install on and also those it won't. For me this was teh Key step, find out which ones and whats "wrong" with them.
In my case the use of the phone was optional. It had the uses-permission for phones and recording for example which might not be needed. Some use cases need these, some don't.<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CALL_PHONE" />
This was what was causing it to exclude all my tablets.
<uses-feature android:name="android.hardware.microphone" android:required="false" />
<uses-feature android:name="android.hardware.telephony" android:required="false" />
This seems to have solved it, there are now no incompatible devices in the Play.Store.
Now I just need people to download and use it!
Related
I made an android app for ordering a cab. I uploaded it on goole play and everything was fine until i tried to find the app over a tablet. I cannot find the app on google play. I googled the problem and i put the screen size in the manifest but its still not working.
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="#mipmap/ic_launcher"
android:label="#string/app_name"
android:supportsRtl="true">
<activity
android:name=".splash"
android:theme="#android:style/Theme.NoTitleBar.Fullscreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity"
android:theme="#android:style/Theme.NoTitleBar.Fullscreen" />
<activity
android:name=".order"
android:theme="#android:style/Theme.NoTitleBar.Fullscreen" />
<activity
android:name=".personal"
android:theme="#android:style/Theme.NoTitleBar.Fullscreen" />
<activity
android:name=".flight"
android:theme="#android:style/Theme.NoTitleBar.Fullscreen" />
<activity android:name=".details"
android:theme="#android:style/Theme.NoTitleBar.Fullscreen"></activity>
</application>
<supports-screens
android:anyDensity="true"
android:xlargeScreens="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true" />
Issue is in "android.permission.CALL_PHONE" permission that might not be available for tablets. You should add additional entry that shows that is not absolutely required feature and then handle that scenario in your code when you are accessing those features.
<uses-feature android:name="android.hardware.telephony" android:required="false"/>
Android documentation for <uses-feature>
You should place screenshots for the Tablet Portion as well as the requirements needed by the Google Play for Tablets.
You should put all requirements for tablet and create .xml file for tablet in app layout folder and Screenshot for tablet. see more from documentation
some of my customers are having trouble opening their apps after downloading them. here is my last 1 star customer review:
'Only playable in play store using open/uninstall buttons. When select on phone app phone says app not installed. uninstalling.'
I'm getting a lot of 1 star ratings because of this and it's killing me. I also get some 5 star ratings so apparently this issue only affects some users. it works fine with my phone, but won't open on a friend's, unless she opens it from the store. I may have upgraded my targetSdkVersion from 16 to 19 recently.
here is my manifest, slightly edited for privacy, I've read of opening issues on another post being caused by bad manifest settings, but none of the suggestions related to my manifest settings:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mypackage"
android:sharedUserId="com.myshareduserid"
android:versionCode="300"
android:versionName="3" >
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="19" />
<supports-screens android:largeScreens="true"/>
<supports-screens android:xlargeScreens="true"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_USB" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application
android:largeHeap="true"
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:debuggable="false" android:permission="android.permission.WRITE_EXTERNAL_STORAGE">
<activity
android:name=".MyActivity"
android:label="#string/app_name"
android:screenOrientation="landscape"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|
uiMode|screenSize|smallestScreenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.google.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|
uiMode|screenSize|smallestScreenSize"/>
</application>
This is just a bug in your client's launcher app.
You cannot do a thing about that.
It might be a badly made custom launcher, or a bug, but it's out of your hands.
If that user has access to a custom recovery, he could wipe dalvik and cache, it always worked for me in that case.
I have made an app which is pre-installed on android device of particular manufacturer. After this I have release an upgrade of application for example initial version 1.0.0.0 to upgrade version of 1.2.0.0. After upgrading the app if user restarts its phone then my application goes to the initial version of 1.0.0.0.
Don't know why this is happening ? Is there a problem in bundling the application to devices ?
Note: I am updating my app via my server and not from play store and this issue is reproducible only when app is pre-installed on devices.
In mainfest file of both the versions I forgot to change android:versionCode value, in both the versions android:versionCode=3. Is it creating problem because of this?
I have also changed the package name of Application class so is this is creating the problem ?
Manifest for first version:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xxx.apps.spinr"
android:versionCode="1"
android:versionName="1.0.0.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="11" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application
android:icon="#drawable/app_icon"
android:label="#string/app_name"
android:theme="#style/SpinrTheme"
android:name="com.abc.xyz.GDApplication">
<activity
android:name=".SplashActivity"
android:label="#string/title_activity_splash" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Mainfest for second version:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xxx.apps.spinr"
android:versionCode="1"
android:versionName="1.2.0.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="11" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application
android:icon="#drawable/app_icon"
android:label="#string/app_name"
android:theme="#style/SpinrTheme"
android:name="com.xxx.apps.GDApplication">
<activity
android:name=".SplashActivity"
android:label="#string/title_activity_splash" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Thanks for the suggestion. As #Mahmoud in comment suggested that "google play never release update for the app with the same version code", so I incremented version code of app and it worked fine. #Rat-a-tat-a-tat Ratatouille as I said in question I am not updating my app via google play neither my app is on play store so I was not able to figure this out initially. Anyways thanks for help.
So conclusion is
whenever you want to send upgrade of app always increase version code
of the app
I have built & sign my apk by Eclipse ADT as it is describes (export and sign by creating a new key). But it can't be install on real device while an errors occurs, such as "installer package error". I have no Android device & sent my apk to friends by email. I'm using AVD and everyth is fine with it. Any suggestions? Thanx guys.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.XXXX.YYYY"
android:versionCode="0"
android:versionName="0.9.2" android:installLocation="internalOnly">
<uses-sdk
android:minSdkVersion="13"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#style/AppTheme"
android:hardwareAccelerated="true"
android:permission="android.permission.INTERNET"
android:allowBackup="true">
<activity
android:name="com.XXXX.YYYY.ActivityMain"
android:label="#string/main_activity_title"
android:launchMode="singleTop" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.XXXX.YYYY.ActivityDetails"
android:parentActivityName="com.XXXX.YYYY.ActivityMain"
android:excludeFromRecents="true"
android:configChanges="orientation|screenSize">
</activity>
</application></manifest>
UPD: apk installs good, but the error occurs if choose Open (see screenshot). After that app works fine. But on tablet if try open app it says "App deleted".
UPD2: add supporting API 4+ meta tag for the 2nd activity, but it takes no effect
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.XXXX.YYYY.ActivityMain" />
You probably need to make sure your device and your friend's devices can install apps that are not from the play store.
This is a feature you have to specifically set, or else apps that are outside the play store will not install.
Here is how to set it:
Open settings
Find the Security settings (Pre 4.0 it is under Applications)
Look for a setting that says Unknown sources, or non-market apps
Enable that setting
Everything should work after that!
Here is an article with pictures if you are still confused :)
Your example was missing the closing </manifest> and android:enabled. I'm not sure if the latter would prevent a device from fully installing it but the first one would.
I've also had issues using the full activity names in the past, so you may want to try using simplifying them to see if it helps.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.XXXX.YYYY"
android:versionCode="0"
android:versionName="0.9.2" android:installLocation="internalOnly">
<uses-sdk
android:minSdkVersion="13"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#style/AppTheme"
android:hardwareAccelerated="true"
android:allowBackup="true">
<activity
android:name=".ActivityMain"
android:label="#string/main_activity_title"
android:enabled="true"
android:permission="android.permission.INTERNET"
android:launchMode="singleTop" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ActivityDetails"
android:parentActivityName=".ActivityMain"
android:excludeFromRecents="true"
android:configChanges="orientation|screenSize">
</activity>
</application>
</manifest>
Is "Unknown sources" option under "security" allowed on device?
My problem was a duplicate internet permission request on Manifest! When I remove that from activity app was run normally.
I've developed an App using level API 10 (2.3.3 SDK version), I've published it on Android Market and all has gone fine. My Application has FINE and COARSE location, INTERNET and NETWORK STATE as uses permission.
Next, I've tried to extend compatibility to level API 8 (2.2). After I've published the new apk on market the App results no more compatible with my device (I've a Samsung GT-I9100, with 2.3.6 Android version).
I've tried to delete cache but nothing, my device is no more compatible.
But if I install the apk via file system the App perfectly works.
EDIT:
Here my Android Manifest
<manifest package="com.agora.md" android:versionCode="16" android:versionName="1.1.15" xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-sdk android:minSdkVersion="8"/>
<supports-screens android:smallScreens="false" android:largeScreens="true" android:normalScreens="true"/>
<application
android:icon="#drawable/icon_md1"
android:label="#string/app_name" android:name="MDApplication" >
<activity
android:label="#string/app_name"
android:name=".service.activity.MDSplashActivity"
android:screenOrientation="portrait">
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:screenOrientation="portrait" android:label="#string/app_name"
android:name=".service.activity.MDMainActivity" android:launchMode="singleTask">
</activity>
<activity android:name=".service.activity.MDNewsActivity" android:launchMode="singleTask"
android:screenOrientation="portrait"></activity>
<activity android:name=".service.activity.MDMagnificiActivity" android:launchMode="singleTask"
android:screenOrientation="portrait"></activity>
<activity android:name=".service.activity.MDNewsDetailsActivity"
android:screenOrientation="portrait"></activity>
<uses-library android:name="com.google.android.maps"/>
<activity android:name=".service.activity.MDMapActivity" android:launchMode="singleTask"
android:screenOrientation="portrait"></activity>
<activity android:name=".service.activity.MDInfoActivity"
android:screenOrientation="portrait"></activity>
<activity android:name=".service.activity.MDVolantinoActivity"
android:screenOrientation="portrait"></activity>
<activity android:name=".service.activity.MDMapDetailsActivity"
android:screenOrientation="portrait"></activity>
</application>
</manifest>
Someone can help me?
Thanks
UPDATE
After a month I've checked on Market and now, incredibly, my app is visible on the store. I don't now it's ok because I've made no changes from that.
I think it was a mistake of the store or, probably, a bad value in cache that now has been erased.
However, thanks to all for your support
The supports-screens tag is used ONLY by the Android market to filter out devices based on the size of screen the device has. If you don't define a supports-screens tag, then the market doesn't filter them.
However, if you DO define supports-screens any device sizes not listed will default to false.
The Samsung Galaxy SII (your device) I believe is an xlarge screen size. Change your supports-screens tag to the following:
<supports-screens android:xlargeScreens="true" android:smallScreens="false" android:largeScreens="true" android:normalScreens="true" />
(note: I added android:xlargeScreens="true")
After that you should see your app in the market again.
Similar issue here. I don't have the supports-screens tag in my AndroidManifest.xml, but I'm getting incompatibility complaints from users with the Samsung Galaxy S 2 (GT-I9100), Android version 2.3.6. It works with other versions of Android.
Anyone else seen this?