web-dev-qa-db-fra.com

L'erreur d'application est un répertoire (fichier: ///#Android_asset/www/index.html)

J'utilise phonegap pour développer une application sur Android, lorsque je la teste sur mon téléphone, j'obtiens cette erreur Application Error Is a directory (file:///#Android_asset/www/index.html) J'obtiens cette erreur uniquement lorsque je n'ai pas de connexion Internet sur mon téléphone.

aucune suggestion?

18
Vanddel

J'ai trouvé la réponse ici: http://dev.wavemaker.com/wiki/bin/wmdoc_6.5/PhoneGap?xpage=print#HTheconnectiontotheserverwasunsucessful28file3A2F2F2Fandroidasset2Fwww2Findexhtml29

6.1 La connexion au serveur a échoué (fichier: ///Android_asset/www/index.html)

OERE: lors du lancement de l'application sur un appareil Android.

Tout ce que vous placez dans votre fichier index.html qui demande une ressource distante provoquera l'erreur ci-dessus pour les appareils Android, et votre application mourra alors. Le débogueur Weinre est une cause courante de cette erreur.

Solution: Déplacez le chargement des ressources distantes hors index.html et dans votre application où il échouera discrètement.

8
Vanddel

Cela signifie que dans votre index.html, vous utilisez une ressource qui nécessite un accès Internet. Consultez votre index.html et recherchez tout fichier CSS, javascript ou Cordova lié directement à partir d'Internet. Si tel est le cas, vous devez télécharger le fichier associé et le rendre local.

J'ai eu ce même problème lorsque j'ai lié mon fichier JS mobile JS directement comme ceci:

<script type="CSS/javascript" src="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.js">

ce que j'ai fait, j'ai téléchargé le fichier jquery.mobile-1.3.0.js et l'ai placé localement dans mon dossier www. Cela a résolu mon problème.

13
GenieWanted

vous n'avez qu'à renommer votre 'index.html' en 'main.html' par exemple, et créer un nouveau (factice) 'index.html' qui n'a qu'à rediriger vers le 'main.html'

Contenu du nouveau 'index.html':

<!doctype html>

<html>
    <head>
        <title>Title</title>
        <script>
            window.location='./main.html';
        </script>
    </head>
    <body>      
    </body>
</html>
4
tionne jones

J'ai trouvé la réponse.

Incluez le phonegap.js dans votre <head> tag. Il est requis par phonegap pendant la construction.

<head>
<script src="phonegap.js"></script> 
</head>

Vous n'avez pas besoin de télécharger le phonegap.js. Il vous suffit d'inclure le code comme indiqué. Pendant la construction, PhoneGap le recherchera et l'inclura automatiquement. Sinon, lorsque vous exécutez votre application native, l'application recherchera phonegap.js sur le serveur phonegap et cela prend trop de temps. Finalement, la charge de votre application expirera avec le message d'erreur que vous voyez.

Hou la la! Je peux le croire. J'ai rencontré ce problème et je me suis découragé et j'ai presque abandonné l'utilisation de PhoneGap. Cependant, je l'ai lu sur le site Web de Phonegap à propos de phonegap.js sous le sous-titre ci-dessous

https://build.phonegap.com/docs/app-overview

"Assurez-vous que vous pouvez toujours accéder à l'API PhoneGap"

"Une fois que vous avez supprimé phonegap.js, vous devez vous assurer que votre application peut toujours accéder à l'API PhoneGap.

Pour ce faire, assurez-vous simplement que la référence suivante figure dans votre index.html "

<script src="phonegap.js"></script>

C'est comme par magie. Ça marche.

Vive tout le monde.

1
user2981259

Une balise d'accès vide permet d'accéder à toutes les ressources externes.

<access Origin="*" /> - a wildcard access tag allows access to all external resource.

Sinon, vous pouvez spécifier des domaines spécifiques:

-->
    <access Origin="127.0.0.1*"/> <!-- allow local pages -->
<!--
<access Origin="http://phonegap.com" /> - allow any secure requests to http://honegap.com/
<access Origin="http://phonegap.com" subdomains="true" /> - same as above, but including subdomains, such as http://build.phonegap.com/
<access Origin="http://phonegap.com" browserOnly="true" /> - only allows http://phonegap.com to be opened by the child browser.
-->

J'espère que cela t'aides.

0
Ferenju

Assurez-vous d'avoir inclus le script phonegap.js ou cordova.js dans votre page. Cela ne fonctionnera que sur votre appareil mobile.

0
Nätu

Je suis le " guie de démarrage rapide " et j'ai le même problème. Mais je l'ai résolu. Mon problème était une discordance entre l'intervalle de téléphone téléchargé et le gars qui a suivi.

Vous devez être sûr de ces détails: - Dans intex.html vous liez la version correcte du script js (par exemple: cordova-2.7.0.js) - Il doit correspondre à la version téléchargée de phonegab. la version de phonegab et le script js liés doivent correspondre.

J'espère que cela vous aidera.

0
Bachi