todas solucion servicios play los las hacer google este esta dispositivo con compatible como articulo aplicaciones android google-play

android - solucion - tu dispositivo no es compatible con este articulo



¿Por qué la tienda de Google Play dice que mi aplicación de Android es incompatible con mi propio dispositivo? (12)

Aunque ya hay bastantes respuestas, pensé que mi respuesta podría ayudar a algunos que tienen exactamente el mismo problema que el mío. En mi caso, el problema es causado por los siguientes permisos agregados según la sugerencia de una red publicitaria:

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

La consecuencia de los permisos anteriores es que las siguientes características se agregan automáticamente:

android.hardware.LOCATION android.hardware.location.GPS android.hardware.location.NETWORK

La razón es que "Google Play intenta descubrir los requisitos de características implícitas de una aplicación al examinar otros elementos declarados en el archivo de manifiesto, específicamente, los elementos". Dos de mis dispositivos de prueba no tienen las características anteriores, por lo que la aplicación se volvió incompatible con ellos. La eliminación de esos permisos resolvió el problema de inmediato.

Dudo en hacer esta pregunta, porque parece que muchas personas tienen un problema similar y, sin embargo, no he encontrado una solución que resuelva mi caso particular.

Desarrollé una aplicación de Android ( enlace a la aplicación real ) y la he subido a Play Store. La Play Store dice

"This app is incompatible with your XT Mobile Network HTC HTC Wildfire S A510b."

Por supuesto, ese es el teléfono en el que desarrollé la aplicación, por lo que debe ser compatible. Algunas personas con otros dispositivos dicen que es compatible, otros dicen que es incompatible, pero no puedo encontrar ninguna tendencia. (Aparentemente no conozco mucha gente con dispositivos Android).

He probado lo siguiente:

  • mover un archivo grande-ish del directorio res/raw como lo sugiere esta respuesta . El único archivo que había era un archivo de texto de ~ 700 kB, pero lo moví a assets/ sin cambio aparente.

  • agregando las siguientes dos aserciones de características:

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

    pensando que tal vez mi teléfono no dice que es compatible con la característica usual de android.hardware.touchscreen , pero de nuevo, sin cambio aparente.

Al cargar la APK en Play Store, el único filtro que informa como activo es la función android.hardware.faketouch .

A continuación se muestra el resultado de la aapt dump badging bin/NZSLDict-release.apk de aapt dump badging bin/NZSLDict-release.apk :

