起動時にアプリが停止する(サーバーへの接続に失敗しました)
PhoneGap BUILDを使用して作成しているAndroidアプリケーションがあります。アプリは以前は正常に機能していましたが、今ではアプリを改良した後にこのエラーが発生しているようです(一部のUIの変更のみ)
1)アプリを起動すると、(通常)次のようになります:
アプリケーションエラー-サーバーへの接続に失敗しました。(file:///Android_asset/www/index.html)
これが質問の重複である場合は申し訳ありません。ここで同様の質問をいくつか見ましたが、完璧な答えや解決策を見つけることができませんでした。私の場合のように、私の最後の変更までうまく機能していました。
あなたが言ったように、同じトピックに関する多くの重複した質問があります。あなたの状況を説明する方法。
Index.htmlを呼び出すタイムアウトを追加することで問題を解決できる場合があります
すなわち、あなたのactivity.Javaファイル(src/com/yourProj /-/ youractivity.Java内)のこの行の上にsuper.setIntegerProperty("loadUrlTimeoutValue", 70000);
を追加する必要があります:super.loadUrl("file:///Android_asset/www/index.html");
説明:
これは、次の理由により発生する可能性があります
核となる理由:問題はおそらくエミュレーターの速度が原因であるため、ネットワークが遅すぎるため、通信を適時に完了してください。
これは次の原因が考えられます。
Config.xmlファイルに次の行を追加します。
<preference name="loadUrlTimeoutValue" value="700000" />
ここに作業ソリューションがあります
新しいページ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年に発見した回避策です。
次のようなリモートでリンクされたjQueryファイルを削除してください:https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js
代わりに、このファイルをダウンロードしてローカルのjsフォルダーからロードし、URIを作成します。
js/jquery.min.js
Index.htmlの外部スクリプトを削除します
これを変更:
<script src="http://code.highcharts.com/highcharts-more.js"></script>
に
<script src="project_folder/highcharts-more.js"></script>
同様の問題があり、上記の提案に基づいて、最初に「super.setIntegerProperty( "loadUrlTimeoutValue"、70000);」を追加しました。しかし、それは助けにはなりませんでした。だから私はProject-> Cleanを試してみました、それはうまくいき、今すぐアプリを起動できます!
アビナッシュ...
これを試して、
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.アプリを再構築します!これ以上のエラーはありません!
私も自分のプロジェクトで同じことをしました。
「super.setIntegerProperty( "loadUrlTimeoutValue"、70000);」を試しましたが、役に立ちませんでした。
すべてのファイルが適切にリンクされていることを確認し[CSS、JSファイルなど]、w3cバリデーターを使用してHTMLを検証しました[ http://validator.w3.org/#validate_by_upload ]、プロジェクト[プロジェクト- >クリーン]
同じエラーなしでロードおよび実行されるようになりました。
お役に立てれば
ロードのタイムアウト制限を延長しても、エラーの原因となった問題は解決されません。システムがメッセージを表示するのを回避するだけですが、パフォーマンスはまったく影響を受けます。
実際の理由:ファイルまたは画像をリモートの場所にリンクしている可能性があり、それらのリソースのロードに時間がかかりすぎています。 (これはおそらく最も一般的なエラーです)
決定的なソリューション:必要なすべてのスクリプト、画像、CSSをいくつかのローカルフォルダーに移動し、ローカルにロードします...
パフォーマンスが向上し、エラーが効果的に解決されます。
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がモバイルネットワークから利用できなかったため、同じエラーが発生しました。
ionicアプリでこれを修正し、単に追加します
<preference name="loadUrlTimeoutValue" value="700000" />
この行の直後にconfig.xmlファイルに
<platform name="Android">
Visual Studioを使用している場合。 config.xmlを変更した後、時々これが必要になります
クリーンビルドソリューションによるアプリの再構築
それは私のために働いています。
私の場合、問題はWiFiのインターネット接続が失われたためです。
私は同じ問題に直面していました。私は自分のインデックスに「on device ready」と「document.ready」の両方の機能があることに気づいたので、そのうちの1つを削除すると問題が解決しました:)
私の場合、ionicを使用しており、ダイアログを閉じてエミュレーターのアプリに移動し、代わりにそこからアプリを実行しました。これはうまくいきました。タイムアウトの問題に過ぎなかったので、ここからそのアイデアを得ました。