2015-12-14 30 views
6

Sto compilando una semplice app Cordova e la distribuzione su Android. Voglio testare la fluidità di jQuery Mobile su vari dispositivi Android, quindi sto compilando un'app con i contenuti della cartella demo di jQuery Mobile.L'app Cordova non può caricare alcun file nelle risorse/www (solo index.html)

Ho creato un nuovo progetto Cordova e ho inserito il contenuto della cartella demo di jQuery Mobile nella cartella www.

Ho quindi utilizzato il binario Cordova per aggiungere la piattaforma Android, eseguire il build cordova e infine cordova run android.

L'applicazione è stata aperta sul telefono, ma non verrà caricato alcun file diverso da index.html. Ho collegato l'app per il debugger Chrome ispettore di vedere ciò che non è stato caricando, ecco quello che ho visto:

Errors in debugger

Tutti i file che Cordova non riesce a trovare, esistono in platforms/android/assets/www. Cordova può trovare index.html appena trovato, ma non può caricare nient'altro.

Se apro la cartella in un browser Web, tutto viene caricato correttamente.

Qualcuno sa che cosa potrebbe causare questo problema o quali misure potrei adottare per risolvere ulteriormente e isolare il problema? Ho cercato su Google per ore e non riesco a trovare nessun altro in una situazione del genere. Per altre persone, è il file index.html che non viene caricato o si sono semplicemente dimenticati di aggiungere i file desiderati nella cartella www. Nel mio caso, index.html carica bene, ma non lo farà nient'altro (vedi l'immagine sopra).

Ecco il mio config.xml (per lo più solo il default standard):

<?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="[email protected]" 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> 

Ecco il mio AndroidManifest.xml di file:

<?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> 

Ecco il mio index.html di file: http://pastebin.com/duFSLT5T

+0

Questo non è un problema Cordova, questo è un problema della vostra applicazione. Si prega di mostrare il file HTML. – Joerg

+0

@Joerg Grazie per l'aiuto. Questo è il mio file index.html: http://pastebin.com/duFSLT5T non è modificato dalla cartella demo di jQuery Mobile. Tutti i file relativi sono validi e index.html viene caricato correttamente in un normale browser web. – Randall444

+0

Su una nota a margine; Ho usato jQuery Mobile con Phonegap/Cordova prima non era HORRIBLY male, ma ancora piuttosto male, soprattutto con i telefoni più vecchi (~ anni). Non userei più jQuery Mobile su nessuno dei miei progetti, ma invece mi piace Intel AppFramework. – Piwwoli

risposta

7

Alla fine ho capito. È un problema di Cordova durante la distribuzione con Android. Qualsiasi cartella che inizia con un trattino basso viene omessa senza preavviso. Sembra che il bug è stato intorno per oltre 5 anni e senza alcun segno di essere fisso presto:

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

0

Se i file sono nei documenti-> jqdemo-> www, come si mostra su pasteboard.co, quindi i file si trovano nel posto sbagliato.

Devono essere in:

your_cordova_project-> piattaforme-> Android-> assets-> www

Per farlo:

includono le attività, index.html , js solo nella cartella radice del tuo progetto cordova e quindi fai una build cordova e non modificare da solo la cartella www della piattaforma.

Se si sta codificando e non solo test, il modo migliore è disporre di collegamenti simbolici o pre-script, che eseguono il lavoro di copia. Quindi non devi chiamare ogni volta che cordova si costruisce.

jQuery Mobile: funziona molto bene su dispositivi mobili, se sai cosa stai facendo. Altrimenti è molto facile rallentare la tua app. Perciò stai attento!

Aggiornamento:

problema interessante e mi rimanere su di essa, che il percorso non è corretto, forse non risolvibile. Quindi, provare queste cose:

  1. Creare un nuovo file CSS, il nome test.css e contenuti:

body { 
 
    background-color: red !important; 
 
    font-size: 3em !important; 
 
}

Mettere questo file nella root della cartella www , collegalo nel tuo file html e crea una build di cordova. Vedi il file nella piattaforma www-folder?

In che modo ha effetto sul tuo dispositivo?

+0

Apprezzo il tuo aiuto! Il mio codice è già in quella posizione. Lo screenshot che ti ho mostrato prima era semplicemente la cartella 'www' dove la fonte si trova prima che sia costruita da Cordova per la piattaforma Android. Ecco uno screenshot dalle mie piattaforme-> android-> assets-> www folder: http://pasteboard.co/29GStIj.png Tutto il codice e tutti i file ci sono. Ecco uno screenshot della posizione del file CSS che Cordova non riesce a trovare: http://pasteboard.co/29PGQKi.png – Randall444