Application Support é um diretório no sandbox do aplicativo iOS projetado para armazenar dados auxiliares necessários para o funcionamento do aplicativo, mas não criados diretamente pelo usuário. De acordo com o Apple File System Basics (2024), este diretório é ideal para arquivos de configuração, bancos de dados SQLite do Core Data, documentos em cache e outros dados que o aplicativo gera por conta própria. Ao contrário do Diretório Documents, o Application Support não aparece no iTunes File Sharing e o usuário não tem acesso direto a ele, o que protege os dados de serviço contra exclusão acidental.
Pontos principais
Application Support é um diretório no sandbox do aplicativo iOS projetado para armazenar dados que o aplicativo cria e usa para seu funcionamento, mas que não são documentos do usuário. Este é o local principal para configurações, bancos de dados, metadados em cache e outros arquivos auxiliares.
O iOS designa o Application Support como uma camada intermediária entre Documents (dados do usuário) e Caches (dados temporários). Os arquivos no Application Support podem ser relativamente permanentes, mas o usuário não deve ter acesso direto a eles — isso o distingue do Diretório Documents.
De acordo com a Documentação para Desenvolvedores da Apple (2024), o Application Support é o local recomendado para armazenar bancos de dados SQLite do Core Data, arquivos Realm, configurações em formato JSON/plist, materiais de referência baixados e outros dados que o aplicativo usa, mas que o usuário não criou explicitamente.
Importante: por padrão, o Application Support está incluído no backup do iCloud e iTunes. Se o aplicativo armazenar grandes quantidades de dados neste diretório que podem ser recriados (por exemplo, guias baixadas), é necessário definir a flag isExcludedFromBackup para os arquivos relevantes.
Em Swift, o caminho para o Diretório Application Support é obtido através de FileManager.urls(for: .applicationSupportDirectory). A Apple recomenda criar um subdiretório com o nome do aplicativo dentro do Application Support para isolar os dados.
import Foundation
let fileManager = FileManager.default
guard let appSupportURL = fileManager.urls(
for: .applicationSupportDirectory,
in: .userDomainMask
).first else { return }
// Create app subdirectory
let bundleID = Bundle.main.bundleIdentifier ?? "com.example.app"
let appDir = appSupportURL.appendingPathComponent(bundleID)
try fileManager.createDirectory(
at: appDir,
withIntermediateDirectories: true
)
O Objective-C usa NSSearchPathForDirectoriesInDomains com NSApplicationSupportDirectory. Assim como no Swift, é recomendado criar um subdiretório filho com o nome do aplicativo.
@import Foundation;
NSArray *paths = NSSearchPathForDirectoriesInDomains(
NSApplicationSupportDirectory,
NSUserDomainMask,
YES
);
NSString *appSupportPath = paths.firstObject;
NSString *appDir = [appSupportPath stringByAppendingPathComponent:@"com.example.app"];
Na primeira inicialização, o diretório Application Support pode não existir — ele deve ser criado usando createDirectory(at:withIntermediateDirectories:). Isso o diferencia do Diretório Documents, que é criado automaticamente pelo sistema.
Application Support é adequado para uma ampla gama de dados que o aplicativo usa para seu funcionamento. Escolher os dados certos para este diretório melhora a organização do sistema de arquivos e simplifica o backup.
Os arquivos SQLite do Core Data são criados no Application Support por padrão. O Realm também recomenda colocar bancos de dados neste diretório. Isso isola os documentos do usuário dos bancos de dados internos do aplicativo.
Arquivos JSON, plist, XML com configurações do aplicativo, Feature Flags, metadados de usuário em cache (mas não tokens de autenticação — para eles use Keychain).
| Tipo de dado | Application Support | Alternativa |
|---|---|---|
| SQLite Core Data | Sim (padrão) | — |
| Configurações .plist / .json | Sim | UserDefaults (para simples) |
| Materiais de referência baixados | Sim | Documents (se para o usuário) |
| Registros do aplicativo | Condicionalmente | Caches (para registros) |
| Tokens de autenticação | Não | Keychain |
Critério de seleção: se os dados são criados e usados pelo aplicativo, não pelo usuário, e devem persistir entre execuções — seu lugar é no Application Support.
Core Data é um dos principais consumidores do Application Support. Ao criar um NSPersistentContainer, o Core Data coloca automaticamente os arquivos SQLite em Library/Application Support com um nome único baseado no nome do modelo.
Entender onde o Core Data armazena arquivos é fundamental para migrações, backup e depuração. Principais arquivos: .sqlite (dados), .sqlite-wal (Write-Ahead Log), .sqlite-shm (Shared Memory).
import CoreData
// Create Core Data container
let container = NSPersistentContainer(name: "MyAppModel")
// Custom store URL directory
guard let appSupportURL = FileManager.default
.urls(for: .applicationSupportDirectory,
in: .userDomainMask).first else { return }
let storeURL = appSupportURL
.appendingPathComponent("MyAppModel.sqlite")
let description = NSPersistentStoreDescription(url: storeURL)
container.persistentStoreDescriptions = [description]
Ao usar a sincronização do Core Data com CloudKit, o arquivo SQLite permanece no Application Support e o CloudKit atua como uma camada de transporte. Neste caso, é importante não excluir arquivos do backup — caso contrário, a sincronização entre dispositivos pode falhar.
A diferença entre Application Support e Documents é uma das mais importantes para organizar corretamente a estrutura de arquivos do aplicativo iOS. Escolher incorretamente pode levar o usuário a excluir acidentalmente dados importantes do aplicativo ou, inversamente, não conseguir encontrar seus arquivos.
| Parâmetro | Application Support | Diretório Documents |
|---|---|---|
| Acesso do usuário | Não (oculto) | Via iTunes File Sharing |
| Tipo de dado | Dados de serviço do aplicativo | Documentos do usuário |
| Backup iCloud | Sim (padrão) | Sim (padrão) |
| Risco de exclusão | Baixo (sem acesso) | Médio (acessível ao usuário) |
| Exemplo | SQLite Core Data | PDF exportado |
Regra simples: se o usuário deve ver o arquivo e poder excluí-lo — use Documents. Se o arquivo é necessário para o aplicativo funcionar, mas o usuário não precisa saber dele — use Application Support. Se os dados podem ser recriados — use Caches.
Trabalhar com Application Support requer considerar várias características que o distinguem de outros diretórios do sandbox. Seguir essas práticas ajuda a evitar perda de dados, problemas de migração e comportamentos inesperados do aplicativo.
Ao contrário do Documents, o Application Support pode não existir na primeira inicialização. Use createDirectory(at:withIntermediateDirectories:) com o parâmetro withIntermediateDirectories: true para garantir a criação de toda a cadeia de subdiretórios.
Crie um subdiretório com o Bundle Identifier dentro do Application Support. Isso isola os dados do seu aplicativo de outros aplicativos (embora o sandbox já forneça isolamento) e simplifica a migração ao mudar de provedor.
import Foundation
enum AppSupport {
static func ensureDirectory() throws -> URL {
let fm = FileManager.default
let baseURL = try fm.url(
for: .applicationSupportDirectory,
in: .userDomainMask,
appropriateFor: nil,
create: true
)
let appDir = baseURL
.appendingPathComponent(Bundle.main.bundleIdentifier ?? "default")
try fm.createDirectory(at: appDir, withIntermediateDirectories: true)
return appDir
}
}
Seguir essas práticas garante que os dados de serviço do aplicativo estejam organizados corretamente, protegidos contra exclusão acidental pelo usuário e restaurados corretamente a partir de backups.
Perguntas frequentes
Sim, o Application Support não é criado automaticamente ao instalar o aplicativo. Ao contrário do Documents e Caches, que o sistema cria na primeira inicialização, o Application Support deve ser criado pelo desenvolvedor usando FileManager.createDirectory(at:withIntermediateDirectories:). Isso geralmente é feito no método application(_:didFinishLaunchingWithOptions:).
Não, através da interface padrão do iOS (Files, iTunes) o usuário não tem acesso ao Application Support. No entanto, quando o próprio aplicativo é excluído, todo o sandbox, incluindo o Application Support, é completamente removido. O backup do iCloud permanece até a restauração ou exclusão manual.
Para vídeos baixados destinados ao usuário, é melhor usar o Diretório Documents para que o usuário possa gerenciar esses arquivos através do Files. Se o vídeo faz parte do cache interno do aplicativo (por exemplo, conteúdo de treinamento offline), o Application Support pode ser usado com a flag isExcludedFromBackup para arquivos grandes.
Adicione versionamento de subdiretórios dentro do Application Support. Ao atualizar, verifique a versão atual dos dados e, se necessário, crie um novo subdiretório, mantendo o antigo para rollback. Exclua o diretório antigo somente após confirmar que todos os usuários migraram com sucesso para a nova versão dos dados.
Indiretamente — sim. Se o Application Support contiver dezenas de milhares de arquivos pequenos, o FileManager.enumerator pode retardar a inicialização. Recomenda-se limitar o número de arquivos no Application Support (não mais que 1000) e usar bancos de dados (Core Data, Realm) em vez de muitos arquivos individuais para dados estruturados.
Resumo
Vamos desenvolver um aplicativo móvel chave na mão
A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.
Leia também