8

Esto realmente me está poniendo de los nervios. ¡He intentado todo para que mi aplicación funcione en pestañas más exóticas!Android Market: "Este artículo no es compatible con tu dispositivo."

Ahora he publicado una aplicación de prueba (solo un proyecto de Android eclipse con nada más) para probar diferentes configuraciones de manifiesto. Sin embargo, no puedo hacer que mi aplicación funcione en mi cuenta con Android Market. Funciona en el dispositivo directamente con la depuración.

Lo que he probado: Android 2.2 Android 2.3

añadido este:

<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" /> 

intentado esto:

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

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

Lo extraño que no entiendo es que algunas aplicaciones funcionan y parece que no puedo encontrar por qué funcionan y no otras. Tengo diferentes dispositivos y uso la verificación de compatibilidad del sitio web y algunas aplicaciones que simplemente 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 sacar esta información? Supongo que esto debería ser un lugar para encontrar, ya que funciona a veces y a veces no.

Por favor, ayúdame a encontrar la manera de resolver esto.

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

---- ---- EDITAR ahora encontré y corrí este comando para mi aplicación de prueba: volcado ./aapt credencialización testapp.apk

entonces veo esto: soporta cualquier densidad: 'verdadera' densidades: '120' '160' ' 240 ' Ejecutando 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 agregar 200 a esa lista. No quiero cambiar la densidad en el dispositivo.


Esta 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 se puede ver se trata de un caso de prueba y no tengo nada de lo que realmente. ¡Y aún así no funciona! Este es el resultado de badgin volcado aapt:

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é lo escribo mal, demo sucia ;-).

extraje un apk desde una aplicación que he podido encontrar y podría instalar y la única diferencia real está 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 ser esto detener la aplicación de ser descarga?


Y este es el build.prop desde el 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 
+0

¿Puede darnos un ejemplo de un "dispositivo específico" que no funciona? –

+0

http://www.theouterhaven.net/2011/09/15/this-item-is-not-compatible-with-your-device/ http://geekprison.com/4430-android-market-solution-this -item-is-not-compatible-with-your-device/ –

+0

¿A qué nivel de API estás apuntando? –

Respuesta

0

Desde el Android Market and Feature-Based Filtering documentación:

Android Market filtra las aplicaciones que son visibles para los usuarios, por lo que los usuarios pueden ver y descargar solo aquellas aplicaciones que son compatibles con sus dispositivos . Una de las formas en que Market filtra las aplicaciones es por compatibilidad de características.

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

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

Lo que esto significa es que la razón por la que su aplicación no es compatible con algunos dispositivos (como en Android Market) es porque tiene explícitamente características indicadas que no están disponibles en ese dispositivo.

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

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

Editar: @ManfredMoser señaló correctamente que configure todos aquellos elementos boolean false y ya que no han publicado su totalidad AndroidManifest.xml, eche un vistazo a través del implicit feature requirements y vea si alguno de los permisos solicitados corresponde al hardware que no está disponible en su (s) dispositivo (s) de prueba.

+2

Con el mencionado requerido = "falso", este NO debería ser el caso .. –

+0

@ManfredMoser Gracias por señalar eso, lo extrañé por completo al leer la pregunta :) He editado mi respuesta para reflejar esto. –

+0

Manfre/Marvin: Exactamente, los he probado todos. – Ludvigj

1

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

Otra discusión sobre este tema: Application doesn't appear in Android Market for a certain device (Android Market Filters)

xlargeScreens se introdujo en el nivel de la API 9, por lo que es posible que tenga que ajustar qué archivo JAR Android se compila con en su IDE, pero todavía se puede configurar su minSDKVersion a continuación 9.

Cuestiones relacionadas