응용 프로그램 오류-서버 연결에 실패했습니다. (file : ///android_asset/www/index.html)


157

시작시 앱이 종료 됨 (서버에 연결하지 못했습니다)

PhoneGap BUILD를 사용하여 작성하는 Android 애플리케이션이 있습니다. 앱이 이전에는 정상적으로 작동했지만 이제는 앱을 수정 한 후이 오류가 발생하는 것 같습니다 (일부 UI 변경 만 해당)

1) 앱을 시작할 때 (보통) 다음을 얻습니다.

응용 프로그램 오류-서버 연결에 실패했습니다. (file : ///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의 로컬 인스턴스를 가리키는 스크립트 태그가 여전히 존재했습니다. Weinre가 실행되지 않았습니다. 따라서 시간 초과.
demaniak

devgirl.org/2013/07/17/… 이 자습서를 통해 phonegap을 사용하여 앱을 만들고 있습니다 . 이 setIntegerproperty의 위치를 ​​알려주십시오.
Ashoka Mondal

40
-1 "에뮬레이터의 속도로 인해 문제가 발생했을 가능성이 있으므로 네트워크가 너무 느립니다."- 네트워크가 없기 때문에 불가능합니다! 그 URL은 로컬 안드로이드 자산입니다.
Chris Stratton

구성 파일에 이것을 추가했지만 nexus 5x에서 작동하지 않습니다 –
Sa E Chowdary

183

config.xml 파일에서 다음 줄을 추가하십시오.

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

6
당신은 이것을 잘 설명해야
로힛 굽타에게

13
궁금한 사람은 : 페이지를로드하는 동안 오류가 발생하기 전에 대기 한 시간 (밀리 초)입니다. cordova.apache.org/docs/en/latest/config_ref/index.html
Cedric Reichenbach

13
<preference name="loadUrlTimeoutValue" value="120000" />700000과 비교하여 더 낫습니다. 앱이 2 분 안에 나타나지 않으면 잘못된 것이 있습니다 (다른 솔루션을 사용하여 수정해야 함). 분명히 당신은 앱이 올라오고 있는지 아닌지 알기 위해 약 11 분을 기다리기를 원하지 않습니다! (그래서 우리는 처음에 시간 초과 개념이 있습니다. (20 초)
SidMorad 8:27에

난 내 config 파일이 추가,하지만 넥서스 5 배에 작동하지 않는
사 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의 이름을 바꾸고 window.location = './index.html'을 사용하여 main.html을 만듭니다. MainActivity.java에서 super.loadUrl을 변경할 필요가 없음
M.Salomaa

4
같은 효과! 그러나 실제 페이지는 main.html로 변경됩니다. 그러나 실제로 페이지가 index.html.BTW가 되길 원합니다. 귀하의 의견이 잘못되었다고 생각합니다. 당신은 이름을 바꿀 필요 index.htmlmain.html하고 만들 index.html추가 한 후, 페이지를 window.location = './main.html'. 의 index.html페이지입니다. 이 작동합니다.
Robin C Samuel

네 맞아요! 하나의 : DI가 window.location = './main.html'을 사용하여 index.html을 생성한다는 의미를 입력하지 못했습니다. :)
M.Salomaa

실제 페이지가 index.html이어야하는 이유는 무엇입니까?
M.Salomaa

1
@madebydavid 나는이 4 년 전에 대답했다. 이때로드 할 스크립트가 많을 때 발생하는 지연을 처리 할 수있는 신뢰할 수있는 솔루션은 없었습니다. 스크립트가 페이지로드를 지연시킨 이후 앱이 다운되었습니다. 이 기능 main.html은 가볍고로드 할 스크립트가 없기 때문에 앱을 더 빨리 초기화 한 다음에 스크립트를로드 하기 때문에 작동 합니다 index.html. 폐점 </head>은 오타로 추가되었습니다.
Robin C Samuel

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);" 그러나 그것은 도움이되지 않았습니다. 그래서 Project-> Clean을 시도했는데 효과가 있었고 지금 앱을 시작할 수 있습니다!

아비 나시 ...


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

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

main.html에 주입되는 코르도바 및 플러그인이 없습니다
viskin

이 코드를 추가했지만 약 1 분 동안 스플래시 후 흰색 화면이 나타납니다. 어떻게해야합니까?
Anjana

4

내 프로젝트에서도 마찬가지였습니다.

"super.setIntegerProperty ("loadUrlTimeoutValue ", 70000);"를 시도했지만 아무 소용이 없습니다.

모든 파일이 올바르게 연결되었는지 (CSS, JS 파일 등) 확인하고 w3c 유효성 검사기 [ http://validator.w3.org/#validate_by_upload ]를 사용하여 HTML의 유효성을 검사 하고 프로젝트를 정리했습니다 [ Project- > Clean]

이제 동일한 오류없이로드되고 실행됩니다.

도움이 되었기를 바랍니다


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

내 경우에는 이온을 사용하고 있으며 대화 상자를 닫고 에뮬레이터의 앱으로 이동하여 대신 앱을 실행했습니다. 이것은 효과가 있었다. 시간 초과 문제이므로 여기에서 아이디어를 얻었습니다.


1

Visual Studio를 사용하는 경우 config.xml을 변경 한 후 때로는 이것이 필요합니다.

깨끗한 빌드 솔루션 앱을 다시 빌드하십시오.

나를 위해 일하고 있습니다.


1

제 경우에는 문제가 WiFi의 인터넷 연결이 끊어 졌기 때문입니다.


1

나는 같은 문제에 직면했다. 내 색인에서 "장치 준비"및 "document.ready"기능을 모두 가지고 있으므로 그중 하나를 제거하면 문제가 해결되었습니다.)


-8

이 오류가 발생할 수있는 또 다른 이유는 다음과 같습니다 전혀 없습니다 index.html에서 .../YourApp/www/!

나는 방금 이온 가이드를 따랐으며 그 단계 중 하나는 다음과 같습니다.

$ rm www/index.html

iOS에서는 빌드 중에 컴파일러가 기본 HTML을 대신 사용하므로 문제가 없습니다. 그러나 안드로이드 용으로 빌드 할 때는 예제 index.html가 사용되지 않습니다. 언젠가 알아 내야했다 ( "왜 iOS에서는 작동하지만 안드로이드에서는 작동하지 않습니까? ...")

쉬운 해결책 : index.html을 생성하고 아래에 저장 한 후 .../YourApp/www다시 빌드하십시오 ...

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.