Android Market: "Este elemento no es compatible con tu dispositivo".

Esto realmente me está poniendo nervioso. He intentado como todo para conseguir mi aplicación para trabajar en algunas pestañas más exóticas!

Han publicado una aplicación de prueba (solo un proyecto eclipse android con nada más) para probar diferentes configuraciones de manifiesto. Sin embargo, no puedo conseguir que mi aplicación funcione en mi pestaña con Android Market. Funciona en el dispositivo directamente con depuración.

Lo que he probado: Android 2.2 Android 2.3

Añadido esto:

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

Probado esto:

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

Y luego todas las combinaciones de todo esto. No tengo permisos de uso en esta aplicación de prueba.

Lo extraño que no entiendo es que algunas aplicaciones funcionan y no puedo parece encontrar por qué funcionan y no alguna otra. Tengo diferentes dispositivos y uso la comprobación de compatibilidad del sitio web y algunas aplicaciones que sólo funcionan y otras no.

Lo que me gustaría saber es por qué una aplicación no es compatible con Android Market para ese dispositivo específico. ¿Hay alguna forma de obtener esta información? Supongo que esto debe ser un lugar para encontrar ya que funciona a veces ya veces no.

Por favor, ayúdame a encontrar una manera de entender esto.

(Im no buscando una solución / root en el dispositivo, ya han hecho esto en algunos dispositivos para obtener la aplicación de trabajo. Quiero saber por qué)

—- EDIT —- Ahora encontré y ejecuté este comando para mi aplicación de prueba: ./aapt dump badging testapp.apk

Entonces veo esto: support-any-density: 'true' densidades: '120' '160' '240' Running screeninfo en mi dispositivo dice que tiene densidad 200. Así que supongo que este es el problema. Así que ahora la pregunta es, ¿cómo puedo añadir 200 a esa lista. No desea cambiar la densidad en el dispositivo.


Este es mi manifiesto:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="se.whatnapp.mainfesttester" android:versionCode="8" android:versionName="1.9" > <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="10" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".MainfestTesterActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 

Como puede ver esto es un caso de prueba y no tengo nada en él realmente. Y todavía no funciona! Este es el resultado de aapt dump badgin:

 package: name='se.whatnapp.mainfesttester' versionCode='8' versionName='1.9' sdkVersion:'10' targetSdkVersion:'10' application-label:'Mainfest Tester' application-icon-120:'res/drawable-ldpi/ic_launcher.png' application-icon-160:'res/drawable-mdpi/ic_launcher.png' application-icon-240:'res/drawable-hdpi/ic_launcher.png' application: label='Mainfest Tester' icon='res/drawable-mdpi/ic_launcher.png' launchable-activity: name='se.whatnapp.mainfesttester.MainfestTesterActivity' label='Mainfest Tester' icon='' uses-feature:'android.hardware.touchscreen' main supports-screens: 'small' 'normal' 'large' 'xlarge' supports-any-density: 'true' locales: '--_--' densities: '120' '160' '240' 

Y sí sé que mal escrito, demo sucio ;-).

He extraído un apk de una aplicación que podría encontrar y podría instalar y la única diferencia real es en la configuración regional:

 supports-screens: 'small' 'normal' 'large' 'xlarge' supports-any-density: 'true' locales: '--_--' 'ja' 'nb' 'de' 'he' 'th' 'zh' 'nl' 'po' 'ar' 'fr' 'tr' 'es' 'it' 'ru' 'zh_TW' densities: '120' '160' '240' 

¿Puede esto detener la descarga de la aplicación?


