2.0 KiB
2.0 KiB
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:
- iOS é a plataforma prioritária de desenvolvimento e validação.
- Android entra depois, com adaptações isoladas por compilação condicional.
- Toda alteração deve preservar comportamento de iOS e evitar regressão cross-platform.
Como o projeto está estruturado
- Código compartilhado principal:
Sources/PediFoods/*(Swift/SwiftUI). - Entry point iOS:
Darwin/Sources/Main.swift. - Entry point Android:
Android/app/src/main/kotlin/Main.kt. - Configuração Skip:
Sources/PediFoods/Skip/skip.yml(mode: native). - Build/transpilação Android via plugin Skip (
skipstone) no target Swift Package.
Evidências no código (padrão já em uso)
- Uso extensivo de condicionais:
#if os(iOS)#if os(Android)#if canImport(UIKit)
- Dependência iOS-only no
Package.swift:LCEssentialscomcondition: .when(platforms: [.iOS])
- Exemplo claro de adaptação segura:
ContentView.swift:SnackbarCentercom implementação distinta para Android e iOS.
Regra prática para próximas tarefas
- Implementar primeiro para iOS.
- Validar iOS (build/execução/comportamento).
- Só depois adaptar Android, sempre em bloco condicional separado.
- Nunca alterar caminho iOS por causa de ajuste Android.
- 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:
- iOS com Launch Screen gerado automaticamente (
INFOPLIST_KEY_UILaunchScreen_Generation = YES). - Android sem implementação custom de splash dedicada no
res/values+ tema de launch.
Implicação:
- Mudança de splash para iOS pode ser feita sem tocar Android.
- Quando Android for tratado, deve entrar em camada própria (tema/recursos Android), sem impactar o fluxo iOS.