AndroidProtocolHandler 使用 sencha touch 时出错

Posted

技术标签:

【中文标题】AndroidProtocolHandler 使用 sencha touch 时出错【英文标题】:AndroidProtocolHandler Error when using sencha touch 【发布时间】:2016-12-10 20:43:56 【问题描述】:

我正在尝试在 Sencha Touch for android 上构建一个应用程序,所以我使用 Cordova 将它放在我的设备上。

我面临的问题是在我的计算机上一切正常,但在 android 上,设备无法找到并读取 每个 商店的语言环境文件(我已经在其他商店进行了测试安卓设备)。 这是logcat上的错误:

E/AndroidProtocolHandler: Unable to open asset URL: file:///android_asset/www/app/store/recipes/list.json?_dc=1481398604306&node=ext-data-treestore-1-root&page=1&start=0&limit=25
E/AndroidProtocolHandler: Unable to open asset URL: file:///android_asset/www/app/store/recipes/pates.json

这是我用来阅读“pates.json”的商店:

var ingredientsData = Ext.create('Ext.data.Store', 
    model: 'fr.ESIR.GreenVentory.model.IngredientListModel',
    autoLoad: true,
    proxy: 
        type: 'ajax',
        noCache: false,
        enablePagingParams: false,
        limitParam: null,
        url: "./app/store/recipes/pates.json",
        reader: 
            rootProperty: 'ingredients',
            totalProperty: 'totalCount'
        
    
);

我尝试加载的文件本地存储在“app/store/recipes/”中

如果有人有解决方案,我很高兴知道它

【问题讨论】:

app 目录是否在 www 目录中,在 assets 中? 应用程序存储在/data/app/fr.ESIR.GreenVentory-1/base.apk,数据路径在/data/user/0/fr.ESIR.GreenVentory 我在询问“我尝试加载的文件在本地存储在”app/store/recipes/”中在 IDE 中打开您的 Android 项目并单击“pates.json”文件并请截取结构视图的屏幕截图以添加到您的问题中 其实我用的是Sencha Touch API,有了这个你就可以“轻松”地正常构建web应用了。但是,好的是您可以将 Cordova 与它集成,然后 Cordova 将您的 web 应用程序转换为 Android 应用程序。但是您的评论对我有帮助,我只是从 apk 中提取所有文件,寻找一个不存在的“pates.json”... 【参考方案1】:

我解决了我自己的问题: 所有数据都存储在 sencha 应用程序的 app/store 中,当我使用 Cordova 构建 Android 应用程序时,它不使用 json 文件,因为我没有指定文件位置。

所以我在项目根目录上创建了一个数据文件夹,将我的 json 文件和包含它们的文件夹放在数据文件夹中。

不要忘记更新 json 文件的不同引用

之后,它仍然可以在网络版本上运行,但不能在 Android 上运行,因为 cordova 不集成您的文件。 Cordova 读取项目根目录中的 app.json 文件。转到文件的“资源”部分。通常你有这样的东西:

/**
 * Extra resources to be copied along when build
 */
"resources": [
    "resources/images",
    "resources/icons",
    "resources/startup",
    "data/*",
    "data/recipes"
]

只需添加包含您的文件的文件夹的位置,cordova 应该在编译时集成它们

【讨论】:

很高兴您修复了它,这些 json/web 文件(所有 www 目录)可能应该在资产中(因为它们不是 android 资源),因此您应该更新您的 gradle 以将它们包含在其中。这应该意味着您不必修复路径(正如您从错误日志中看到的那样,它默认在资产中查找)

以上是关于AndroidProtocolHandler 使用 sencha touch 时出错的主要内容,如果未能解决你的问题,请参考以下文章

第一篇 用于测试使用

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份