具有远程 html 和本地 cordova.js 的混合应用程序

Jay*_*yen 0 android cordova

我有一个网站,想通过混合应用程序在手机上增强功能。理想情况下,应用程序将通过 http 加载远程站点,但在本地加载特定于平台的代码。我尝试建立一个 Cordova 项目来执行此操作,但遇到很多麻烦。我的环境是 Nexus 7 Android 4.4.4 上的 Cordova 4.3.1、Cordova Android 3.7.2。(谷歌地图插件适用于 Cordova Android < 4。)

如果我尝试从 http 站点加载 file:///android_assets/www/cordova.js,chromium 会说Not allowed to load local resource。我尝试设置本地 URL 方案,但不知道将 Android 特定代码放在哪里。

这是制作混合应用程序的正确方法吗?是否有一个 cordova 插件允许从 http: 加载 file: ?


我还尝试使用 iframe 并传递消息来指示 cordova 已启用以及安装了哪些插件,但我不想让 http 服务器重新提供本地已可用的相同 js 文件。

我还想下载该网站并通过文件访问它:但我想尝试访问 http 资源时我也会遇到同样的问题。

小智 6

我可以cordova.js使用 cordova-plugin-file ( ) 插件在远程 html 上加载本地内容cdvfile://

  1. 将 cordova-plugin-file 插件添加到您的 cordova 项目 https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file/

  2. 确认 cdvfile URI 以cordova.js使用以下示例代码(Android 示例)

    checkCordovaJSPath('file:///android_asset/www/cordova.js');
    
    function checkCordovaJSPath(jsUri) {
            window.resolveLocalFileSystemURL(jsUri, function success(fileEntry){
                console.log("got cordova.js file: " + fileEntry.fullPath);
                console.log('cordova.js cdvfile URI: ' + fileEntry.toInternalURL());
               
    });
    }
Run Code Online (Sandbox Code Playgroud)

  1. 在远程 html 上cordova.js使用加载。cdvfile://localhost

<script type="text/javascript" src="cdvfile://localhost/assets/www/cordova.js"/>
Run Code Online (Sandbox Code Playgroud)