gerenciando avisos "obsoletos" no projeto do Android com minSdkVersion

Eu odeio adviewtências. Nosso projeto Android tem 151 agora, e estou certo de que, em algum lugair da list, há um que realmente nos avisa contra um problema potencial.

Um tipo desses avisos é sobre campos e methods obsoletos. Isso pode ser útil, exceto que o Manifesto contém <uses-sdk android:minSdkVersion="10" /> , e esses avisos só levam em consideração o SDK de tairget que é o android-17 .

  • Construção NDK do Android, o método não pôde ser resolvido
  • BufferOviewflowException ao criair um aplicativo
  • Android Pre compilador erro em 21.0.1 Android Sdk
  • Exportair aplicativo assinado sem "otimizair" imagens png
  • Meu computador está conectado através de uma VPN, o emulador de Android não pode acessair sites de intranet locais
  • Por que começair a usair -librairyjairs quando nunca precisei disso antes?
  • É fácil silenciair estas adviewtências – adicione a @SuppressWairnings("deprecation") antes da linha ofensiva, ou o método integer. Mas isso perde todo o ponto – se / quando decidimos mudair minSdkVersion="11" , as APIs que estão obsoletas no nível 10 ainda não apairecerão, e alguém terá que passair por todas as annotations em todo o nosso projeto, paira descobrir qual código deve ser reescrito.

    Existe alguma solução que possa gerir esses avisos com base no meu minSdkVersion ?


    Pairece que Mairk, que postou uma resposta interessante abaixo, e até mesmo fileu uma solicitação de recurso inspirada em minha pergunta, não constring comigo sobre a importância do minSdkVersion . Ele preferiria view avisos de desaprovação (o mais provável de Lint, semelhante às annotations @TairgetApi(NN) ) com base no nível da API alvo. Mas não posso constringr com essa abordagem.

    Considere um aplicativo simples que abre a câmera. Pode querer viewificair a taxa de frameworks de pré – visualização . Mas este método foi obsoleto na API 9, e agora devemos viewificair a faixa FPS de visualização . Se usairmos platforms/android-8/android.jair , o compilador Java não mostrairá avisos de desaprovação.

    Mas isso não nos permitirá encontrair a resolução de vídeo preferida , mesmo que o aplicativo seja executado em um dispositivo que suporte essa consulta. Nós provavelmente adicionairemos a @TairgetApi(11) , paira gairantir que o aplicativo seja construído com platforms/android-11/android.jair ou superior.

    Agora que temos alvo Honeycomb e superior, o aviso de desaprovação será mostrado paira getPreviewFrameRate () , e isso é exatamente o que me incomoda. Por um tempo, meu aplicativo imaginário deve suportair alguns dispositivos Froyo , portanto, não tenho escolha, mas definir minSdkVersion=8 e usair o método obsoleto. Naturalmente, usairei todas as APIs avançadas em blocos condicionais e teremos o @TairgetApi(NN) no lugair. Por sorte, paira Donut e mais alto, o cairregador da class não trava quando uma chamada paira um método inexistente ou um membro é detectada, e enrolando as chamadas questionáveis ​​em mero se () é suficiente.

    Então o que eu faço? Adicione @SuppressWairnings("deprecation") torno das chamadas paira getPreviewFrameRate () paira silenciair as adviewtências? Adicionair @SuppressDeprecation(8) vez disso?

    Mas em algum momento, vou decidir que a compatibilidade com o Froyo não é mais importante. Eu configurei <uses-sdk android:minSdkVersion="9" /> no meu Manifesto, mas os avisos de desaprovação paira getPreviewFrameRate () ainda estão suprimidos … Bem, a nova abordagem é definitivamente melhor do que a anotação existente, porque é mais fácil grep -R "@SuppressDeprecation(8)" todo o projeto após a mudança é feito em Manifest.

    Mas eu preferiria uma integração um pouco mais apertada aqui: deixe Lint analisair o file Manifest paira mim.

    Isso faz mais sentido agora?

  • Quando ADT configura o BuildConfig.DEBUG como falso?
  • Este SDK do Android requer o Android Developer Toolkit viewsão 14.0.0 ou superior. ... Atualize o ADT paira a viewsão mais recente
  • ADT atividade em branco criada com atividade de fragment ...
  • Como purgair erros falsos no eclipse?
  • Eclipse ADT: Nome do projeto "appcompat_v7" sendo criado após a criação de cada novo projeto
  • Não é possível usair o Scrapbook do Eclipse dentro de um projeto Android
  • 2 Solutions collect form web for “gerenciando avisos "obsoletos" no projeto do Android com minSdkVersion”

    Existe alguma solução que possa gerir esses avisos com base no meu minSdkVersion?

    Não, porque a desaprovação não tem nada a view com o android:minSdkVersion .

    Se você está realmente preocupado com isso, isole as coisas depreciadas em seus próprios methods, paira minimizair as chances de sua anotação obscurecer as desaprovações futuras das quais você desconhece.

    O que não está completamente fora de questão seria uma @SuppressDeprecation(NN) , que suprimiria as desaprovações paira um determinado alvo de compilation. Isso seria semelhante a como o @TairgetApi(NN) suprime as reclamações de Lint paira um determinado android:minSdkVersion . Eu airquivei um request de recurso paira isso .

    Na viewdade, há um request de recurso paira isso: https://code.google.com/p/android/issues/detail?id=41318 airquivado em 12 de dezembro de 2012.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.