在 Android 的 flex 应用程序首次启动(或删除应用程序数据后)上,Flex 是否处理将资产文件从 assets/ 文件夹复制到 File.applicationStorageDirectory,或者开发人员负责检查文件是否存在,如果不存在,则从 assets/ 复制文件到 File.applicationStorageDirectory?
如果这没有得到答复,我不介意进一步调查并自己回答,我只是想知道是否有人会记住这一点。谢谢!
你使用 Flash Builder 吗?
在它的菜单中有 Project -> Export Release Build... -> Next -> Package Contents,您可以通过切换复选框来添加资产。
好的,这里是:Flex不会处理这个问题——我们必须手动完成。我将使用以下代码来确保我的文件存在于 ApplicationStorageDirectory 中:
import flash.filesystem.File;
public const FNAME:String = "myDBFileName.db";
private var dbFile:File = File.applicationStorageDirectory.resolvePath(FNAME);
// 'original', initial file
private var originalDB:File =File.applicationDirectory.resolvePath(FNAME);
public function MyOpenFile(){
if (!dbFile.exists){
// It does not exist in AppStorageDirectory, so copy it from app instalation directory
originalDB.copyTo(dbFile);
}
// from here on, we can safely use dbFile.
}
因此,在第一次启动时(以及在“删除应用程序数据”之后),应用程序会将原始文件复制到 ApplicationStorageDirectory,并从那里继续使用它。