Y este es el build.prop del dispositivo:

 # begin build properties # autogenerated by buildinfo.sh ro.build.id=GRI40 ro.build.display.id=11A4-D1-H1-H01-1233 ro.build.version.incremental=20110908.151019 ro.build.version.sdk=10 ro.build.version.codename=REL ro.build.version.release=2.3.3 ro.build.date=Thu Sep 8 15:26:28 CST 2011 ro.build.date.utc=1315466788 ro.build.type=eng ro.build.user=paco ro.build.host=inet ro.build.tags=test-keys ro.product.model=V8 ro.product.brand=telechips ro.product.name=full_m801 ro.product.device=m801 ro.product.board=m801_evm ro.product.cpu.abi=armeabi-v7a ro.product.cpu.abi2=armeabi ro.product.manufacturer=telechips ro.product.locale.language=en ro.product.locale.region=US ro.wifi.channels= ro.board.platform=tcc88xx # ro.build.product is obsolete; use ro.product.device ro.build.product=m801 # Do not try to parse ro.build.description or .fingerprint ro.build.description=full_m801-eng 2.3.3 GRI40 20110908.151019 test-keys ro.build.fingerprint=telechips/full_m801/m801:2.3.3/GRI40/20110908.151019:eng/test-keys # end build properties # # system.prop for TCC88xx # # The OpenGL ES API level that is natively supported by this device. # This is a 16.16 fixed point number ro.opengles.version = 131072 # This is a high density device with more memory, so larger vm heaps for it. dalvik.vm.heapsize=24m # density in DPI of the LCD of this board. This is used to scale the UI # appropriately. If this property is not defined, the default value is 160 dpi. ro.sf.lcd_density = 200 # SSG, to enable WMA, WMV and ASF file recognizing routine ro.media.dec.aud.wma.enabled = 1 ro.media.dec.vid.wmv.enabled = 1 # SSG, to enable RA, RM and RMVB file recognizing routine ro.media.dec.aud.ra.enabled = 1 ro.media.dec.vid.rv.enabled = 1 # SSG, if changing audio play rate is supported, set this property to 1 ro.media.aud.rate.changeable = 0 #Ä£¿éÉ豸µÄÈ«³Æ£¬ÐèÒªÓëATÖ¸Áî+CGMM·µ»ØµÄÉ豸ȫ³ÆÍêÈ«Ò»Ö£¬¸÷¸öÉ豸ȫ³ÆÓöººÅ¸ô¿ª #ÒòΪAndroidµÄÊôÐÔÖµ³¤¶ÈΪ92¸ö×Ö·û£¬¿ÉÒÔ°´ÕÕÕâ¸öģʽ×ÔÓÉÌí¼Óɾ³ýÖ§³ÖµÄÉ豸 rild.device.list0 =EM660C rild.device.list1 =EM660 rild.device.list2 =EM770 rild.device.list3 =E1750 rild.device.list4 =EC122 rild.device.list5 =EC169C rild.device.list6 =E1752 rild.device.list7 =K80 rild.device.list8 =K3765 rild.device.list9 =MU509 rild.device.list10 =EM560 rild.device.list11 =29 rild.device.list12 =E1550 rild.device.list13 =E1552 #Ä£¿éµÄril¶¯Ì¬¼ÓÔØ¿âÎļþÃû³ÆÁбí rild.libpath.list0 =/system/lib/libtcc89xx-evdo-em660-ril.so rild.libpath.list1 =/system/lib/libtcc89xx-evdo-em660-ril.so rild.libpath.list2 =/system/lib/libtcc89xx-wcdma-em770-ril.so rild.libpath.list3 =/system/lib/libtcc89xx-wcdma-em770-ril.so rild.libpath.list4 =/system/lib/libtcc89xx-evdo-em660-ril.so rild.libpath.list5 =/system/lib/libtcc89xx-evdo-em660-ril.so rild.libpath.list6 =/system/lib/libtcc89xx-wcdma-em770-ril.so rild.libpath.list7 =/system/lib/libtcc89xx-wcdma-titan-ril.so rild.libpath.list8 =/system/lib/libtcc89xx-wcdma-em770-ril.so rild.libpath.list9 =/system/lib/libtcc89xx-wcdma-em770-ril.so rild.libpath.list10 =/system/lib/libtcc89xx-tdscdma-ril.so rild.libpath.list11 =/system/lib/libtcc89xx-wcdma-em770-ril.so rild.libpath.list12 =/system/lib/libtcc89xx-wcdma-em770-ril.so rild.libpath.list13 =/system/lib/libtcc89xx-wcdma-em770-ril.so #²»Í¬Ä£¿é¶ÔÓ¦µÄÆô¶¯²ÎÊý£¬Èç¹ûΪauto£¬Ôò±íʾ×Ô¶¯¼ì²âÆô¶¯²ÎÊý #Èç¹û²»Îªauto£¬ÄÇôÆäÖµ½«×÷Ϊ¸½´øµÄ²ÎÊý£¬Óë×Ô¶¯¼ì²âµÄÆô¶¯²ÎÊýÒ»Æð×éºÏ³É¸´ºÏ²ÎÊý×é #È磺rild.libargs.list6 =-x /dev/ttyUSB1£¬Èç¹û×Ô¶¯¼ì²âµ½µÄÆô¶¯²ÎÊýΪ/dev/ttyUSB0£¬ #ÄÇô×îÖյIJÎÊý½«Îª:-d /dev/ttyUSB0 -x /dev/ttyUSB1 rild.libargs.list0 =auto rild.libargs.list1 =auto rild.libargs.list2 =auto rild.libargs.list3 =auto rild.libargs.list4 =auto rild.libargs.list5 =auto rild.libargs.list6 =auto rild.libargs.list7 =-x /dev/ttyUSB1 rild.libargs.list8 =auto rild.libargs.list9 =auto rild.libargs.list10 =fixed:-d /dev/ttyACM2 rild.libargs.list11 =auto rild.libargs.list12 =auto rild.libargs.list13 =auto #ÆäËûһЩ²ÎÊý rild.gprs.status=unknow rild.device=unknow0 # # ADDITIONAL_BUILD_PROPERTIES # keyguard.no_require_sim=true ro.com.android.dateformat=MM-dd-yyyy ro.com.android.dataroaming=true ro.ril.hsxpa=1 ro.ril.gprsclass=10 ro.config.notification_sound=OnTheHunt.ogg ro.config.alarm_alert=Alarm_Classic.ogg ro.media.dec.jpeg.memcap=20000000 ro.media.dec.vid.max_width=1920 ro.media.dec.vid.max_height=1088 ro.system.hdmi_max_resolution=fullhd ro.system.hdmi_active=true ro.system.composite_active=false ro.system.component_active=false ro.system.hdmi_portable=true tcc.output.support.camera=0 tcc.hdmi.720p.fixed=0 ro.kernel.android.checkjni=1 ro.setupwizard.mode=OPTIONAL net.bt.name=Android dalvik.vm.stack-trace-file=/data/anr/traces.txt 

