> ## Documentation Index
> Fetch the complete documentation index at: https://docs.airys.chat/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuração de Desenvolvimento do Aplicativo Móvel

> Guia de configuração para o desenvolvimento do aplicativo móvel do AirysChat

# Guia de configuração para o aplicativo móvel

Guia completo para configurar o aplicativo móvel do AirysChat para desenvolvimento e contribuição.

## Instalação e configuração

### Pré-requisitos

Antes de começar, certifique-se de ter o seguinte instalado:

* [Node.js](https://nodejs.org/en/download/) (Última versão LTS)
* [React Native CLI](https://reactnative.dev/docs/environment-setup)
* [Expo CLI](https://docs.expo.dev/get-started/installation/)
* [Expo Account](https://expo.dev/signup)

<Note>
  Para saber mais sobre as instruções mais atualizadas, consulte o guia disponível [aqui](https://docs.expo.dev/get-started/set-up-your-environment/).
</Note>

### Clonar o repositório

```bash theme={null}
git clone git@github.com:airyschat/airyschat-mobile-app.git
cd airyschat-mobile-app
```

### Instalar dependências

```bash theme={null}
pnpm install
```

### Instalar o Expo CLI

```bash theme={null}
pnpm install -g expo-cli
```

## Variáveis de Ambiente

Crie seu arquivo de configuração de ambiente:

```bash theme={null}
cp .env.example .env
```

Configure as seguintes variáveis de ambiente:

| Nome                                          | Descrição                                 | Valor Padrão                                           | Obrigatório |
| --------------------------------------------- | ----------------------------------------- | ------------------------------------------------------ | ----------- |
| EXPO\_PUBLIC\_AIRYSCHAT\_WEBSITE\_TOKEN       | Token do widget web para suporte no app   | -                                                      | Não         |
| EXPO\_PUBLIC\_AIRYSCHAT\_BASE\_URL            | URL da instalação self-hosted             | [https://app.airyschat.com](https://app.airyschat.com) | Sim         |
| EXPO\_PUBLIC\_JUNE\_SDK\_KEY                  | Chave SDK de analytics do June            | -                                                      | Não         |
| EXPO\_PUBLIC\_MINIMUM\_AIRYSCHAT\_VERSION     | Versão mínima suportada do AirysChat      | -                                                      | Sim         |
| EXPO\_PUBLIC\_SENTRY\_DSN                     | URL DSN do Sentry para relatórios de erro | -                                                      | Não         |
| EXPO\_PUBLIC\_PROJECT\_ID                     | Identificador do projeto Expo             | -                                                      | Sim         |
| EXPO\_PUBLIC\_APP\_SLUG                       | Slug do aplicativo para o Expo            | -                                                      | Sim         |
| EXPO\_PUBLIC\_SENTRY\_PROJECT\_NAME           | Nome do projeto no Sentry                 | -                                                      | Não         |
| EXPO\_PUBLIC\_SENTRY\_ORG\_NAME               | Nome da organização no Sentry             | -                                                      | Não         |
| EXPO\_PUBLIC\_IOS\_GOOGLE\_SERVICES\_FILE     | Caminho para o arquivo config do iOS      | -                                                      | Não         |
| EXPO\_PUBLIC\_ANDROID\_GOOGLE\_SERVICES\_FILE | Caminho para o arquivo config do Android  | -                                                      | Não         |
| EXPO\_APPLE\_ID                               | ID da conta do Apple Developer            | -                                                      | Não         |
| EXPO\_APPLE\_TEAM\_ID                         | ID da equipe do Apple Developer           | -                                                      | Não         |
| EXPO\_STORYBOOK\_ENABLED                      | Ativar/desativar Storybook                | false                                                  | Não         |

## Gerar o código nativo

```bash theme={null}
pnpm generate
```

Este comando gera diretórios nativos para Android e iOS usando o [Prebuild](https://docs.expo.dev/workflow/continuous-native-generation/).

<Warning>
  Você precisa executar o pre-build se adicionar uma nova dependência nativa ao seu projeto ou alterar a configuração do projeto no arquivo de configuração do app do Expo (app.config.ts).
</Warning>

## Como executar o aplicativo

Conecte seu dispositivo iPhone/Android e execute o seguinte comando para instalar o aplicativo no seu dispositivo.

### Desenvolvimento iOS

```bash theme={null}
pnpm run:ios
```

### Desenvolvimento Android

```bash theme={null}
pnpm run:android
```

## Instalação de Pacotes

<Warning>
  Por favor, sempre instale pacotes usando o comando `npx expo install package-name` ao invés de `pnpm install package-name`.
</Warning>

Isso é crucial para dependências nativas porque o Expo instalará automaticamente a versão compatível correta, enquanto o pnpm/yarn/npm pode instalar a versão mais recente, que pode não ser compatível.

```bash theme={null}
# Forma correta de instalar pacotes
npx expo install package-name

# Forma incorreta (pode causar problemas de compatibilidade)
pnpm install package-name
```

## Notificações push

Se você estiver usando a edição community do AirysChat com o [aplicativo móvel oficial](https://www.airyschat.com/mobile-apps), as notificações push funcionam prontas para uso sem nenhuma configuração adicional.

Se você estiver construindo um aplicativo com marca personalizada, consulte o [guia de aplicativo móvel personalizado](/self-hosted/custom-mobile-app) para Firebase, deep linking e configuração de build.

## Solução de problemas

<Accordion title="Problemas no Metro bundler">
  **Problema**: O Metro bundler falha ao iniciar ou empacotar

  **Solução**:

  ```bash theme={null}
  # Limpar cache e reiniciar
  pnpm clear
  pnpm start --reset-cache
  ```
</Accordion>

<Accordion title="Falha no build do iOS">
  **Problema**: Problemas com o simulador ou build do iOS

  **Solução**:

  * Certifique-se de que o Xcode esteja instalado corretamente
  * Verifique a compatibilidade de versão do simulador do iOS
  * Limpe os dados derivados (derived data) no Xcode
  * Reinicie o Metro bundler
</Accordion>

<Accordion title="Falha no build do Android">
  **Problema**: Problemas com o emulador ou build do Android

  **Solução**:

  * Verifique a configuração do Android Studio
  * Verifique as versões do SDK e ferramentas de build
  * Certifique-se de que o emulador está rodando
  * Limpe o cache do Gradle
</Accordion>

<Accordion title="Problemas no Expo CLI">
  **Problema**: Os comandos do Expo falham

  **Solução**:

  ```bash theme={null}
  # Atualizar Expo CLI
  npm install -g @expo/cli@latest

  # Login no Expo
  expo login

  # Limpar o cache do Expo
  expo r -c
  ```
</Accordion>

## Diretrizes de Contribuição

Ao contribuir para o aplicativo móvel:

1. **Siga os padrões de código**: Use as configurações do ESLint e Prettier
2. **Escreva testes**: Inclua testes unitários para novos recursos
3. **Teste em ambas as plataformas**: Garanta a compatibilidade com iOS e Android
4. **Atualize a documentação**: Documente novos recursos e mudanças
5. **Verifique o desempenho**: Monitore o impacto no desempenho do aplicativo

## Obtendo Ajuda

Se você encontrar problemas:

* **Documentação do Expo**: [Docs Oficiais do Expo](https://docs.expo.dev/)
* **Documentação do React Native**: [Docs do React Native](https://reactnative.dev/docs/getting-started)
* **Problemas no GitHub**: [Problemas do App Móvel](https://github.com/airyschat/airyschat-mobile-app/issues)
* **Suporte da Comunidade**: [Discord](https://discord.com/invite/cJXdrwS)

## Recursos Úteis

* **Desenvolvimento com Expo**: [https://docs.expo.dev/](https://docs.expo.dev/)
* **React Native**: [https://reactnative.dev/](https://reactnative.dev/)
* **EAS Build**: [https://docs.expo.dev/build/introduction/](https://docs.expo.dev/build/introduction/)
* **EAS Submit**: [https://docs.expo.dev/submit/introduction/](https://docs.expo.dev/submit/introduction/)

***

Seu ambiente de desenvolvimento do aplicativo móvel AirysChat está pronto! 📱
