2013-05-25 5 views
5

Ich entwickelte und testete meine App mit verschiedenen Handys und Tablets Emulatoren und 4 realen Geräten: Samsung Galaxy Ace (GT-I8160P), Samsung Galaxy Tab 2 (GT-P5110 und GT-P3110) und einem Storex M977. Nach 5 Monaten Arbeit und Tests funktioniert die App auf all diesen Geräten. Also habe ich es bei Google Play hochgeladen. Google Play weist jedoch darauf hin, dass es nicht mit meinen Tablets kompatibel ist. Ich kann es nicht mit Google Play auf meinem Galaxy Tabs installieren ...App nicht kompatibel mit dem Gerät, das ich verwende, um es zu entwickeln?

Ich kann nicht herausfinden, was das Problem ist. Ich habe den Abschnitt support-screens ohne Erfolg hinzugefügt. Ich war ein bisschen verzweifelt, also habe ich auch diese Verwendungen hinzugefügt - Features mit required = "false": GPS, NETZWERK, TELEFONIE, WIFI, LOCATION, TOUCHSCREEN, auch wenn die App ohne diese Verwendungen funktionierte. Gleiches Ergebnis. Ich habe auch "TargetSdk" entfernt. Google Play sagt, dass meine App mit 2339 Geräten einschließlich einiger Galaxy Tabs kompatibel ist, aber nicht mit meinen Tabs. Nur das Galaxy Ace kann es von Google Play installieren.

Hier ist meine Manifest-Datei (ich habe gerade den ursprünglichen Paketnamen des Pakets durch fr.test.app aus Gründen der Vertraulichkeit ersetzt). Was mache ich falsch?

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="fr.test.app" 
android:versionCode="7" 
android:versionName="1.2" > 

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

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


<uses-feature android:name="android.hardware.WIFI" android:required="false" /> 
<uses-feature android:name="android.hardware.GPS" android:required="false" /> 
<uses-feature android:name="android.hardware.TELEPHONY" android:required="false" /> 
<uses-feature android:name="android.hardware.camera.front" android:required="false" /> 
<uses-feature android:name="android.hardware.camera" android:required="false"/> 
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/> 
<uses-feature android:name="android.hardware.LOCATION" android:required="false" /> 
<uses-feature android:name="android.hardware.NETWORK" android:required="false" /> 
<uses-feature android:name="android.hardware.TOUCHSCREEN" android:required="false" /> 

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> 
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.SEND_SMS" /> 
<uses-permission android:name="android.permission.WRITE_SMS"/> 
<uses-permission android:name="android.permission.READ_SMS"/> 
<uses-permission android:name="android.permission.READ_CONTACTS"/> 
<uses-permission android:name="android.permission.VIBRATE" /> 
<uses-permission android:name="android.permission.CAMERA"/> 
<uses-permission android:name="android.permission.CAMERA.FRONT"/> 
<uses-permission android:name="android.permission.WAKE_LOCK"/> 

<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/> 
<uses-permission android:name="android.permission.GET_ACCOUNTS"/> 
<permission android:name="fr.test.app.permission.C2D_MESSAGE" 
    android:protectionLevel="signature" /> 
<uses-permission android:name="fr.test.app.permission.C2D_MESSAGE" /> 



