Cordova app无法加载assets / www中的任何文件(仅限index.html)

时间:2015-12-14 18:27:12

标签: javascript android cordova jquery-mobile

我正在编译一个非常简单的Cordova应用并在Android上进行部署。我想在各种Android设备上测试jQuery Mobile的流畅度,所以我用jQuery Mobile演示文件夹的内容编译应用程序。

我创建了一个新的Cordova项目,并将jQuery Mobile demo文件夹的内容放入我的www文件夹中。

然后我使用Cordova二进制文件添加android平台,运行cordova构建,最后使用cordova run android

我的手机上已打开该应用程序,但不会加载index.html以外的任何文件。我将应用程序连接到Chrome Inspector调试器,看看什么没有加载,这是我看到的:

Errors in debugger

Cordova无法找到的所有文件都存在于platforms/android/assets/www中。科尔多瓦可以找到index.html,但它无法加载任何其他内容。

如果我在网络浏览器中打开该文件夹,一切都会正常加载。

任何人都知道可能导致此问题的原因或我可能会采取哪些措施来进一步排查问题并解决问题?我已经搜索了几个小时,我找不到其他任何人面临这种​​情况像这样。对于其他人来说,它是不会加载的index.html文件,或者他们只是忘了将他们想要的文件添加到www文件夹中。在我的情况下,index.html加载正常,但没有别的(见上面的截图)。

这是我的config.xml(主要是标准默认值):

<?xml version='1.0' encoding='utf-8'?>
<widget id="com.rand.jqmdemo" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>jqmdemo</name>
    <description>
        A sample Apache Cordova application that responds to the deviceready event.
    </description>
    <author email="dev@cordova.apache.org" href="http://cordova.io">
        Apache Cordova Team
    </author>
    <content src="index.html" />
    <plugin name="cordova-plugin-whitelist" spec="1" />
    <access origin="*" />
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />
    <platform name="android">
        <allow-intent href="market:*" />
    </platform>
    <platform name="ios">
        <allow-intent href="itms:*" />
        <allow-intent href="itms-apps:*" />
    </platform>
    <engine name="android" spec="~4.1.1" />
</widget>

这是我的AndroidManifest.xml文件:

<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1" package="com.elliot.jqmdemo" xmlns:android="http://schemas.android.com/apk/res/android">
    <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name" android:supportsRtl="true">
        <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.Black.NoTitleBar" android:windowSoftInputMode="adjustResize">
            <intent-filter android:label="@string/launcher_name">
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="22" />
</manifest>

以下是我的index.html文件:http://pastebin.com/duFSLT5T

2 个答案:

答案 0 :(得分:9)

我最终想出来了。在使用Android进行部署时,这是一个Cordova问题。任何以下划线开头的文件夹都会被省略而不会发出警告。看起来这个bug已经存在了5年多,并且没有任何迹象表明很快就会被修复:

https://code.google.com/p/android/issues/detail?id=5343

答案 1 :(得分:0)

如果您的文件位于文档中 - &gt; jqdemo-&gt; www,就像您在pasteboard.co上显示的那样,那么您的文件位置错误。

他们必须在:

  

your_cordova_project-&GT;平台 - &GT; android-&GT;资产 - &GT; WWW

这样做:

仅在您的cordova项目的根文件夹中包含assets,index.html,js,然后执行cordova构建,不要自行更改平台www文件夹。

如果您正在编码而不仅仅是测试,更好的方法是使用符号链接或预脚本来执行复制作业。因此,每次使用cordova时都不需要打电话。

jQuery Mobile:它在移动设备上运行良好,如果你知道自己在做什么。否则,很容易减慢你的应用程序。所以,小心!

<强>更新

有趣的问题,我坚持下去,路径不正确,可能无法解决。所以,试试这个:

  1. 创建一个新的css文件,名称test.css和content:
  2. body {
       background-color: red !important;
       font-size: 3em !important;
    }

    将此文件放在www文件夹的根目录中,将其链接到html文件中并进行cordova构建。您是否在平台www-folder中看到该文件?

    它对您的设备有何影响?