Hesito em fazer essa pergunta, porque parece que muitas pessoas têm um problema semelhante e, ainda assim, não encontrei nenhuma solução que resolva meu caso particular.
Desenvolvi um aplicativo Android ( link para o aplicativo real ) e o carreguei na Play Store. A Play Store diz
"This app is incompatible with your XT Mobile Network HTC HTC Wildfire S A510b."
Claro que é o telefone no qual desenvolvi o aplicativo, então deve ser compatível. Algumas pessoas com outros dispositivos dizem que é compatível, outras dizem que é incompatível, mas não consigo encontrar nenhuma tendência. (Aparentemente, não conheço muitas pessoas com dispositivos Android.)
Eu tentei o seguinte:
mover um arquivo grande para fora do
res/raw
diretório, conforme sugerido por esta resposta . O único arquivo ali era um arquivo de texto de aproximadamente 700 kB, mas eu o moviassets/
sem nenhuma alteração aparente.adicionar as seguintes duas afirmações de recurso:
<uses-feature android:name="android.hardware.faketouch" /> <uses-feature android:name="android.hardware.touchscreen" android:required="false" />
pensando que talvez meu telefone não alega oferecer suporte ao
android.hardware.touchscreen
recurso normal , mas, novamente, sem nenhuma mudança aparente.
Ao fazer o upload do APK para a Play Store, o único filtro que relata como ativo é o android.hardware.faketouch
recurso.
O seguinte é o resultado 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'
e para completar, meu arquivo de manifesto:
<?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>
Na seção "Disponibilidade do dispositivo" da Play store, posso ver que todos os dispositivos HTC, incluindo o Wildfire S, são compatíveis, exceto "G1 (truta)" e "Touch Viva (opala)", sejam eles quais forem. Na verdade, vejo que "Wildfire S (marvel)" e "Wildfire S A515c (marvelc)" estão listados como compatíveis, mas meu "Wildfire S A510b" não é mencionado especificamente. Esse tipo de identificador de submodelo pode importar tanto? Consegui baixar vários outros aplicativos do Google Play para o meu telefone sem problemas.
A única coisa que não fiz neste momento é esperar de 4 a 6 horas após enviar a versão mais recente (como neste comentário ) para ver se ela ainda diz que é incompatível com meu telefone. No entanto, a página da Play Store atualmente mostra 1.0.2, que é o último que carreguei.
fonte
handleSilentException
método para relatar silenciosamente. Ele pelo menos informará em qual hardware o aplicativo está funcionando.Respostas:
A resposta parece estar relacionada exclusivamente ao tamanho do aplicativo. Eu criei um aplicativo simples "hello world" sem nada de especial no arquivo de manifesto, fiz o upload para a Play Store e foi relatado como compatível com meu dispositivo.
Não mudei nada neste aplicativo, exceto adicionar mais conteúdo ao
res/drawable
diretório. Quando o.apk
tamanho atingiu cerca de 32 MB, a Play store começou a relatar que meu aplicativo era incompatível com meu telefone.Tentarei entrar em contato com o suporte ao desenvolvedor do Google e pedir esclarecimentos sobre o motivo desse limite.
ATUALIZAÇÃO : aqui está a resposta do suporte ao desenvolvedor do Google para isso:
Acabei resolvendo meu problema convertendo todos os arquivos PNG para JPG, com uma pequena perda de qualidade. O
.apk
arquivo agora tem 28 MB, o que está abaixo de qualquer limite que o Google Play está aplicando ao meu telefone.Eu também removi todas as
<uses-feature>
coisas, e agora tenho apenas isto:fonte
Também encontrei isso - fiz todo o meu desenvolvimento em um Lenovo IdeaTab A2107A-F e pude executar compilações de desenvolvimento nele e até mesmo lançar APKs assinados (instalados com
adb install
) sem problemas. Assim que foi publicado no modo de teste Alpha e disponível no Google Play, recebi a mensagem de erro "incompatível com o seu dispositivo".Acontece que eu coloquei
AndroidManifest.xml
o seguinte em um tutorial:Bem, o Lenovo IdeaTab A2107A-F não tem uma câmera com autofoco (que aprendi em http://www.phonearena.com/phones/Lenovo-IdeaTab-A2107_id7611 , em Contras: falta câmera com autofoco). Independentemente de eu estar usando esse recurso, o Google Play disse que não. Depois que ele foi removido, reconstruí meu APK, carreguei-o no Google Play e, com certeza, meu IdeaTab estava agora na lista de dispositivos compatíveis.
Portanto,
<uses-feature>
verifique novamente a cada e se você está copiando e colando da web novamente. Provavelmente, você solicitou algum recurso que nem está usando.fonte
Também experimentei esse problema ao desenvolver um aplicativo para um cliente que queria ter vídeos offline disponíveis em seu aplicativo. Eu escrevi uma postagem no blog sobre por que o aplicativo em que trabalhei por meses não aparecia na Play Store para o meu dispositivo (a postagem pode ser encontrada aqui ). Achei o mesmo que @Greg Hewgill encontrou: limitações de partição de cache em alguns dispositivos .
A viagem não parou para mim lá. O cliente queria ter esses vídeos no aplicativo e não queria que a qualidade do vídeo diminuísse. Depois de alguma pesquisa, descobri que usar arquivos de expansão era a solução perfeita para o nosso problema.
Para compartilhar meu conhecimento com a comunidade Android, dei uma palestra na droidconNL 2012 sobre arquivos de expansão. Criei uma apresentação e um código de exemplo para ilustrar como pode ser fácil começar a usar arquivos de expansão. Para qualquer um de vocês que deseje usar arquivos de expansão para resolver este problema, fique à vontade para verificar a postagem que contém a apresentação e o código de amostra
fonte
Você pode querer tentar definir o atributo suportes-telas:
O Wildfire tem uma tela pequena e, de acordo com a documentação, esse atributo deve ser padronizado como "verdadeiro" em todos os casos, mas existem problemas conhecidos com as configurações de telas de suporte em telefones diferentes, então eu tentaria de qualquer maneira.
Além disso - como sugere David - sempre compile e use a versão mais atual da API do Android, a menos que você tenha fortes motivos para não fazê-lo. Quase todo SDK anterior ao 2.2 tem algum problema sério ou comportamento estranho; o último SDK ajuda a resolver ou encobrir muitos (embora não todos) deles. Você pode (e deve) usar a ferramenta Lint para verificar se seu aplicativo permanece compatível com a API 4 ao preparar um lançamento.
fonte
Finlay, enfrentei o mesmo problema em meu aplicativo. Eu desenvolvi o aplicativo Phone Gap para
android:minSdkVersion="7" & android:targetSdkVersion="18"
uma versão recente da plataforma Android.Eu encontrei o problema usando o Google Docs
Pode ser o problema é que escrevi alguma função JS que funciona
KEY-CODE
para validar apenas alfabetos e números, mas o teclado tem um código de tecla diferente, especialmente para teclado de computador e teclado móvel. Então esse era o meu problema.Não tenho certeza se minha resposta está correta ou não e pode ser possível que a resposta acima seja mais risonha, mas tentarei listar alguns pontos que devem ser cuidados enquanto estamos construindo o aplicativo. Espero que você siga isso para resolver esse tipo de problema.
Use o de
android:minSdkVersion="?"
acordo com sua necessidade eandroid:targetSdkVersion="?"
deve ser o mais recente em que seu aplicativo será direcionado. ver maisTente adicionar apenas as permissões que serão usadas em seu aplicativo e remover todas as desnecessárias.
Confira a tela compatível com o aplicativo
Pode ser que você tenha implementado algum código de fantasia ou widget de fantasia que não poderia ser executado em algum dispositivo ou guia tarde, então antes de escrever o código longo, primeiro tente escrever algum código beta e teste se seu código será executado em todos os dispositivos ou não .
E espero que o Google publique uma ferramenta que possa validar seu código antes de fazer o upload do aplicativo e também diga que por algum motivo específico não temos permissão para executar seu aplicativo em algum dispositivo para que possamos resolvê-lo facilmente.
fonte
Tenho algumas sugestões:
Em primeiro lugar, você parece estar usando a API 4 como alvo. AFAIK, é uma boa prática sempre compilar com o SDK mais recente e configurar seu de
android:minSdkVersion
acordo.Com isso em mente, lembre-se de que o
android:required
atributo foi adicionado na API 5 :Portanto, sugiro que você compile com o SDK 15, defina
targetSdkVersion
também como 15 e forneça essa funcionalidade.Também mostra aqui, no site do Play, como incompatível com qualquer dispositivo que eu tenha que seja (coincidência?) Gingerbread (aqui Galaxy Ace e Galaxy Y). Mas mostra como compatível com meu Galaxy Tab 10.1 ( Honeycomb ), Nexus S e Galaxy Nexus (ambos no ICS ).
Isso também me deixou pensando, e esse é um palpite muito
android.hardware.faketouch
estranho , mas, como é API11 + , por que você não tenta removê-lo apenas para ver se funciona? Ou talvez tudo esteja relacionado de qualquer maneira, já que você está tentando usar features (faketouch
) e orequired
atributo que não estão disponíveis na API 4. E, neste caso, você deve compilar com a API mais recente.Eu tentaria isso primeiro e removeria o
faketouch
requisito apenas como último recurso (é claro) --- uma vez que funciona durante o desenvolvimento, diria que é apenas uma questão de o aplicativo compilado não reconhecer o recurso (devido aos requisitos do SDK) , deixando assim problemas de filtragem inesperados no Play.Desculpe se esse palpite não responde à sua pergunta, mas é muito difícil diagnosticar esse tipo de problema e localizar a solução sem realmente testar. Ou pelo menos para mim, sem todo o conhecimento adequado de como o Play realmente filtra os aplicativos.
Boa sorte.
fonte
<uses-feature>
tag, era uma tentativa de torná-lo compatível com mais dispositivos em vez de menos. Vou tentar mudar as tags de versão do SDK, que parece ser a abordagem mais provável. Devo acrescentar que useiminSdkVersion="4"
porque essa versão não implica mais algumas permissões (ler estado do telefone, modificar cartão SD) que meu aplicativo não precisa.android:minSdkVersion="5" android:targetSdkVersion="15"
também não ajudou. Entrei em contato com o suporte ao desenvolvedor do Google Play e espero que eles possam me dizer o porquê. Com certeza seria bom se o motivo da filtragem fosse mostrado na página do aplicativo Play.faketouch
comorequired= false
?<uses-feature>
tags porque o suporte do Google me disse que o motivo de não estar disponível para o meu dispositivo era oandroid.hardware.faketouch
recurso. Isso parece ridículo, especialmente porque uma das minhas versões anteriores também não tinha as<uses-feature>
tags, mas tanto faz. Estou aguardando a resposta deles e não quero confundi-los enviando outra versão. Seria bom se houvesse uma maneira de testar isso sem enviar e publicar repetidamente novos APKs.Permissões que implicam requisitos de recursos
Por exemplo, o recurso android.hardware.bluetooth foi adicionado no Android 2.2 (API nível 8), mas a API bluetooth a que se refere foi adicionada no Android 2.0 (API nível 5). Por causa disso, alguns aplicativos foram capazes de usar a API antes de poderem declarar que exigem a API por meio do sistema.
Para evitar que esses aplicativos sejam disponibilizados involuntariamente, o Google Play presume que certas permissões relacionadas ao hardware indicam que os recursos de hardware subjacentes são necessários por padrão. Por exemplo, os aplicativos que usam Bluetooth devem solicitar a permissão BLUETOOTH em um elemento - para aplicativos legados, o Google Play assume que a declaração de permissão significa que o recurso android.hardware.bluetooth subjacente é exigido pelo aplicativo e configura a filtragem com base nesse recurso .
A tabela a seguir lista as permissões que implicam em requisitos de recursos equivalentes aos declarados nos elementos. Observe que as declarações, incluindo qualquer atributo android: required declarado, sempre têm precedência sobre os recursos implícitos nas permissões abaixo.
Para qualquer uma das permissões abaixo, você pode desabilitar a filtragem com base no recurso implícito, declarando explicitamente o recurso implícito, em um elemento, com um atributo android: required = "false". Por exemplo, para desativar qualquer filtragem com base na permissão CAMERA, você adicionaria esta declaração ao arquivo de manifesto:
http://developer.android.com/guide/topics/manifest/uses-feature-element.html#permissions
fonte
Para fornecer uma solução extra para o problema acima 'Este aplicativo é incompatível com o seu ...', deixe-me compartilhar minha solução para uma causa de problema diferente. Tentei instalar um aplicativo em um dispositivo Samsung Galaxy Y (GT-S6350) simples e recebi este erro da Play Store. Para testar várias configurações do AndroidManifest, criei uma conta e segui a rotina conforme descrito em https://stackoverflow.com/a/5449397/372838 até que meu dispositivo aparecesse na lista de dispositivos suportados.
Descobriu-se que muitos dispositivos se tornam incompatíveis quando você usa a permissão da câmera:
<uses-permission android:name="android.permission.CAMERA" />
Quando removi essa permissão específica, o aplicativo estava disponível para 1180 dispositivos em vez de 870. Espero que ajude alguém
fonte
Típico, descobri logo após postar esta pergunta em desespero; a ferramenta que eu procurava era:
fonte
Embora já existam algumas respostas, achei que minha resposta poderia ajudar alguns que têm exatamente o mesmo problema que o meu. No meu caso, o problema é causado pelas seguintes permissões adicionadas por sugestão de uma rede de anunciantes:
A consequência das permissões acima é que os seguintes recursos são adicionados automaticamente:
O motivo é que "o Google Play tenta descobrir os requisitos de recursos implícitos de um aplicativo examinando outros elementos declarados no arquivo de manifesto, especificamente os elementos". Dois dos meus dispositivos de teste não têm os recursos acima, então o aplicativo se tornou incompatível com eles. Remover essas permissões resolveu o problema imediatamente.
fonte
Encontrei outra maneira pela qual esse problema ocorre:
o sistema operacional original do meu telefone LG era o Froyo (Android 2.2) e foi atualizado para o ICS (Android 4.0.4). Mas o Google Play Developers 'Console mostra que ele detecta meu telefone como um dispositivo Froyo. (O Google Play não permitiu o download do aplicativo devido à falsa 'incompatibilidade', mas de alguma forma ainda detecta a instalação.)
As configurações do telefone, em 'software', mostram ICS V4.0.4. Parece que as informações do servidor do Google Play para o telefone não são atualizadas para refletir a atualização do ICS no dispositivo. O manifesto do aplicativo minSDK é definido como Honeycomb (3.0), então é claro que o Google Play filtra o aplicativo.
Além disso, é interessante:o aplicativo usa Faturamento no aplicativo V3. A primeira vez através do IabHelper permite que o aplicativo faça compras através do serviço Google Play. Mas depois que a compra é feita, ela NÃO é colocada no estoque e o IabHelper informa que nenhum item é de sua propriedade. Mensagens de depuração mostram um resultado de 'compra falhada' da compra, embora a janela do Google Play anuncie "compra bem-sucedida".
fonte
Eu tive o mesmo problema. Foi causado por ter códigos de versão e números diferentes no meu manifesto e no script de compilação do Gradle. Eu resolvi isso removendo o código e o número da versão do meu manifesto e deixando o gradle cuidar disso.
fonte
Eu também tive o mesmo problema. Publiquei um aplicativo em modo de teste criado com React Native 59. não era compatível com determinado testador. A mensagem não foi clara sobre o motivo pelo qual o aplicativo não é compatível, depois que descobri que restringi o aplicativo para estar disponível apenas em um determinado país. esse era o problema, mas como eu disse a mensagem não era clara. no Play Store WebApp, a mensagem é: "este aplicativo não é compatível com o seu dispositivo". no aplicativo móvel, a mensagem "Este aplicativo não está disponível em seu país"
fonte
Se você estiver aqui em 2020 e achar que o dispositivo que está recebendo a mensagem de erro deve ser compatível:
[ https://support.getupside.com/hc/en-us/articles/226667067--Device-not-compatible-error-message-in-Google-Play-Store]
Aqui está um link para a página oficial de suporte do Google, que você pode vincular a seus usuários sobre como limpar o cache: https://support.google.com/googleplay/answer/7513003
fonte