>> Tecnologia Eletrônica >  >> Celulares e Acessórios >> Windows Mobile

Anti-Padrões de Código Android: O Que NÃO Fazer

Esta lista compila erros críticos a evitar ao desenvolver apps Android. Violar estes leva a crashes, vulnerabilidades segurança, ANRs, memory leaks, e rejeição Play Store.

Threading e Ciclo de Vida

  • Não bloqueie a thread principal (UI). Rede, DB, I/O arquivo, computação pesada → use Coroutines (Dispatchers.IO), RxJava, ExecutorService, ou WorkManager.
  • Não passe objetos Context entre framework e AndroidX Architecture Components (ViewModel, LiveData). Use Application context ou AndroidViewModel.

Segurança e Privacidade

  • Não acesse dados sensíveis (contatos, localização, microfone) sem permissão runtime e rationale claro para usuário.
  • Não exponha ContentProvider a outros apps a menos que explicitamente requerido (android:exported="false" por default; defina true apenas com permissões granulares).
  • Não conceda mais permissões que necessário. Siga princípio menor privilégio; remova não usados.
  • Não permita usuários alterarem escopo de permissões concedidas dinamicamente de formas que quebram suposições.
  • Não armazene PII ou segredos em cleartext (SharedPreferences, arquivos, logs). Use EncryptedSharedPreferences, Keystore, Jetpack Security.
  • Não confie em SharedPreferences padrão para dados sensíveis.
  • Não armazene senhas, tokens, API keys no código, assets, ou git. Use secure enclave, troca token backend, ou Android Keystore.
  • Não inclua API keys em commits git. Use gradle properties (local.properties) + secrets plugin, ou injeção segredos CI.

ContentProvider e Dados

  • Não use instâncias estáticas em ContentProvider; é singleton gerenciado pelo sistema.
  • Não torne ContentProvider gravável por default. Exija signature/permission.
  • Não permita apps conectarem via internet do usuário sem consentimento explícito do usuário e network security config.
  • Não armazene arquivos temporários no diretório raiz do app. Use cacheDir ou externalCacheDir; são auto-limpos.

Arquitetura e APIs

  • Não use reflection para chamar APIs hidden/framework. Mudam entre versões; apps quebram. Use SDK público ou equivalentes Jetpack.
  • Não hardcode URLs, usernames, passwords, segredos. Use BuildConfig, arquivos resources, ou delivery config seguro.
  • Não use múltiplas permissões simultaneamente sem fluxo claro consentimento usuário (dialog runtime permissions por grupo).

Por Que Isso Importa

Estes padrões causam:

  • ANRs (thread principal bloqueada).
  • Violações segurança (keys vazadas, providers expostos).
  • Crashes em updates OS (reflection, APIs hidden).
  • Violações política (rejeição Play Store por permissões amplas, tráfego cleartext).
  • Pesadelos manutenção (configs hardcoded, estado estático).

Siga Core App Quality Guidelines e Security Best Practices Android. Rode lint, detekt, e checagens OWASP MASTG no CI.