I have a Samsung Galaxy SII (Sprint version Epic 4G Touch) running Cyanogen 9 (4.0.4 ICS). Screen density is at default. On the market it says my app is compatible with API 8-16+ and supports screens from small-xtra large. For some reason it is still not compatible with my phone. Does it have to do with my custom rom? or possibly the fact I'm running 4.0.4? All users that cannot install also seem to be running custom roms.
My Manifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.pwnsro.dayz"
android:versionCode="5"
android:versionName="1.0.4" >
<uses-sdk android:minSdkVersion="8"
android:targetSdkVersion="15" />
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:resizeable="true"
android:smallScreens="true" >
</supports-screens>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:icon="#drawable/ic_launcher"
android:label="#string/app_name" >
<activity
android:name=".DayZActivity"
android:label="#string/app_name"
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>
</application>
Also my project.properties:
target=android-15
*Edit:
It seems only users of AOSP Roms on ICS are having compatibility issues. I switched to a Samsung 4.0.4 rom and I was able to install this from the market.
Do you happen to have copy protection set to ON in android developer console? Have a look at this page.
To copy protect an application, set copy protection to "On" when you configure publishing options for your application. Google Play will not show copy-protected applications on developer devices or unreleased devices.
Since you said this:
I switched to a Samsung 4.0.4 rom and I was able to install this from the market.
I guess that the problem is/was your custom ROM. Have you tried another custom ROM? Maybe it is a problem with that specific ROM or Google Play don't recognize it as a compatible SO.
Related
What parts of the Android project makes devices incompatible?
My first project was released, and it's pretty simple. It only works on 6880 devices according do Google Play.
My girlfriend's phone is incompatible, although she always used this app when I installed direct through the .apk file.
The manifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="my.project" android:installLocation="auto" android:versionCode="1" android:versionName="1.0">
<application android:label="AppName" android:icon="#drawable/icon" android:allowBackup="true" android:theme="#android:style/Theme.NoTitleBar.Fullscreen" android:hardwareAccelerated="true">
<activity android:name="my.project.AppName" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mnc|mcc|locale|fontScale|uiMode" android:label="Credito">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<!-- Android 2.3.3 -->
<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="14" />
<!-- OpenGL ES 2.0 -->
<uses-feature android:glEsVersion="0x00020000" />
<!-- USB support -->
<uses-feature android:name="android.hardware.usb.host" />
<!-- Disable screen compatibility modes -->
<supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>
Device compatibility described on here. In general it includes 3 sections:
* Device features;
* Platform version
* Screen configuration;
According to your manifest there are next possible problems:
"android.hardware.usb.host" - app need a device that guaranteed to support the USB host APIs. According to the official documentation:
Because not all Android-powered devices are guaranteed to support the USB host APIs, include a "uses-feature" element that declares that your application uses the android.hardware.usb.host feature.
this basically means that the app might even work on the phone (by direct install for example) till the moment when such API are called.
android:minSdkVersion="9" android:targetSdkVersion="14"
Does your girlfriend's phone have something earlier than Android 2.3.3 (like 2.2)? And again, this does not means that it won't work, it just means that it might fail on her phone if there is a call to any method that is not exists prior to the Android 2.3.
uses-feature android:glEsVersion="0x00020000"
This should not be a problem since:
OpenGL ES 2.0 - This API specification is supported by Android 2.2 (API level 8) and higher.
screen resolutions also should not be a problem since you have switched on all 4 possible major resolutions.
This old chestnut again,
After a lot of searching the best thread I found on this is 'App not Installed' Error on Android
In my case I have checked all the fixes mentioned but still have the problem when I try to install the unsigned APK file.
The app runs fine on my phone when I install it from Eclipse, but when I put it on google drive and then point my phone to the APK I get the error above. I have a Note 1
I have uninstalled the old app, reset my phone etc but no luck. It worked fine for me until today, I would just put the APK on google drive and install it from there and it worked each time, just stopped working today and I have changed nothing.
I have both signed and Unsigned versions of the APK
Here is my manifest file
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.app.nquizitive"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:resizeable="true"
android:anyDensity="true" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:icon="#drawable/ic_launcher"
android:label="#string/app_name" >
<activity
android:name="com.app.nquizitive.StartupActivity"
android:label="#string/app_name" android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
My devices will only load signed APKs under these conditions. It appears to be a case of Google's boot on our neck. So I'm not sure what an unsigned one is good for unless you load it on a $45 USD Google-free device from China. So I release signed ones with increasing version numbers but with version "1" google-wise and then release "1"/"1.0" on Google Play.
I recently published my Android app to the market and everything seemed fine.
I tried to download it on a particular phone (Samsung epic 4g (SPH-D700)) and it was not available. It looks like it is being filtered, along with most the other Samsung galaxy s phones.
Should I change something in my manifest so it doesn't become filtered?
Im also trying to search for it on my computer and it doesnt even show up when i do that. Does this mean it didnt actually upload it to the market?
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="send.text.fast"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="5" />
<uses-permission android:name="android.permission.SEND_SMS"> </uses-permission>
<uses-permission android:name="android.permission.READ_CONTACTS"> </uses-permission>
<application
android:icon="#drawable/ic_launcher"
android:label="#string/app_name" >
<supports-screens android:smallScreens="true"
android:normalScreens="true" android:largeScreens="true"
android:anyDensity="true">
</supports-screens>
<activity
android:name=".Main"
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>
</application>
i'm having the same problem too. the Market (now goes by a different name) has this recently new (long awaited, they claim) feature to filter out apps that are not compatible with your device.
did you try setting minSdkVersion to your phone's particular version? try lowering it. one thing i did not know is that you can set minSdkVersion down but still target a higher version.
my app works on my android phone upon side-loading. but since i've published my app, i still can't find it on my phone when using the Market app. when i go to my app's webpage, i get a little message saying this app is not compatible with your device, which is wrong. of course, my phone has been rooted among other things (i.e. non-stock kernel/roms/launchers/etc...).
the joy of fragmentation.
we have developed and Android app, first time, great fun. Now we are giving it to friends and at first everything seems alright. But two guys with fairly modern phones (one is a Desire HD) claim, that the market greys out the app and says it wouldn't be compatible with the device.
That is odd to me, because I can install it from the market on very low-end devices (e.g., tested with Huawei U8650).
The relevant part of the Manifest.xml should be
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="my.android.app"
android:versionCode="4"
android:versionName="0.1" >
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-sdk
android:maxSdkVersion="15"
android:minSdkVersion="8"
android:targetSdkVersion="8" />
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="true"/>
<application
android:debuggable="true"
android:icon="#drawable/appicon"
android:label="#string/app_name" >
<activity>
...
</activity>
</application>
</manifest>
What am I missing?
Is there a website/feature/tool that let's me check out compatibility with existing devices (i.e., match known requested features of devices against my app)? I took a look with aapt which tells me nothing I didn't know from the Manifest.
Help highly appreciated!
Thanks!
You have a cool menu in your Android Market console:
Click on the show device link ...
I have developed an app using PhoneGap and tested the same in different version of emulator and also in my Motorola Photon. I have not faced any problem in testing.
But when I published the same in the market it says "This app is incompatible with all of your devices.". My devices are with different screen size, different OS version ranging from 2.1 to 2.4.
In publish home page, it says "This application is available to over 679 devices." It includes Motorola Photon 4g and all other devices which I have registered in the market download.
I have republished the code many times by updating manifest file and java file based on all the answers given through out the stackoverflow for this kind of issues. To list it,
Removing user-permission
Updating all combinations of supports-screens
Refreshing the save button in the publish page several times
Uninstalling the apps in my mobile (But I have few more devices where I have not tested my apps but still says incompatible)
Running aapt tool
Removing the jar files from lib folder and referring that externally in Eclipse
Few more changes that I cant recall
below is the manifest file
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test.myapps"
android:versionCode="5" android:versionName="1.4">
<uses-sdk android:minSdkVersion="7" />
<supports-screens android:largeScreens="true"
android:normalScreens="true" android:smallScreens="true"
android:resizeable="true" android:anyDensity="true" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.SET_WALLPAPER" />
<uses-permission android:name="android.permission.SEND_SMS"/>
<application android:icon="#drawable/app_icon" android:label="#string/app_name">
<activity android:name="com.test.myapps.HomePage" android:label="#string/app_name">
<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">
</activity>
</application>
</manifest>
Please, help me in fixing the same. Thanks in advance....
Did you specifically run "aapt dump badging <.apkfile> ?
Android docs here.
I had a similar problem. Turns out I needed to use in my manifest the
android:required="false" for several uses-features, like:
< uses-feature android:name="android.hardware.telephony" android:required="false" >
Full manifest example here. The results of dump badging showed that the market had added several uses-features (a bit
further down in aapt output) that excluded mostly Samsung devices.
Check if there is any compatibility, you need to start with :
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize">
Are you sure that you were checking the latest version of APK , not the old one. you will need to activate it. not only upload it ..