アプリケーションエラー-サーバーへの接続に失敗しました。(ファイル:///android_asset/www/index.html)


157

起動時にアプリが死ぬ(サーバーへの接続に失敗した)

PhoneGap BUILDを使用して作成しているAndroidアプリケーションがあります。アプリは以前は問題なく動作していましたが、アプリを調整した後にこのエラーが発生しているようです(一部のUIの変更のみ)

1)アプリを起動すると、(通常)次のようになります。

アプリケーションエラー-サーバーへの接続に失敗しました。(ファイル:///android_asset/www/index.html)

これが質問の重複である場合は申し訳ありません。ここで同様の質問をいくつか見ましたが、完全な答えや解決策は見つかりませんでした。私の場合と同様に、最後の変更までは問題なく動作していました。

回答:


73

あなたが言ったように、同じトピックに関する多くの重複した質問があります。状況を説明する方法。

この問題は、index.htmlを呼び出すタイムアウトを追加することで解決できる場合があります。

つまり、super.setIntegerProperty("loadUrlTimeoutValue", 70000);この行の上にactivity.javaファイル(src / com / yourProj /-/ youractivity.java内)を追加する必要があります。 super.loadUrl("file:///android_asset/www/index.html");

説明:

これは、次の理由により発生する可能性があります

主な理由:この問題はエミュレータの速度が原因である可能性が高いため、ネットワークが遅すぎて通信をタイムリーに完了できません。

これは次の原因が考えられます:

  1. コード/データ/画像のサイズが大きすぎます(UIを変更したと言ったように、画像を使用していると思いますが、画像のサイズが大きい可能性があります)
  2. スクリプトに無限ループまたは長いループがあるため、ロードに時間がかかりすぎる。
  3. 使用するスクリプトが多すぎます(jQuery、iscrollなど。プラグインまたはスクリプトの数が増えます)。

7
私の場合に起こったことは、Weinreのローカルインスタンスを指すスクリプトタグがまだあるということです。ウェインレは走っていなかった。したがって-タイムアウト。
demaniak 2013

私はdevgirl.org/2013/07/17/…このチュートリアルでphonegapを使用してアプリを作成しています。このsetIntegerプロパティの場所を教えてください。
アショカモンダル

40
-1「問題はエミュレータの速度が原因である可能性が高いため、ネットワークが遅すぎる」- ネットワークが関与していないため、考えられません。そのURLはローカルのAndroidアセットに対するものです。
Chris Stratton

これを設定ファイルに追加しましたが、nexus 5xでは機能しません–
Sa E Chowdary

183

config.xmlファイルに次の行を追加します。

<preference name="loadUrlTimeoutValue" value="700000" />

6
これについても説明する必要があります
Rohit Gupta 2015

13
疑問に思う方のために:エラーをスローする前にページをロードしている間にミリ秒単位で待機した時間です:cordova.apache.org/docs/en/latest/config_ref/index.html
Cedric Reichenbach

13
<preference name="loadUrlTimeoutValue" value="120000" />700000と比較すると優れています。つまり、アプリが2分以内に起動しない場合は、何か問題があります(別のソリューションを使用して修正する必要があります)。アプリが起動しているかどうかを確認するために約11分間待たないでください! (20秒)
SidMorad 2017

私はこれを私の設定ファイルに追加しましたが、ネクサス5xでは機能しません
Sa E Chowdary

これはとても奇妙です。私は70000に設定しましたが、アプリがロードを試みてから約30秒後にアプリケーションが死にました 私はそれを120000に変更しましたが、3〜4秒で正常にロードされます。私が変更したのはそれだけです。ああ。
Brian Knoblauch

24

これが実際の解決策です

新しいページmain.htmlを作成する

例:

<!doctype html>
<html>
  <head>
   <title>tittle</title>
   <script>
     window.location='./index.html';
   </script>
  </head>
  <body>
  </body>
</html>

mainactivity.javaで以下を変更します

super.loadUrl("file:///android_asset/www/index.html");

super.loadUrl("file:///android_asset/www/main.html");

次に、アプリケーションをビルドして、低速接続で動作します

参考

注:これは2013年に見つけた回避策です。


3
実際には、index.htmlの名前を変更して、main.htmlをwindow.location = './index.html'で作成します。super.loadUrlをMainActivity.javaから変更する必要はありません
M.Salomaa

4
同じ効果!ただし、実際のページはmain.htmlに変更されます。しかし、実際のページをindex.html.BTWにしたいのですが、コメントが間違っていると思います。に名前を変更index.htmlmain.htmlindex.htmlページを作成してから、を追加 する必要がありますwindow.location = './main.html'。中index.htmlページ。これはうまくいくはずです。
ロビンCサミュエル

そう、そのとおり!1つの:DIは、window.location = './main.html'でindex.htmlを作成することを意味するので、入力を間違えました。:)
M.Salomaa 2014年

実際のページをindex.htmlにする必要があるのはなぜですか?
M.Salomaa 2014年

