Adobe AIR本地数据备份教程
AdobeAIR本地数据分三种存储机制:SharedObject(.sol文件)需手动复制对应文件夹;EncryptedLocalStore需在应用内编写代码导出为JSON文件;SQLite数据库直接复制.db文件即可备份。备份时需注意操作系统路径差异。
Adobe AIR 应用的本地数据备份看似简单,但遇到设备重装、应用意外卸载或系统故障时,登录凭证、用户设置、离线缓存内容都可能丢失。这些数据分布在三种互不兼容的存储机制中,备份方法各不相同。本文详细讲解如何完整备份这三种数据。

最常用且轻量的是 SharedObject,即 .sol 文件。它以二进制 AMF 格式存储数据,需手动找到系统特定目录,复制整个文件夹。
备份 SharedObject 数据(.sol 文件)
第一步:打开文件管理器,定位到 AIR 应用的专属数据目录。不同系统路径如下:
- Windows:C:\Users\[用户名]\AppData\Roaming\Macromedia\Flash Player\#SharedObjects
- macOS:~/Library/Preferences/Macromedia/Flash Player/#SharedObjects
- Linux:~/.macromedia/Flash_Player/#SharedObjects
第二步:在该目录下找到与应用 ID 匹配的子文件夹(通常包含包名或应用名,如 com.example.myapp),其中的所有 .sol 文件即该应用的 SharedObject 数据。
第三步:将整个子文件夹复制到外部硬盘或云盘,建议命名为“MyApp_SOL_20260604”等便于恢复的格式,并妥善保管。
导出加密本地存储(EncryptedLocalStore)数据
EncryptedLocalStore(ELS)专用于存储敏感信息(如 token、密码),数据受操作系统底层加密保护,无法直接读取文件内容。AIR 未提供内置导出接口,需通过代码实现备份。
在应用内嵌入导出逻辑:使用 ActionScript 调用 EncryptedLocalStore.getItem() 逐键读取所有值,通过 JSON.stringify() 转换为字符串,写入应用存储目录下的临时文件。示例代码:
var dataObj:Object = {};
for each (var key:String in EncryptedLocalStore.keys) {
dataObj[key] = EncryptedLocalStore.getItem(key);
}
var file:File = File.applicationStorageDirectory.resolvePath("els_backup.json");
var stream:FileStream = new FileStream();
stream.open(file, FileMode.WRITE);
stream.writeUTFBytes(JSON.stringify(dataObj));
stream.close();
关键提示:导出操作必须在原应用上下文中执行,脱离 AIR 沙箱环境将无法访问 ELS 数据。因此需确保应用正常运行再执行此代码。
备份本地 SQLite 数据库文件
嵌入式 SQLite 数据库在 AIR 应用中通常存储为 .db 或 .sqlite 文件,其路径由开发者在代码中指定,常见位置是 applicationStorageDirectory 或 documentsDirectory。
查找方法:查看源码中 SQLConnection.open() 调用前的 File.resolvePath() 参数,或在调试时输出 File.nativePath 以确认路径。
确认文件存在后,直接复制该 .db 文件即可,无需额外导出步骤。例如将 user_data.db 拖入备份文件夹,操作简单便捷。
