android - “你的设备与此版本不兼容”

时间:2012-09-07 07:49:40

标签: android

我在Play商店中放了一个应用程序,我的朋友,运行4.1(Nexus 7),在尝试安装我的应用程序时收到以下消息:“您的设备与此版本不兼容”。为什么会这样?请任何人帮助我。

Manifeast file

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

< manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.ibkr.pcg"
      android:versionCode="3"
      android:versionName="1.1">

< uses-sdk android:minSdkVersion="7"  
      android:targetSdkVersion="8"/>
<uses-permission android:name="android.permission.INTERNET"></uses-permission> 
<uses-permission android:name="android.permission.CAMERA" />        
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" ></uses-permission>  

<!-- C2DM Permissions Start -->
 <!-- Only this application can receive the messages and registration result --> 
<permission android:name="com.ibkr.pcg.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="com.ibkr.pcg.permission.C2D_MESSAGE" /> 

 <!-- This app has permission to register and receive message -->
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<!-- End of the C2DM Permissions -->

<application android:icon="@drawable/pcgicon" 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
    android:name="MyApplication"
    android:debuggable="true">
    <activity android:name=".PriceCheckGuruSplash"
              android:label="@string/app_name">      
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />    
        </intent-filter>  
    </activity>

     <!-- Only C2DM servers can send messages for the app. If permission is not set - any other app can generate it --> 
    <receiver
     android:name=".C2DMMessageReciever" android:permission="com.google.android.c2dm.permission.SEND" >
      <!-- Receive the actual message -->
     <intent-filter >
            <action android:name="com.google.android.c2dm.intent.RECEIVE" >  
            </action>
            <category android:name="com.ibkr.pcg" /> 
        </intent-filter>
    </receiver>

   <receiver
        android:name=".C2DMRegistrationReceiver"
        android:permission="com.google.android.c2dm.permission.SEND" >
        <intent-filter >
            <action android:name="com.google.android.c2dm.intent.REGISTRATION" >
            </action>
            <category android:name="com.ibkr.pcg" />
        </intent-filter>
    </receiver>

    <activity android:name="MessageReceivedActivty" android:screenOrientation="portrait"/>
    <activity android:name="LoginScreen" android:screenOrientation="portrait"> </activity>
    <activity android:name="RegistrationScreen" android:screenOrientation="portrait"> </activity>
    <activity android:name="ForgotPasswordScreen" android:screenOrientation="portrait"> </activity>
    <activity android:name="UserPreferences" android:screenOrientation="portrait"> </activity>
    <activity android:name="TrackedItems" android:screenOrientation="portrait"> </activity> 
    <activity android:name="WebPage" android:screenOrientation="portrait"> </activity>
    <activity android:name="CustomTabActivity" android:screenOrientation="portrait"> </activity>
    <activity android:name="TabGroup1Activity" android:screenOrientation="portrait"> </activity>
    <activity android:name="TabGroup2Activity" android:screenOrientation="portrait"> </activity>
    <activity android:name="TabGroup3Activity" android:screenOrientation="portrait"> </activity>
    <activity android:name="TabGroup4Activity" android:screenOrientation="portrait"> </activity>
    <activity android:name="SearchScreen" android:screenOrientation="portrait"> </activity>
    <activity android:name="SearchResultsScreen" android:screenOrientation="portrait"></activity>
    <activity android:name="ProductDisplay" android:screenOrientation="portrait"></activity>
    <activity android:name="VendorsDisplay" android:screenOrientation="portrait"></activity>
    <activity android:name="Filter" android:screenOrientation="portrait"></activity>
    <activity android:name="barcodeScanner" android:screenOrientation="portrait"></activity>
    <activity android:name="ScannerPage" android:screenOrientation="portrait"></activity> 
    <activity android:name="Linegraphpage" android:screenOrientation="landscape"></activity>        
    <activity android:name="org.achartengine.GraphicalActivity" android:screenOrientation="landscape"/> 
    <activity android:name="org.acra.CrashReportDialog"
    android:theme="@android:style/Theme.Dialog"
    android:launchMode="singleInstance"
    android:excludeFromRecents="true"
    android:finishOnTaskLaunch="true" />
</application>

&LT; /清单&GT;

enter image description here

7 个答案:

答案 0 :(得分:5)

//删除此android:targetSdkVersion =“8”

并且Nexus 7没有后置摄像头功能。

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

注意:如果您是通过意图使用相机,则您的应用程序无需申请此权限。     相机功能 - 您的应用程序还必须声明使用相机功能,例如:

  <uses-feature android:name="android.hardware.camera" />

有关相机功能的列表,请参阅清单功能参考。     将相机功能添加到清单会导致Google Play阻止您的应用程序安装到不包含相机的设备或不支持您指定的相机功能。 For more information

如果您的应用程序可以使用相机或相机功能进行正确操作,但不需要它,则应在清单中通过包含android:required属性并将其设置为false来指定:

注意:您需要提及supports-screens

答案 1 :(得分:5)

这是因为你的' android.permission.ACCESS_NETWORK_STATE '权限 - 设备没有手机调制解调器,你需要在允许的权限中加入android:required =“false”它将被安装在不支持它的设备上

  

要控制过滤,请始终明确声明硬件功能    元素,而不是依赖于Google Play   “发现”元素中的要求。然后,如果   如果要禁用特定功能的过滤,可以添加   声明的android:required =“false”属性。

http://developer.android.com/guide/topics/manifest/uses-permission-element.html

答案 2 :(得分:2)

像其他已经建议的那样 - 相机可能是一个问题。 Android开发者博客上关于nexus 7的帖子很好。基本上它只有一个前置摄像头,所以你的应用程序要求默认的摄像头要求将失败....

基本上你需要扩展请求以说明它并不重要,然后处理你应用中的细节......

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

如需更多信息,请点击链接 http://android-developers.blogspot.com.au/2012/07/getting-your-app-ready-for-jelly-bean.html

答案 3 :(得分:1)

android:targetSdkVersion应该是构建应用时可用的最高SDK,除非您有非常具体的理由不这样做。也许您想要保证更新的方法和API不会被调用,因为您必须在特定设备上正常工作,即使这意味着牺牲了对新设备的行为。

大部分时间,下载最新的SDK并将android:targetSdkVersion设置为最新版本。

答案 4 :(得分:0)

请使用此

<uses-sdk android:minSdkVersion="7" />

答案 5 :(得分:0)

使用以下内容:

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

<uses-sdk
    android:minSdkVersion="7"
    android:targetSdkVersion="16" /> //or just remove the targetSdkVersion, altough it is not recommended

答案 6 :(得分:0)

始终在Manifest中定义的属性将您的应用通过Google Playstore过滤掉某些设备。 例如:

  1. 宣布特定目标Sdk Version
  2. 定义的相机permission(将过滤没有相机的设备)
  3. 使用功能相机。
  4. 支持SIM卡的设备。
  5. 带Wifi的设备。
  6. 因此,在发布您的应用之前,您必须记住,您必须为目标达到最大设备,而不是必须选择某些功能和权限,并且大部分时间Sdk version target

    希望这能让您了解发布App。