5

我在 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>

< /清单>

在此处输入图像描述

4

7 回答 7

5

//删除这个 android:targetSdkVersion="8"

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

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

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

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

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

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

注意:您需要提及supports-screens

于 2012-09-07T07:59:03.990 回答
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

于 2012-09-07T08:00:36.270 回答
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

于 2012-09-07T08:01:09.043 回答
1

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

大多数时候,下载最新的 SDK 并设置android:targetSdkVersion为最新版本。

于 2012-09-07T08:12:30.500 回答
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
于 2012-09-07T07:59:06.830 回答
0

就用这个

<uses-sdk android:minSdkVersion="7" />
于 2012-09-07T07:56:26.003 回答
0

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

  1. 声明了特定的 Target Sdk Version
  2. 定义的相机permission(将过滤没有相机的设备)
  3. 使用功能相机。
  4. 启用 SIM 卡的设备。
  5. 带 Wifi 的设备。

因此,在发布您的应用程序之前,您必须记住,您必须达到目标的最大设备数量,而不是在大多数情况下选择退出某些功能和权限Sdk version target

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

于 2018-03-05T06:33:46.137 回答