2013-05-25 11 views
5

Opracowałem i przetestowałem moją aplikację za pomocą różnych emulatorów na telefony i tablety oraz 4 prawdziwe urządzenia: Samsung Galaxy Ace (GT-I8160P), Samsung Galaxy Tab 2 (GT-P5110 i GT-P3110) oraz Storex M977. Po 5 miesiącach pracy i testów aplikacja działa poprawnie na wszystkich tych urządzeniach. Więc przesłałem go w Google Play. Ale Google Play wskazuje, że nie jest zgodny z moimi tabletami. Nie mogę zainstalować go za pomocą Google Play na moich kartach Galaxy ...Aplikacja nie jest zgodna z urządzeniem używanym do jego rozwijania?

Nie mogę określić, na czym polega problem. Dodałem sekcję pomocy technicznej bez powodzenia. Byłem trochę zdesperowany, więc dodałem te funkcje-funkcje z wymaganym = "false": GPS, SIEĆ, TELEFONIA, WIFI, LOKALIZACJA, TOUCHSCREEN, nawet jeśli aplikacja działała bez tych funkcji-funkcji. Ten sam wynik. Usunąłem także "TargetSdk". Google Play twierdzi, że moja aplikacja jest kompatybilna z 2339 urządzeniami, w tym niektórymi kartami Galaxy, ale nie z moimi kartami. Tylko Galaxy Ace może zainstalować go z Google Play.

Oto mój plik manifestu (po prostu zastąpiłem oryginalną nazwę pakietu przez fr.test.app ze względu na poufność). Co robię źle?

<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

polecam dodanie androida atrybut: targetSdkVersion można znaleźć w google doc: http://developer.android.com/guide/topics/manifest/uses-sdk-element.html – Jarvis

+0

Próbowałem: "Aby rozwiązać problem, przejdź do danych na temat Android Market-publish ==>. W zakładce opcji publikowania MUSISZ WYŁĄCZYĆ ochronę rzeczy. (aby chronić swoją aplikację, powinieneś korzystać z systemu licencjonowania) "? – sschrass

+1

Nie widzę nic na temat ochrony przed kopiowaniem. Wygląda na to, że Google Play wyłączył tę funkcję.Myślę, że naprawiłem problem: użyłem uprawnienia VIBRATE. W tym przypadku niejawnie dodaje funkcję-android.hardware.vibrate.I dodać go wyraźnie za pomocą Androida: required = "false" Teraz widzę tylko 56 niekompatybilnych urządzeń, a żadna z kopalń wśród nich.Musię ponownie przetestować moją aplikację przed publikacją ale myślę, że problem został rozwiązany dzięki. '' – user2244705

Odpowiedz

0

Myślę, że problemem jest zezwolenie na wibracje. Czy na pewno urządzenie wibruje?

1

<uses-feature> W atrybutach rozróżniana jest wielkość liter, należy pisać je małymi literami. Poza tym, co już masz, dodałbym:

<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

w niektórych przypadkach Google Play powie dlaczego urządzenie nie jest kompatybilne:

  1. Otwórz Google Play na komputerze stacjonarnym: https://play.google.com/store
  2. Przejdź do swojej aplikacji i kliknij przycisk Install.
  3. Otwórz listę rozwijaną urządzeń i sprawdź, czy pod niezgodnym urządzeniem znajduje się podsumowanie:

screenshot

Powiązane problemy