Помилка програми - підключення до сервера не вдалося. (файл: ///android_asset/www/index.html)


157

Додаток вмирає при запуску (підключення до сервера було невдалим)

У мене є додаток для Android, яке я пишу за допомогою PhoneGap BUILD. Додаток працював чудово раніше, але тепер, здається, я отримую цю помилку після вдосконалення свого додатка (лише деякі зміни інтерфейсу)

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. Ваш код / ​​дані / зображення занадто великого розміру (я думаю, у вашому випадку ви використовуєте деякі зображення, як ви сказали, що зробили деякі зміни інтерфейсу користувача, можливо, розмір зображень високий)
  2. Ваш сценарій може мати нескінченну чи довгу петлю, щоб завантажувати занадто багато часу.
  3. Ви будете використовувати занадто багато сценаріїв (jQuery, iscroll тощо) тощо. Більше плагінів або сценаріїв)

7
У моєму випадку трапилось те, що я все ще мав тег сценарію, який вказував на локальний екземпляр Weinre. Вайнре не бігав. Звідси - тайм-аути.
деманяк

Я створюю додаток за допомогою phonegap через devgirl.org/2013/07/17/… цей підручник. Скажіть, будь ласка, де я маю цю власність Integer.
Ашока Мондал

40
-1 "проблема, ймовірно, пов'язана зі швидкістю емулятора, тому мережа занадто повільна" - неправдоподібно, оскільки жодна мережа не задіяна! Ця URL-адреса призначена для локальних андроїд-активів.
Кріс Страттон

я додав це у свій конфігураційний файл, але він не працює на Nexus 5x -
Sa E Chowdary

183

У файл config.xml додайте цей рядок:

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

6
Ви також повинні описати це
Rohit Gupta

13
Для всіх, хто цікавиться: час завантаження сторінки в мілісекундах перед завантаженням помилки: cordova.apache.org/docs/en/latest/config_ref/index.html
Седрік Райхенбах,

13
<preference name="loadUrlTimeoutValue" value="120000" />краще в порівнянні з 700000, я маю на увазі, якщо ваша програма не з’являється за дві хвилини, то щось не так (і ви повинні виправити це за допомогою іншого рішення). Навряд чи ви не хочете чекати близько 11 хвилин, щоб дізнатись, чи з’являється програма чи ні! (Тому ми в першу чергу маємо концепцію тайм-ауту, так? (20 секунд)
SidMorad

я додав це у свій конфігураційний файл, але він не працює на Nexus 5x
Sa E Chowdary

Це так дивно. У мене було встановлено 70000, і програми вмирали приблизно через 30 секунд, намагаючись завантажити. Я змінив його на 120000 і тепер вони успішно завантажуються за 3-4 секунди. Це все, що я змінив. Арг.
Брайан Ноблеуч,

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.htmlсторінку main.htmlта створити її index.html, а потім додати window.location = './main.html'. на index.htmlсторінці. Це має спрацювати.
Робін С Самуель

Так, ти правий! Я пропустив цей текст: DI означав, що створив index.html з window.location = './main.html'. :)
M.Salomaa

Для чого потрібна ваша фактична сторінка, щоб вона була index.html?
М.Саломаа

1
@madebydavid Я відповів на це 4 роки тому. На той момент не було надійних рішень для вирішення затримки, викликаної, коли завантажується багато сценаріїв. Таким чином, додаток вийшов з ладу, оскільки сценарії затримали завантаження сторінки. Це працює через те, що main.htmlпрограма "легка" і не має сценарії для завантаження, тим самим ініціалізуючи додаток швидше, а потім завантажуючи сценарії index.html. Закриття </head>було надруковано, додали зараз.
Робін С Самуель

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?
Нурдін Алуайн

3
window.location.href = "./ main.html? USER = xxx & SESSION = xxx"
Нітін Крішнан P

Жодна кордова та плагіни не вводяться в
main.html

Я додав цей код, але протягом приблизно 1 хвилини після сплеску з'являється білий екран. Що я повинен зробити?
Аняна

4

У мене було те саме на моєму проекті.

Я спробував "super.setIntegerProperty (" loadUrlTimeoutValue ", 70000);", але безрезультатно.

Я переконався, що всі файли були зв’язані належним чином [файли CSS, JS тощо], перевірив HTML за допомогою валідатора w3c [ 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

У моєму випадку проблема була через втрату підключення до Інтернету в моєму Wi-Fi.


1

Я стикався з тим же питанням. Я помітив, що в моєму індексі я мав і функцію "на пристрої готовий", і функцію "document.ready", тому видалення одного з них виправило мою проблему :)


-8

Ще одна причина цієї помилки може бути: немає index.htmlв .../YourApp/www/!

Я щойно дотримувався іонного керівництва , і один із кроків:

$ rm www/index.html

На iOS це не проблема, оскільки під час збирання компілятор замість цього використовує HTML за замовчуванням. Однак при будівництві для android index.htmlне використовується приклад NO . Мене взяли колись, щоб дізнатися ("ЧОМУ це працює на iOS, але не на android ...?")

Просте рішення: створіть index.html, збережіть його під .../YourApp/www, відновіть ... та voila!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.