1
@madebydavid私はこの4年前に答えました。その時点では、読み込まれるスクリプトが多い場合に発生する遅延を処理する信頼できるソリューションはありませんでした。スクリプトがページの読み込みを遅らせたため、アプリがクラッシュしました。これは機能main.htmlします。これは軽量であり、ロードするスクリプトがないため、アプリをより早く初期化してから、にスクリプトをロードしindex.htmlます。クロージング</head>はタイプミスでしたが、追加されました。
ロビンCサミュエル

10

次のようなリモートでリンクされたjQueryファイルを削除してください: https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js

代わりに、このファイルをダウンロードしてローカルのjsフォルダーからロードし、URIを作成します。

js/jquery.min.js


6

index.htmlの外部スクリプトを削除します

これを変える:

<script src="http://code.highcharts.com/highcharts-more.js"></script>

<script src="project_folder/highcharts-more.js"></script>

5

同様の問題があり、上記の提案に基づいて、最初に「super.setIntegerProperty( "loadUrlTimeoutValue"、70000);」を追加しました。しかし、それは助けにはなりませんでした。だから私はプロジェクトを試しました->クリーン、それはうまくいきました、そして今私はアプリを起動することができます!

アビナッシュ...


5

これを試して、

1. index.htmlの名前を「main.html」に変更します

2.新しい「index.html」を作成し、次のコンテンツをその中に入れます:

<!doctype html>
<html>
  <head>
   <title>tittle</title>
   <script>
     window.location='./main.html';
   </script>
  <body>
  </body>
</html>

3.アプリを再構築しましょう!エラーはもうありません!


また、main.html?USER = xxx&SESSION = xxxのような引数を追加する必要がある場合はどうすればよいですか?
Nourdine Alouane、2015年

3
window.location.href = "./ main.html?USER = xxx&SESSION = xxx"
Nithin Krishnan P

コルドバとプラグインはmain.htmlに挿入されていません
viskin

このコードを追加しましたが、約1分間、スプラッシュ後に白い画面が表示されます。私は何をすべきか?
Anjana 2017

4

私のプロジェクトでも同じことがありました。

「super.setIntegerProperty( "loadUrlTimeoutValue"、70000);」を試しましたが、うまくいきませんでした。

すべてのファイルが適切にリンクされていることを確認し(CSS、JSファイルなど)、w3cバリデーターを使用してHTMLを検証し[ http://validator.w3.org/#validate_by_upload ]、プロジェクトをクリーンアップしました[プロジェクト->クリーン]

同じエラーなしでロードおよび実行されるようになりました。

お役に立てれば


4

ロードのタイムアウト制限を拡張しても、エラーの原因となった問題は解決されません。システムがメッセージを表示しないようにするだけですが、パフォーマンスはまったく影響を受けません。

実際の理由:ファイルまたは画像をリモートの場所にリンクしている可能性があり、それらのリソースの読み込みに時間がかかりすぎています。(これはおそらく最も一般的なエラーです)

決定的な解決策:必要なすべてのスクリプト、画像、CSSをいくつかのローカルフォルダーに移動し、ローカルに読み込みます...

パフォーマンスが向上し、エラーが効果的に解決されます。


4

イオンアプリでこれを修正するには、単に追加します

<preference name="loadUrlTimeoutValue" value="700000" />

この行の直後のconfig.xmlファイルに

<platform name="android">

3

index.htmlファイルを確認してください。アプリケーションの実行時に利用できない外部リソースを使用すると、このエラーが発生する可能性があります。

私の場合、デバッガスクリプト(weinre)のリンクを削除するのを忘れていました。

<script src="http://192.168.0.102:8080/target/target-script-min.js#anonymous"></script>

そのためhttp://192.168.0.102:8080/、私のローカルホスト上にあり、エミュレータで使用できるため、アプリケーションはエミュレータで動作しました。

しかし、携帯電話でアプリケーションをセットアップすると、192.168.0.102がモバイルネットワークから利用できないため、同じエラーが発生しました。


1

私の場合、私はionicを使用していて、ダイアログを閉じてエミュレーターのアプリに移動し、代わりにそこからアプリを実行しました。これはうまくいきました。タイムアウトの問題だったので、ここでそれを知りました。


1

ビジュアルスタジオを使用している場合。config.xmlを変更した後、時々これが必要になります

クリーンビルドソリューションでアプリを再構築

それは私のために働いています。



1

私は同じ問題に直面していました。私のインデックスには「on device ready」と「document.ready」の両方の機能があることに気付いたので、そのうちの1つを削除すると問題が解決しました:)


-8

このエラーが発生する可能性がありますもう一つの理由は、次のとおりです。何もありませんindex.html.../YourApp/www/

私はイオンガイドをたどりました、そしてステップの1つは次のとおりです:

$ rm www/index.html

iOSでは、ビルド中にコンパイラーがデフォルトのHTMLを代わりに使用するため、これは問題ありません。ただし、Android用にビルドする場合、例index.htmlは使用されません。いつか調べて(「iOSで機能するのに、Androidでは機能しないのはなぜですか...」)

簡単な解決策:index.htmlを作成し、それをに保存し.../YourApp/www、再構築してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.