package: name=''com.hewgill.android.nzsldict'' versionCode=''3'' versionName=''1.0.2'' sdkVersion:''4'' targetSdkVersion:''4'' uses-feature:''android.hardware.faketouch'' uses-feature-not-required:''android.hardware.touchscreen'' application-label:''NZSL Dictionary'' application-icon-160:''res/drawable/icon.png'' application: label=''NZSL Dictionary'' icon=''res/drawable/icon.png'' launchable-activity: name=''com.hewgill.android.nzsldict.NZSLDictionary'' label=''NZSL Dictionary'' icon='''' main other-activities supports-screens: ''small'' ''normal'' ''large'' supports-any-density: ''true'' locales: ''--_--'' densities: ''160''

y para completar, mi archivo manifiesto:

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.hewgill.android.nzsldict" android:versionCode="3" android:versionName="1.0.2"> <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="4" /> <uses-feature android:name="android.hardware.faketouch" /> <uses-feature android:name="android.hardware.touchscreen" android:required="false" /> <application android:label="@string/app_name" android:icon="@drawable/icon"> <activity android:name="NZSLDictionary" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".WordActivity" /> <activity android:name=".VideoActivity" /> <activity android:name=".AboutActivity" /> </application> </manifest>

En la sección "Disponibilidad del dispositivo" de Play Store, puedo ver que todos los dispositivos HTC, incluido el Wildfire S, son compatibles excepto para "G1 (trucha)" y "Touch Viva (ópalo)", sean los que sean. De hecho, veo que tanto "Wildfire S (maravilla)" como "Wildfire S A515c (marvelc)" se enumeran como compatibles, pero mi "Wildfire S A510b" no se menciona específicamente. ¿Puede este tipo de identificador de submodelo importar tanto? Pude descargar varias otras aplicaciones de Google Play a mi teléfono sin problemas.

Lo único que no he hecho en este punto es esperar de 4 a 6 horas después de cargar la última versión (como en este comentario ) para ver si todavía dice que es incompatible con mi teléfono. Sin embargo, la página Play Store actualmente muestra 1.0.2, que es la última que he subido.


Encontré una forma adicional en la que ocurre este problema:
El sistema operativo original de mi teléfono LG era Froyo (Android 2.2) y se actualizó a ICS (Android 4.0.4). Pero la Consola de Desarrolladores de Google Play muestra que detecta mi teléfono como un dispositivo Froyo. (Google Play no permitió que la aplicación se descargue debido a la falsa ''incompatibilidad'', pero de alguna manera todavía detecta la instalación).

La configuración del teléfono, en ''software'', muestra ICS V4.0.4. Parece que la información del servidor de Google Play para el teléfono no se actualiza para reflejar la actualización de ICS en el dispositivo. El manifiesto de la aplicación minSDK está configurado en Honeycomb (3.0), por lo que, por supuesto, Google Play filtra la aplicación.

De interés adicional:
La aplicación utiliza In-app Billing V3. La primera vez a través de IabHelper permite que la aplicación realice compras a través del servicio Google Play. Pero después de que se realiza la compra, la compra NO se incluye en el inventario y IabHelper informa que no hay artículos de su propiedad. Los mensajes de depuración muestran un resultado de "compra fallida" de la compra, aunque la ventana de Google Play anuncia "compra exitosa".

Es posible que desee intentar establecer el atributo de pantallas de soporte:

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

El Wildfire tiene una pantalla pequeña, y de acuerdo con la documentación, este atributo debe ser "verdadero" en todos los casos, pero existen problemas conocidos con la configuración de pantallas de soporte en diferentes teléfonos, así que lo intentaría de todos modos.

Además, como sugiere David, compile y oriente siempre en contra de la versión más actual de la API de Android, a menos que tenga razones sólidas para no hacerlo. Casi todos los SDK anteriores a 2.2 tienen algún problema grave o comportamiento extraño; la última ayuda del SDK para resolver o cubrir mucho (aunque no todos) de ellos. Puede (y debe) usar la herramienta de pelusa para verificar que su aplicación siga siendo compatible con la API 4 cuando prepare una versión.


Finlay, he enfrentado el mismo problema en mi aplicación. Desarrollé la aplicación Phone Gap para android:minSdkVersion="7" & android:targetSdkVersion="18" que es una versión reciente de la plataforma de Android.

He encontrado el problema usando Google Docs

Puede ser problema es que tengo escribir alguna función JS que funciona en KEY-CODE para validar solo Alphabets & Number pero el teclado tiene diferentes códigos de teclas especialmente para teclado de computadora y teclado móvil. Así que ese era mi problema.

No estoy seguro de si mi respuesta es correcta o no, y es posible que sea una sonrisa de la respuesta anterior, pero trataré de enumerar algunos puntos que deberían tenerse en cuenta mientras construimos la aplicación. Espero que sigan esto para resolver este tipo de problema

  • Usa el android:minSdkVersion="?" según su requisito & android:targetSdkVersion="?" debe ser el último en el que se orientará su aplicación. ver más

  • Intente agregar solo aquellos permisos que se usarán en su aplicación y elimine todos los que sean innecesarios.

  • Echa un vistazo a la pantalla compatible por aplicación

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

  • Puede ser que haya implementado algún código de disfraz o widget de vestuario que no podría ejecutarse en algún dispositivo o pestaña tarde, así que antes de escribir el código largo primero intente escribir un código beta y pruébelo si su código se ejecutará en todos los dispositivos o no. .

  • Y espero que Google publique una herramienta que pueda validar su código antes de cargar la aplicación y también que, debido a alguna razón específica, no podamos ejecutar su aplicación en algún dispositivo para que podamos resolverla fácilmente.


La respuesta parece estar relacionada únicamente con el tamaño de la aplicación. Creé una aplicación sencilla de "Hola mundo" sin nada especial en el archivo de manifiesto, la cargué en Play Store y se informó que era compatible con mi dispositivo.

No cambié nada en esta aplicación a excepción de agregar más contenido en el directorio res/drawable . Cuando el tamaño de .apk alcanzó aproximadamente 32 MB, Play Store comenzó a informar que mi aplicación era incompatible con mi teléfono.

Intentaré contactar al soporte técnico de Google para desarrolladores y solicitar una aclaración sobre el motivo de este límite.

ACTUALIZACIÓN : Aquí está la respuesta de soporte del desarrollador de Google a esto:

Gracias por tu nota. Actualmente, el límite máximo de tamaño de archivo para cargar una aplicación en Google Play es de aproximadamente 50 MB.

Sin embargo, algunos dispositivos pueden tener una partición de caché de menos de 50 MB que hace que la aplicación no esté disponible para que los usuarios la descarguen. Por ejemplo, algunos de los dispositivos HTC Wildfire son conocidos por tener 35-40 MB de particiones de caché. Si Google Play puede identificar dicho dispositivo que no tiene caché lo suficientemente grande como para almacenar la aplicación, puede filtrar para que no aparezca para el usuario.

Terminé resolviendo mi problema convirtiendo todos los archivos PNG a JPG, con una pequeña pérdida de calidad. El archivo .apk ahora tiene 28 MB, que está por debajo del umbral que Google Play aplica para mi teléfono.

También eliminé todas las cosas de <uses-feature> , y ahora tengo solo esto:

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


Me encontré con esto también: desarrollé todo mi desarrollo en una Lenovo IdeaTab A2107A-F y pude ejecutar compilaciones de desarrollo en ella, e incluso lanzar APK firmados (instalados con la adb install ) sin problemas. Una vez que se publicó en el modo de prueba Alpha y está disponible en Google Play, recibí el mensaje de error "incompatible con su dispositivo".

Resultó que había colocado en mi AndroidManifest.xml lo siguiente de un tutorial:

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

Bueno, la Lenovo IdeaTab A2107A-F no tiene una cámara de autoenfoque (que aprendí de http://www.phonearena.com/phones/Lenovo-IdeaTab-A2107_id7611 , en Contras: carece de cámara de enfoque automático). Independientemente de si estaba usando esa función, Google Play dijo que no. Una vez que se eliminó, reconstruí mi APK, la cargué en Google Play y, por supuesto, mi IdeaTab estaba ahora en la lista de dispositivos compatibles.

Por lo tanto, vuelva a verificar cada <uses-feature> y si ha estado haciendo copy-paste desde la web, vuelva a verificar. Es probable que haya solicitado alguna función que ni siquiera está utilizando.


Para dar una solución adicional al problema anterior ''Esta aplicación no es compatible con su ...'', permítame compartir mi solución para una causa diferente. Intenté instalar una aplicación en un dispositivo Samsung Galaxy Y (GT-S6350) de gama baja y obtuve este error de Play Store. Para probar varias configuraciones de AndroidManifest, creé una cuenta y seguí la rutina como se describe en https://.com/a/5449397/372838 hasta que mi dispositivo apareció en la lista de dispositivos admitidos.

Resultó que muchos dispositivos se vuelven incompatibles cuando usa el permiso de la Cámara:

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

Cuando eliminé ese permiso específico, la aplicación estaba disponible para 1180 dispositivos en lugar de 870. Espero que ayude a alguien


Permisos que implican requisitos de características

Por ejemplo, la función android.hardware.bluetooth se agregó en Android 2.2 (nivel de API 8), pero la API de bluetooth a la que hace referencia se agregó en Android 2.0 (nivel de API 5). Debido a esto, algunas aplicaciones pudieron usar la API antes de poder declarar que requieren la API a través del sistema.

Para evitar que esas aplicaciones estén disponibles de forma involuntaria, Google Play supone que ciertos permisos relacionados con el hardware indican que las características de hardware subyacentes son obligatorias por defecto. Por ejemplo, las aplicaciones que usan Bluetooth deben solicitar el permiso BLUETOOTH en un elemento: para las aplicaciones heredadas, Google Play supone que la declaración de permiso significa que la aplicación requiere la función android.hardware.bluetooth subyacente y configura el filtrado según esa característica .

La siguiente tabla enumera los permisos que implican requisitos de características equivalentes a los declarados en los elementos. Tenga en cuenta que las declaraciones, incluido cualquier atributo declarado android: required, siempre tienen prioridad sobre las características implicadas por los permisos a continuación.

Para cualquiera de los permisos a continuación, puede desactivar el filtrado basado en la característica implícita al declarar explícitamente la característica implícita explícitamente, en un elemento, con un atributo android: required = "false". Por ejemplo, para desactivar cualquier filtrado basado en el permiso CAMERA, debe agregar esta declaración al archivo de manifiesto:

<uses-feature android:name="android.hardware.camera" android:required="false" /> <uses-feature android:name="android.hardware.bluetooth" android:required="false" /> <uses-feature android:name="android.hardware.location" android:required="false" /> <uses-feature android:name="android.hardware.location.gps" android:required="false" /> <uses-feature android:name="android.hardware.telephony" android:required="false" /> <uses-feature android:name="android.hardware.wifi" android:required="false" />

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


Típico, lo encontró justo después de publicar esta pregunta con desesperación; la herramienta que estaba buscando era:

$ aapt dump badging <my_apk.apk>


También experimenté este problema al desarrollar una aplicación para un cliente que deseaba tener videos sin conexión disponibles desde su aplicación. Escribí un blog sobre por qué la aplicación en la que trabajé durante meses no aparecía en Play Store para mi dispositivo (la publicación se puede encontrar aquí ). Encontré lo mismo que @Greg Hewgill encontrado: limitaciones de la partición de caché en algunos dispositivos .

El viaje no se detuvo allí para mí. El cliente quería tener estos videos en la aplicación y no quería que se disminuyera la calidad del video. Después de investigar, descubrí que el uso de archivos de expansión era la solución perfecta para nuestro problema.

Para compartir mis conocimientos con la comunidad de Android, di una charla en droidconNL 2012 sobre los archivos de expansión. Creé una presentación y un código de muestra para ilustrar lo fácil que puede ser comenzar a usar los archivos de expansión. Para cualquiera de ustedes que quiera usar archivos de expansión para resolver este problema, no dude en consultar la publicación que contiene la presentación y el código de muestra.


Tengo un par de sugerencias:

  1. En primer lugar, parece que está utilizando API 4 como su objetivo. AFAIK, es una buena práctica compilar siempre contra el último SDK y configurar su android:minSdkVersion consecuencia.

  2. Con eso en mente, recuerde que el atributo android:required fue agregado en API 5 :

La declaración de características puede incluir un android:required=["true" | "false"] atributo android:required=["true" | "false"] (si compila contra API de nivel 5 o superior), lo que le permite especificar si la aplicación (...)

Por lo tanto, sugiero que compile contra SDK 15, establezca targetSdkVersion en 15 y proporcione esa funcionalidad.

También se muestra aquí, en el sitio Play, como incompatible con cualquier dispositivo que tengo que sea (¿coincidencia?) Gingerbread (Galaxy Ace y Galaxy Y aquí). Pero se muestra como compatible con mi Galaxy Tab 10.1 ( Honeycomb ), Nexus S y Galaxy Nexus (ambos en ICS ).

Eso también me dejó pensando, y esta es una suposición muy salvaje, pero dado que android.hardware.faketouch es API11 + , ¿por qué no intentas eliminarlo solo para ver si funciona? O tal vez eso esté relacionado de todos modos, ya que estás tratando de usar las características ( faketouch ) y el atributo required que no están disponibles en la API 4. Y en este caso debes compilar contra la API más reciente.

Lo probaría primero, y eliminaría el requisito de faketouch solo como último recurso (por supuesto) --- ya que funciona al desarrollar, yo diría que es solo cuestión de que la aplicación compilada no reconozca la función (debido a los requisitos del SDK) ), lo que deja problemas de filtrado inesperados en Play.

Lo siento si esta conjetura no responde a su pregunta, pero es muy difícil diagnosticar ese tipo de problemas e identificar la solución sin realizar pruebas. O al menos para mí sin el conocimiento adecuado de cómo Play realmente filtra las aplicaciones.

Buena suerte.


Yo tuve el mismo problema. Fue causado por tener diferentes códigos de versión y números en mi manifiesto y en el script de compilación de Gradle. Lo resolví eliminando el código de versión y el número de versión de mi manifiesto y dejando que gradle se ocupara de ello.