Para soportar tabletas de 10 pulgadas (y probablemente más grandes) es necesario agregar android:xlargeScreens="true" a su manifiesto, en la etiqueta de las supports-screens .

Otra discusión sobre este problema: la aplicación no aparece en Android Market para un dispositivo determinado (Android Market Filters)

xlargeScreens se introdujo en el nivel 9 de API, por lo que puede que tenga que ajustar qué archivo JAR de Android compilar en su IDE, pero todavía puede establecer su minSDKVersion a menos de 9.

En la documentación de Android Market y de filtrado basado en funciones :

Android Market filtra las aplicaciones que son visibles para los usuarios, para que los usuarios puedan ver y descargar sólo las aplicaciones compatibles con sus dispositivos. Una de las formas en que las aplicaciones de filtros de mercado son compatibles con las características.

Para determinar la compatibilidad de las características de una aplicación con el dispositivo de un usuario determinado, el servicio de Android Market compara:

  • Funciones requeridas por la aplicación: una aplicación declara características en elementos <uses-feature> en su manifiesto con …
  • Características disponibles en el dispositivo, en hardware o software: un dispositivo informa de las funciones que admite como propiedades de sistema de sólo lectura.

Lo que esto significa es que la razón por la que su aplicación no es compatible con ciertos dispositivos (como en Android Market) se debe a que se han indicado explícitamente las características que no están disponibles en ese dispositivo.

Por ejemplo, al usar android.hardware.telephony , está excluyendo efectivamente la mayoría de las tablets actualmente disponibles, ya que no son teléfonos tradicionales. Como tal, Android Market indicará que su aplicación no es compatible con estos dispositivos.

La misma lógica se aplica a android.hardware.microphone , android.hardware.camera , etc.

Editar: @ManfredMoser señaló correctamente que estableció todos los elementos booleanos en falso y ya que no ha publicado su AndroidManifest.xml completo, echar un vistazo a los requisitos de función implícita y ver si alguno de los permisos que solicitó corresponden a hardware que No está disponible en su (s) dispositivo (s) de prueba.

  • Obtener la etiqueta de referencias de Google Analytics para Android
  • Notificación para abrir Android Market
  • Vista web de Android, inicie la actividad ACTION_VIEW cuando la URL no pueda ser manejada por webview
  • Suscripción de Google PlayIm no presente
  • Sólo orientar dispositivos de alta resolución (píxeles) en Android Market
  • ¿Por qué no se muestra mi aplicación en Google Play? Ahora publicado
  • Facturación de Google Play en aplicaciones que ofrece un elemento de forma gratuita
  • <Compatible-pantallas> en Android
  • La aplicación es incompatible con todos tus dispositivos
  • Eliminar apk en la prueba alfa para cargar una diferente con el mismo código de versión
  • ¿Estoy recibiendo estos pasos correctamente para comprobar la suscripción de facturación de un usuario en la aplicación?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.