<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" 
    > 


    <receiver 
     android:name="com.google.android.gcm.GCMBroadcastReceiver" 
     android:permission="com.google.android.c2dm.permission.SEND" > 
     <intent-filter> 
      <!-- Receives the actual messages. --> 
      <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
      <!-- Receives the registration id. --> 
      <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 
      <category android:name="fr.test.app" /> 
     </intent-filter> 
    </receiver> 
    <service android:name=".GCMIntentService" />  

    <receiver 
     android:name=".OnBootReceiver" 
     android:enabled="true" 
     android:exported="false" android:label="OnBootReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      <action android:name="android.intent.action.MAIN" /> 
     </intent-filter> 
    </receiver> 
    <receiver 
     android:process=":remote" 
     android:name="fr.test.app.Alarm">   
    </receiver>   
    <receiver 
     android:process=":remote" 
     android:name="fr.test.app.CamAlarm">    
    </receiver>   
    <receiver android:name=".MyAdmin" android:permission="android.permission.BIND_DEVICE_ADMIN"> 
     <meta-data android:name="android.app.device_admin" android:resource="@layout/policies"> 
      <intent-filter> 
       <action android:name="android.app.action.DEVICE_ADMIN_ENABLED"> 
       </action> 

      </intent-filter> 
     </meta-data>   
    </receiver> 
    <service 
     android:name=".BbSvc" android:enabled="true" 
     android:exported="false" 
    />   

    <service 
     android:name=".WpsLoc" android:enabled="true" 
     android:exported="false" 
    /> 

    <service 
     android:name=".Cam" android:enabled="true" 
     android:exported="false" 
    /> 

    <service 
     android:name=".MniRec" android:enabled="true" 
     android:exported="false" 
    /> 

    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" 
     android:configChanges="keyboardHidden|orientation"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".reminder" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <!-- 
      <category android:name="android.intent.category.LAUNCHER" /> 
      <category android:name="android.intent.category.DEFAULT" /> --> 
     </intent-filter> 
    </activity> 
    <provider android:name="fr.test.app.AndroidProvider" 
      android:authorities="fr.test.app.AndroidProvider" 
      android:exported="false"/> 
</application> 

+0

Ich empfehle Ihnen das Attribut android hinzuzufügen: targetSdkVersion Sie bitte die Google-doc sehen: http://developer.android.com/guide/topics/manifest/uses-sdk-element.html – Jarvis

+0

Versucht dies: "Um das Problem zu beheben, gehen Sie in Ihre Android-Market-Publish ==> Produktdetails. In der Registerkarte "Optionen veröffentlichen" MÜSSEN Sie den Schutz der Sachen deaktivieren. (Zum Schutz Ihrer Anwendung sollten Sie das Lizenzierungssystem verwenden) "? – sschrass

+1

Ich sehe nichts über den Kopierschutz. Es scheint, dass Google Play diese Funktion deaktiviert hat. Ich glaube, ich habe das Problem behoben: Ich habe die VIBRATE-Berechtigung verwendet. In diesem Fall fügt implizit das uses-feature android.hardware.vibrate hinzu. Ich füge es explizit mit android hinzu: required = "false". Jetzt sehe ich nur noch 56 inkompatible Geräte und keine Minen darunter. Ich muss meine App vor der Veröffentlichung erneut testen es aber ich denke das Problem ist gelöst. Danke. '' – user2244705

Antwort

1

Für die Zukunft für jeden auf diese stolpern, hat Android einen großen Führer auf Berechtigungen und Filterung. Dies umfasst eine vollständige Liste der impliziten Hardwarefunktionen bei Verwendung bestimmter Berechtigungen. (Es ist an der Unterseite.)

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

Dies ist entweder eine neue Ergänzung der Dokumentation oder nur sehr schwer zu finden. XD

0

Ich denke, das Problem ist Vibration Erlaubnis.Sind Sie sicher, dass Ihr Gerät vibriert?

1

<uses-feature> Bei den Attributen wird die Groß-/Kleinschreibung beachtet. Sie müssen sie in Kleinbuchstaben schreiben. Zusätzlich zu dem, was Sie bereits haben, möchte ich hinzufügen:

<uses-feature android:name="android.hardware.telephony.cdma" android:required="false"/> 
<uses-feature android:name="android.hardware.telephony.gsm" android:required="false"/> 
<uses-feature android:name="android.hardware.location.gps" android:required="false"/> 
<uses-feature android:name="android.hardware.location.network" android:required="false"/> 
0

In einigen Fällen Google Play wird Ihnen sagen, warum das Gerät nicht kompatibel ist:

  1. Öffnen Sie Google auf Ihrem Desktop-Computer spielen: https://play.google.com/store
  2. Navigieren Sie zu Ihrer App und klicken Sie auf die Install Schaltfläche
  3. Öffnen Sie die Dropdown-Liste der Geräte, und sehen Sie, ob es eine Zusammenfassung unter dem inkompatiblen Gerät gibt:

screenshot

Verwandte Themen