# Guia de Build do Plugin Flutter Smartface

Este guia explica como buildar o plugin Flutter Smartface antes de publicá-lo no pub.dev.

## Pré-requisitos

- Flutter SDK instalado e configurado
- Android SDK configurado (para testes Android)
- Xcode instalado (para testes iOS - apenas no macOS)

## Processo de Build

### 1. Executar o script automático

```bash
./build_plugin.sh
```

Este script executa automaticamente todos os passos necessários para buildar o plugin.

### 2. Processo manual (passo a passo)

Se preferir executar manualmente:

#### a) Verificar ambiente
```bash
flutter doctor
```

#### b) Limpar e instalar dependências
```bash
flutter clean
flutter pub get
```

#### c) Executar análise de código
```bash
flutter analyze
```

#### d) Executar testes
```bash
flutter test
```

#### e) Verificar formatação
```bash
dart format --set-exit-if-changed .
```

#### f) Instalar dependências do exemplo
```bash
cd example
flutter pub get
cd ..
```

#### g) Testar build do exemplo
```bash
cd example
flutter build apk --debug
cd ..
```

#### h) Verificar se pode ser publicado
```bash
flutter pub publish --dry-run
```

## Problemas Comuns e Soluções

### 1. Arquivo .iml sendo ignorado pelo .gitignore

**Problema**: `flutter_smartface.iml` está no `.gitignore` mas commitado.

**Solução**: O arquivo `.pubignore` já foi configurado para ignorar este arquivo durante a publicação.

### 2. Testes falhando

**Problema**: Os testes podem falhar porque precisam de uma inicialização do Flutter.

**Solução**: Execute os testes em um ambiente com Flutter inicializado ou ignore os testes unitários básicos por enquanto.

### 3. Warnings na análise de código

**Solução**: Revise os warnings mostrados por `flutter analyze` e corrija os que são relevantes para seu caso.

## Verificações Antes da Publicação

### 1. Versão no pubspec.yaml
- Verifique se a versão está correta no `pubspec.yaml`
- Siga semantic versioning (semver)

### 2. CHANGELOG.md
- Documente todas as mudanças na nova versão
- Inclua breaking changes, novos recursos e correções

### 3. Documentação
- Verifique se a documentação está atualizada
- Execute `dart doc` para gerar a documentação

### 4. Dependências
- Execute `flutter pub outdated` para verificar dependências desatualizadas
- Atualize conforme necessário

## Publicação Final

Quando tudo estiver pronto:

```bash
flutter pub publish
```

## Estrutura de Arquivos Importante

```
├── lib/                     # Código fonte do plugin
├── android/                 # Código nativo Android
├── ios/                     # Código nativo iOS
├── example/                 # Aplicativo exemplo
├── test/                    # Testes unitários
├── pubspec.yaml            # Configuração do plugin
├── CHANGELOG.md            # Histórico de mudanças
├── README.md               # Documentação principal
├── .pubignore              # Arquivos ignorados na publicação
└── build_plugin.sh         # Script de build automático
```

## Comandos Úteis

```bash
# Verificar dependências desatualizadas
flutter pub outdated

# Gerar documentação
dart doc

# Formatar código
dart format .

# Analisar código
flutter analyze

# Executar testes
flutter test

# Verificar se pode publicar
flutter pub publish --dry-run

# Publicar
flutter pub publish
```

## Dicas Importantes

1. **Sempre teste o plugin** no aplicativo exemplo antes de publicar
2. **Mantenha o CHANGELOG.md atualizado** com todas as mudanças
3. **Siga semantic versioning** para as versões
4. **Revise os warnings** da análise de código
5. **Teste em múltiplas plataformas** quando possível
6. **Mantenha a documentação atualizada**

## Suporte

Se encontrar problemas durante o build, verifique:
- Os logs detalhados dos comandos
- A documentação oficial do Flutter
- Os issues no repositório do projeto
