Skip to content

fix: proteção contra crash por ausência da biblioteca Elgin e otimização de APK#3

Open
ShelmoLucas wants to merge 1 commit into
brasizza:masterfrom
ShelmoLucas:fix/prevent-crash-missing-lib
Open

fix: proteção contra crash por ausência da biblioteca Elgin e otimização de APK#3
ShelmoLucas wants to merge 1 commit into
brasizza:masterfrom
ShelmoLucas:fix/prevent-crash-missing-lib

Conversation

@ShelmoLucas
Copy link
Copy Markdown
Contributor

📝 Descrição
Esta PR implementa proteções na inicialização do plugin nativo para garantir que o aplicativo não sofra um crash caso a biblioteca da Elgin (com.elgin.e1.Impressora) não esteja presente no projeto.
Anteriormente, se o arquivo .aar não fosse incluído nas dependências, o app encerrava inesperadamente logo na inicialização devido a um NoClassDefFoundError. Agora, o erro é capturado e tratado.

🚀 Motivação (Redução de APK e Flavors)
O principal motivo desta alteração é permitir que desenvolvedores utilizem Flavors para otimizar o tamanho do aplicativo:

  • Otimização de Tamanho: A biblioteca da Elgin é robusta e impacta significativamente o tamanho final do .apk / .aab.
  • Uso Condicional: Em projetos que possuem versões "Lite" ou flavors que não necessitam de impressão térmica, agora é possível remover a dependência da lib Elgin via Gradle.
  • Resultado: O aplicativo permanece estável mesmo sem a lib, e o tamanho do pacote gerado é drasticamente reduzido para os usuários que não precisam das funções de hardware.

🛠 Mudanças Realizadas
Proteção na Inicialização: Adicionado bloco try-catch (Throwable) ao instanciar a classe Printer no onAttachedToActivity, tratando falhas de carregamento de classe.
Feedback ao Flutter: Implementada verificação no onMethodCall. Se a impressora não estiver disponível, o plugin retorna o erro PRINTER_UNAVAILABLE em vez de causar um NullPointerException.
Refatoração do Handler: Corrigida a lógica do switch/case para evitar fall-through indesejado e separado o método getPlatformVersion das chamadas de hardware.
Ciclo de Vida: Adicionada verificação de nulidade ao desconectar o MethodChannel para evitar crashes em trocas rápidas de contexto.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant