7

I have a relative simple App that was already in the Play-Store of Google.

Now I've made an Update of this App. One Point of this Update was that I include the ZBar-Scanner. The Rest of the changes were minimal and shouldn't have any influence on my problem.

I just put the newest verison of my App in the Play-Store and I get following warning: "Warning: Active APKs support fewer devices than previously active APKs. Some users will not receive updates."

I've downloaded ZBarAndroidSDK-0.2.zip from sourceforge.net (http://sourceforge.net/projects/zbar/files/AndroidSDK/) and import it to my project as it is explained in the README-File.

I tested my App local on my HTC Wildfire S (->Version 2.3.5), on Samsung Galaxy 3 (GT-I5800 -> Version 2.2) and on my Galaxy Nexus (-> Version 4.2). There was never a Problem. Everything worked. I also tested the exported APK and had no Problems.

Now I add this APK to the Play-Store and updated my App and I get the warning for the tested devices. Neither my HTC Wildfire, nor my Samsung Galaxy 3 can update the new version.

Can anybody help me and explain me whats the Problem?

Thanks a lot!!!

EDIT:

My Manifest:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.myproject"
android:versionCode="5"
android:versionName="2.0" 
android:installLocation="preferExternal"
>

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="11"/>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" android:required="false"/>

<application
    android:uiOptions="splitActionBarWhenNarrow"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    >

    <!-- enable the search dialog to send searches to SearchableActivity throughout the application -->
    <meta-data
        android:name="android.app.default_searchable"
        android:value=".SearchableActivity" />

    <activity
        android:label="@string/app_name"
        android:name=".MainActivity" 
        android:screenOrientation="portrait"
        android:theme="@style/Theme.NoBackground">                                  

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

    </activity>

    <activity
        android:label="@string/app_name"
        android:screenOrientation="landscape"
        android:name=".zbar.ZBarScannerActivity">                            
    </activity>

</application>

And the Manifest of ZBar:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="net.sourceforge.zbar.android.CameraTest"
  android:versionCode="1"
  android:versionName="1.0">

<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

<application android:label="@string/app_name" >
    <activity android:name="CameraTestActivity"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

owe
  • 4,890
  • 7
  • 36
  • 47
  • could you paste the contents of your AndroidManifest? And ZBar's manifest aswell. Note that libraries also have its own manifest file – Adrián Rodríguez Nov 30 '12 at 11:57
  • 3
    Just compare the manifest file of your updated version and previous version. See if there are any new `/` tags in the new version, which was not present in old one. – Krishnabhadra Nov 30 '12 at 11:57
  • The only difference between my Manifest and the ZBar ones, is the following line: __. But I don't believe that this is the problem. My guess is that Google has problem with the added libraries by the ZBar-Project. I get 3 Folders when I imported the project: armeabi, armeabi-v7a and x86. So I think Google doesnt realise that armeabi is something like armeabi-v6. Has anyone a idea how to solve this? – owe Nov 30 '12 at 12:09
  • 1
    There it is then, right there. Not all cameras have auto focus. – Simon Nov 30 '12 at 12:12
  • Thanks for the fast answer. My Wildfire S has autofocus (http://en.wikipedia.org/wiki/HTC_Wildfire_S). So it should work with this device. I really think there's a conflict with the "armeabi"... – owe Nov 30 '12 at 12:21

2 Answers2

3

First of all, any change in the devices used must be a result of the manifest. That is the only thing that the Android market (Google Play) uses to determine what devices an app can go on. As you showed, the one difference was that you had a requirement to autofocus. If you change this line to the following, it should work.

<uses-feature android:name="android.hardware.camera.autofocus" android:required="false">

Essentially, this will allow you to use that feature, but not make it required. This should allow full compatibility with all previous devices. For more information, see this answer.

I should also note that I saw the camera wasn't required by your main app, but is required by zbar. This could also make a difference.

Community
  • 1
  • 1
PearsonArtPhoto
  • 38,970
  • 17
  • 111
  • 142
  • Hey PearsonArtPhoto, thnks a lot. I try to update a new Version with the "autofocus". – owe Nov 30 '12 at 12:28
  • 1
    Typically if you like an answer, you should upvote/accept it. – PearsonArtPhoto Nov 30 '12 at 14:03
  • Sorry, next time :). Now I uploaded my app with the feature of "autofocus", but this has no effect. I also don't think that my first assumption with the libs (-> armeabi) is correct. I checked the cpu_abi on both devices (Wildfire S, Galaxy 3) and both have "armeabi". Has anybody made the same experience? I really don't understand what's the problem. – owe Nov 30 '12 at 19:05
  • Hey at all. So far, I found one difference between my manifest and the listed permissions in the developer console. In the developer console there's "android.permission.READ_EXTERNAL_STORAGE". That permission wasn't there before. And you can see in my manifest that there isn't such a permission. Isn't "READ_EXTERNAL_STORAGE" included by "android.permission.WRITE_EXTERNAL_STORAGE"? So how can I found out why there's the included permission? Could this be the conflict why my app supports fewer devices than before? What I also should say: My App is bigger than 50MB, but I use extansion-files. – owe Dec 03 '12 at 10:14
1

I had this problem with my application (with Zbar scanner) on tablet Zenithink C93 (http://www.zenithink.com/Eproducts_C93.php). I needed create application compatible with Zenithink devices.

I published app in Play-Store of Google. When I tried install application on Zenithink C93 I got error: "This item is not compatible with your device"

My manifest had this line:

<uses-feature android:name="android.hardware.camera.autofocus" android:required="false">

But it didn't help me.

Also I had this support-screens tag:

<supports-screens
android:smallScreens="false"                                                               android:normalScreens="false"
android:largeScreens="true"
android:xlargeScreens="true"
android:anyDensity="true"/>

Strangely, but after a long search solution I completely removed support-screens tag and put android:required="false" for <uses-feature android:name="android.hardware.camera"/> application became compatible with Zenithink device.

Now my Manifest looks like this:

...
<uses-sdk
    android:minSdkVersion="14"
    android:targetSdkVersion="15"/>  

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

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>

<application...

This is not a good solution, because application will be compatible with almost all devices, but maybe it will help someone.

valerybodak
  • 4,195
  • 2
  • 42
  • 53