gpt4 book ai didi

android - 从Cordova 4.3.0迁移到6.0.0文件插件?

转载 作者:行者123 更新时间:2023-11-29 00:04:12 24 4
gpt4 key购买 nike

我有一个在Cordova 4.3.0上为Android开发的cordova应用程序,并且我正在尝试构建ios版本。我的OS X系统上的cordova是6.0.0,在删除和重新安装4.3.0时遇到了问题,因此我试图将设计移至6.0.0。为此,我发现现有的插件与6.0.0不兼容,因此我将其删除并重新安装:

cordova-plugin-console 1.0.2 "Console"
cordova-plugin-device 1.1.1 "Device"
cordova-plugin-file 4.1.0 "File"
cordova-plugin-file-transfer 1.5.0 "File Transfer"
cordova-plugin-media 2.1.0 "Media"


此外,系统还提示我安装android 6.0(API 23),因为上述更改后,现有安装不再兼容。

现在,我正在尝试再次使Android版本正常工作。在其他众多问题中无法列出,在我的应用程序目录中读取的目录(/ storage / sdcard0 / MyDir)返回0个文件,同时“ adb shell”报告其中包含9个文件(由cordova 4.3.0构建记录)。该应用程序(下面的代码)仍然能够记录音频文件(使用m_directory.getFile),并且这些文件显示在该目录中(根据“ adb shell”显示),但是m_directory.readEntries找不到它们,只能找到那些在该会话期间已被记录。

如果我将目录名称更改为“ MyDir2”,则永远不会创建新目录(即使create = true),但媒体对象会创建文件/storage/sdcard0/tmprecording.3gp,然后在录制时将其删除完成。换句话说,它可以从4.3.0开始将文件写入现有目录,但不能创建新目录,并且对于现有目录和新目录,readEntries都不会包含该目录中未创建的任何文件。会议。

2015年2月7日更新:
我发现这颗宝石埋在cordova文档中。转到 https://cordova.apache.org/docs/en/6.0.0/cordova/plugins/pluginapis.html,单击“文件系统”,其中显示“目录(已不存在)和系统扩展名”。我认为这意味着Cordova已经至少摆脱了plugins / cordova-plugin-file的一部分;它仍然引用w3.org上的文档,但没有明确指出哪些部分不再起作用。它仍然允许安装插件,并且仍然允许使用所有功能,但是至少其中一些功能已损坏而没有警告消息,file_system.root.getDirectory肯定是这种情况。其他部分(例如DirectoryEntry)显然已保留。

所做的更改使我的房屋(应用程序)下的地基变得笨拙,所以我从头开始

var dir_path = cordova.file.externalDataDirectory;
m_directory = window.resolveLocalFileSystemURL(dir_path,
on_resolve_directory_ok, on_resolve_directory_error);


它应该提供目录条目“将特定于应用程序的数据文件放在外部存储中”。我正在录制的音频文件出现在该目录中,但仅在应用程序运行时才保留。关闭它并重新启动它会删除所有文件。它的行为就像使用临时内存而不是持久性内存,但是我不知道如何解决。

2015年2月8日更新:
看来,运行“ cordova run android --target nnnnnnnnnnnn”(我手机的目标编号被遮盖)会清除目录的内容
/storage/sdcard0/Android/data/com.MyDomain.MyApp/files(与cordova.file.externalDataDirectory相同)。我认为这些文件是永久性的,但是cordova在重新加载过程中所做的某些操作删除了它们。如果我退出该应用程序然后重新启动它(不使用“ cordova run”),则文件仍然保留。如果我退出应用程序,然后使用“ cordova run”,文件将消失。

“ cordova运行”会擦除的另一件事是window.localStorage项,这确实很痛苦,因为每次调试应用程序时我都必须手动输入它们。 https://www.w3.org/TR/webstorage/非常清楚这不会发生:用户代理应仅出于安全原因或在用户要求这样做时才使本地存储区中的数据过期。用户代理应始终避免在运行可访问该数据的脚本时删除数据。

我修改后的问题是:如何在不删除cordova.file.externalDataDirectory中的所有文件和window.localStorage中的所有设置的情况下使用“ cordova run android”?

随后是旧代码(使用window.requestFileSystem(LocalFileSystem.PERSISTENT,...)。

var m_directory = null;

function on_device_ready()
{
create_directory_entry();
}

function create_directory_entry()
{
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,
on_file_system_ok, on_file_system_error);
}

function on_file_system_ok(file_system)
{
console.log("on_file_system_ok: file_system.name " + file_system.name);
var attribs = {create: true, exclusive: false};
file_system.root.getDirectory("MyDir", attribs, on_dir_ok,
on_dir_error);
}

function on_dir_ok(dir_entry)
{
console.log("on_dir_ok: dir_entry.fullPath " + dir_entry.fullPath);
m_directory = dir_entry;
list_files(dir_entry);
}

function list_files(dir_entry)
{
var dir_reader = dir_entry.createReader();
dir_reader.readEntries(create_file_list, on_dir_read_error);
}

function create_file_list(entries)
{
console.log("create_file_list: entries.length=" + entries.length);
}

最佳答案

可能与问题CB-10157有关
在安装,清除localStorage和数据库之前卸载应用程序


  该应用程序始终在安装前先卸载。
  这意味着将清除localStorage和与该应用程序关联的所有数据库。
  对于开发依赖于安装之间存储一些数据的应用程序,这是一个主要问题。


https://issues.apache.org/jira/browse/CB-10157

https://issues.apache.org/jira/browse/CB-10585的评论


  它已在cordova-android 5.2.0-dev中修复


我找不到有关5.2.0何时发布的任何信息

cordova platform update android@5.2.0


也不

cordova platform update android@5.2.0-dev


当前有效,所以我想这是一个等待游戏或安装了旧版本

关于android - 从Cordova 4.3.0迁移到6.0.0文件插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35247419/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com