Commit
This commit is contained in:
52
PROJECT_ANALYSIS_SKIP.md
Normal file
52
PROJECT_ANALYSIS_SKIP.md
Normal file
@@ -0,0 +1,52 @@
|
||||
# Análise Técnica — Arquitetura Skip (PediFoods)
|
||||
|
||||
## Entendimento confirmado
|
||||
|
||||
O projeto usa **Skip com fonte principal em Swift/SwiftUI** e geração/transpilação para Android.
|
||||
|
||||
Diretriz operacional validada:
|
||||
|
||||
1. **iOS é a plataforma prioritária** de desenvolvimento e validação.
|
||||
2. **Android entra depois**, com adaptações isoladas por compilação condicional.
|
||||
3. Toda alteração deve preservar comportamento de iOS e evitar regressão cross-platform.
|
||||
|
||||
## Como o projeto está estruturado
|
||||
|
||||
1. Código compartilhado principal: `Sources/PediFoods/*` (Swift/SwiftUI).
|
||||
2. Entry point iOS: `Darwin/Sources/Main.swift`.
|
||||
3. Entry point Android: `Android/app/src/main/kotlin/Main.kt`.
|
||||
4. Configuração Skip: `Sources/PediFoods/Skip/skip.yml` (`mode: native`).
|
||||
5. Build/transpilação Android via plugin Skip (`skipstone`) no target Swift Package.
|
||||
|
||||
## Evidências no código (padrão já em uso)
|
||||
|
||||
1. Uso extensivo de condicionais:
|
||||
- `#if os(iOS)`
|
||||
- `#if os(Android)`
|
||||
- `#if canImport(UIKit)`
|
||||
2. Dependência iOS-only no `Package.swift`:
|
||||
- `LCEssentials` com `condition: .when(platforms: [.iOS])`
|
||||
3. Exemplo claro de adaptação segura:
|
||||
- `ContentView.swift`: `SnackbarCenter` com implementação distinta para Android e iOS.
|
||||
|
||||
## Regra prática para próximas tarefas
|
||||
|
||||
1. Implementar primeiro para iOS.
|
||||
2. Validar iOS (build/execução/comportamento).
|
||||
3. Só depois adaptar Android, sempre em bloco condicional separado.
|
||||
4. Nunca alterar caminho iOS por causa de ajuste Android.
|
||||
5. Em mudanças de UI de inicialização (ex.: splash), tratar iOS e Android em fluxos independentes.
|
||||
|
||||
## Nota específica para Splash
|
||||
|
||||
Estado atual identificado:
|
||||
|
||||
1. iOS com Launch Screen gerado automaticamente (`INFOPLIST_KEY_UILaunchScreen_Generation = YES`).
|
||||
2. Android sem implementação custom de splash dedicada no `res/values` + tema de launch.
|
||||
|
||||
Implicação:
|
||||
|
||||
1. Mudança de splash para iOS pode ser feita sem tocar Android.
|
||||
2. Quando Android for tratado, deve entrar em camada própria (tema/recursos Android), sem impactar o fluxo iOS.
|
||||
|
||||
Autor: Daniel Arantes Loverde
|
||||
Reference in New Issue
Block a user