Lỗi ứng dụng - Kết nối đến máy chủ không thành công. (tệp: ///android_asset/www/index.html)


157

Ứng dụng chết khi khởi động (kết nối với máy chủ không thành công)

Tôi có một ứng dụng Android mà tôi đang viết bằng PhoneGap BUILD. Ứng dụng đã hoạt động tốt trước đó, nhưng bây giờ có vẻ như tôi đang gặp lỗi này sau khi tinh chỉnh ứng dụng của mình (chỉ một số thay đổi giao diện người dùng)

1) Khi tôi khởi động ứng dụng, tôi (thường) nhận được:

Lỗi ứng dụng - Kết nối đến máy chủ không thành công. (tệp: ///android_asset/www/index.html)

Xin lỗi nếu đây là sự trùng lặp của bất kỳ câu hỏi. Tôi đã thấy một số câu hỏi tương tự ở đây, nhưng tôi không thể tìm thấy một câu trả lời hoặc giải pháp hoàn hảo. Như trong trường hợp của tôi, nó đã hoạt động tốt cho đến những thay đổi cuối cùng của tôi.

Câu trả lời:


73

Như bạn đã nói, có rất nhiều câu hỏi trùng lặp về cùng một chủ đề. Bất kỳ cách giải thích tình huống của bạn.

Vấn đề có thể được giải quyết bằng cách thêm thời gian chờ để gọi index.html của bạn

tức là bạn cần thêm super.setIntegerProperty("loadUrlTimeoutValue", 70000);vào tệp Activity.java của mình (bên trong src / com / yourProj / - / youractivity.java) phía trên dòng này: super.loadUrl("file:///android_asset/www/index.html");

Giải trình:

Điều này có thể xảy ra do những lý do sau đây

Lý do cốt lõi: vấn đề có thể là do tốc độ của trình giả lập nên mạng quá chậm hoàn thành việc liên lạc một cách kịp thời.

Điều này có thể là do:

  1. Mã / dữ liệu / hình ảnh của bạn có kích thước quá lớn (tôi đoán trong trường hợp của bạn, bạn đang sử dụng một số hình ảnh, như bạn đã nói bạn đã thực hiện một số sửa đổi UI, có thể là kích thước của hình ảnh cao)
  2. Tập lệnh của bạn có thể có một vòng lặp vô hạn hoặc dài, do đó mất quá nhiều thời gian để tải.
  3. Bạn sẽ sử dụng quá nhiều tập lệnh (jQuery, iscroll, v.v. .. số lượng bổ sung hoặc tập lệnh nhiều hơn)

7
Điều xảy ra trong trường hợp của tôi là tôi vẫn có một thẻ script chỉ vào một thể hiện cục bộ của Weinre. Weinre không chạy. Do đó - hết giờ.
demaniak

Tôi đang tạo ứng dụng bằng phonegap thông qua devgirl.org/2013/07/17/ . Hướng dẫn này. Bạn có thể vui lòng cho tôi biết nơi tôi phải đặt setIntegerproperty này không.
Ashoka

40
-1 "vấn đề có thể là do tốc độ của trình giả lập nên mạng quá chậm" - không thể tin được, vì không có mạng nào liên quan! Url đó là một tài sản Android địa phương.
Chris Stratton

tôi đã thêm cái này vào tập tin cấu hình của mình, nhưng nó không hoạt động trên nexus 5x -
Sa E Chowdary

183

Trong tệp cấu hình của bạn, thêm dòng này:

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

6
Bạn cũng nên mô tả điều này
Rohit Gupta

13
Đối với bất kỳ ai thắc mắc: Đó là lượng thời gian tính bằng mili giây đã chờ trong khi tải trang trước khi đưa ra lỗi: cordova.apache.org/docs/en/latest/config_Vf/index.html
Cedric Reichenbach

13
<preference name="loadUrlTimeoutValue" value="120000" />tốt hơn so với 700000, ý tôi là nếu ứng dụng của bạn không xuất hiện trong hai phút, thì có gì đó không ổn (và bạn nên khắc phục bằng cách sử dụng giải pháp khác). Chắc chắn bạn không muốn đợi khoảng 11 phút để xem ứng dụng có xuất hiện hay không! (Đó là lý do tại sao chúng ta có khái niệm hết thời gian chờ, phải không? :-)) Theo tài liệu, giá trị mặc định là 20000 (20 giây)
SidMorad

tôi đã thêm cái này vào tập tin cấu hình của mình, nhưng nó không hoạt động trên nexus 5x
Sa E Chowdary

Điều này thật kỳ lạ. Tôi đã cài đặt 70000 và các ứng dụng đã chết sau khoảng 30 giây cố gắng tải. Tôi đã thay đổi nó thành 120000 và bây giờ họ tải thành công trong 3-4 giây. Đó là tất cả những gì tôi đã thay đổi. Argh.
Brian Knoblauch

24

Đây là giải pháp làm việc

tạo một trang mới main.html

thí dụ:

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

thay đổi như sau trong mainactivity.java

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

đến

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

Bây giờ xây dựng ứng dụng của bạn và nó hoạt động trên mọi kết nối chậm

bồi dưỡng .

LƯU Ý: Đây là một cách giải quyết tôi tìm thấy vào năm 2013.


3
Trên thực tế, bạn chỉ cần đổi tên index.html của mình và tạo main.html với window.location = './index.html'. Không cần thay đổi super.loadUrl từ MainActivity.java
M.Salomaa

4
Hiệu quả tương tự! Nhưng trang thực tế của bạn sẽ được thay đổi thành main.html. Nhưng tôi muốn trang thực sự của tôi là index.html.BTW, tôi nghĩ nhận xét của bạn là sai. Bạn cần đổi tên index.htmlthành main.htmlvà tạo một index.htmltrang, sau đó thêm window.location = './main.html'. trong index.htmltrang. Điều này nên làm việc.
Robin C Samuel

Phải bạn đúng rồi! Tôi nhớ đã gõ cái đó: DI có nghĩa là tạo index.html với window.location = './main.html'. :)
M.Salomaa

Tại sao bạn cần trang thực tế của bạn là index.html?
M.Salomaa

1
@madebydavid Tôi đã trả lời 4 năm trước. Tại thời điểm đó, không có giải pháp đáng tin cậy để xử lý sự chậm trễ gây ra khi có rất nhiều tập lệnh được tải. Vì vậy, ứng dụng đã bị sập do các tập lệnh bị trì hoãn tải trang. Điều này hoạt động vì main.htmlánh sáng và không có tập lệnh để tải, do đó khởi tạo ứng dụng nhanh hơn và sau đó tải tập lệnh trên index.html. Việc đóng cửa </head>là một lỗi đánh máy, thêm bây giờ.
Robin C Samuel

10

Vui lòng xóa các tệp jQuery được liên kết từ xa, chẳng hạn như: https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js

Thay vào đó, hãy tải xuống tệp này và tải nó từ thư mục js cục bộ của bạn, tạo URI:

js/jquery.min.js


6

Xóa các tập lệnh bên ngoài trong index.html của bạn

Thay đổi điều này:

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

đến

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

5

Tôi đã gặp vấn đề tương tự và dựa trên các đề xuất ở trên, lần đầu tiên tôi đã thêm "super.setIntegerProperty (" loadUrlTimeoutValue ", 70000);" nhưng điều đó không giúp được gì. Vì vậy, tôi đã thử Project -> Clean, nó đã hoạt động và tôi có thể khởi chạy ứng dụng ngay bây giờ!

Avinash ...


5

Thử cái này,

1.Đặt tên index.html của bạn vào chính main.html

2. Tạo một chỉ mục mới của New.html.html và đặt nội dung sau vào đó:

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

3. Xây dựng lại ứng dụng của bạn! Không còn lỗi nữa!


và tôi nên làm gì nếu tôi phải thêm một số đối số như main.html? USER = xxx & SESSION = xxx?
Nourdine Alouane

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

Không có cordova và plugin nào được tiêm vào main.html
viskin

Tôi đã thêm mã này nhưng khoảng 1 phút, một màn hình trắng xuất hiện sau khi văng. Tôi nên làm gì?
Anjana

4

Tôi đã có cùng một dự án của tôi.

Tôi đã thử "super.setIntegerProperty (" loadUrlTimeoutValue ", 70000);" nhưng không có kết quả.

Tôi đảm bảo tất cả các tệp được liên kết chính xác [CSS, tệp JS, v.v.], xác thực HTML bằng trình xác thực w3c [ http://validator.w3.org/#validate_by_upload ] và làm sạch dự án [Project -> Clean]

Bây giờ nó tải và thực thi mà không có lỗi tương tự.

Hi vọng điêu nay co ich


4

Mở rộng giới hạn thời gian tải sẽ không giải quyết được vấn đề gây ra lỗi, nó chỉ giúp hệ thống hiển thị thông báo nhưng hiệu suất sẽ bị ảnh hưởng.

Lý do thực tế: Bạn có thể đang liên kết các tệp hoặc hình ảnh đến các vị trí từ xa và những tài nguyên đó đang mất quá nhiều thời gian để tải. (đây có thể là lỗi phổ biến nhất)

Giải pháp dứt khoát: di chuyển tất cả các tập lệnh, hình ảnh và css cần thiết vào một số thư mục cục bộ và tải chúng cục bộ ...

Hiệu suất sẽ được tăng lên và lỗi sẽ được giải quyết hiệu quả.


4

sửa lỗi này trên ứng dụng ion, chỉ cần thêm

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

vào tệp config.xml của bạn ngay sau dòng này

<platform name="android">

3

Kiểm tra index.htmlhồ sơ của bạn . Nếu bạn sử dụng tài nguyên bên ngoài, không có sẵn khi bạn chạy ứng dụng thì bạn có thể gặp lỗi này.

Trong trường hợp của tôi, tôi đã quên xóa liên kết trên tập lệnh gỡ lỗi (weinre).

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

Vì vậy, ứng dụng hoạt động trên trình giả lập vì http://192.168.0.102:8080/trên localhost của tôi và có sẵn cho trình giả lập.

Nhưng khi tôi cài đặt ứng dụng trên điện thoại di động, tôi cũng gặp lỗi tương tự, vì 192.168.0.102 không có sẵn từ mạng di động.


1

Trong trường hợp của tôi, tôi đang sử dụng ionic và tôi chỉ cần đóng hộp thoại đi đến các ứng dụng trong trình giả lập và chạy ứng dụng của tôi từ đó. Điều này đã làm việc. Tôi đã có ý tưởng về điều đó từ đây vì đây chỉ là vấn đề thời gian.


1

Nếu bạn đang sử dụng phòng thu trực quan. Sau khi thay đổi config.xml đôi khi bạn cần điều này

giải pháp xây dựng sạch sẽ xây dựng lại ứng dụng của bạn

Đó là làm việc cho tôi.


1

Đối với trường hợp của tôi, vấn đề là do mất kết nối internet trong WiFi của tôi.


1

Tôi đã phải đối mặt với cùng một vấn đề. Tôi nhận thấy rằng trong chỉ mục của mình, tôi có cả chức năng "sẵn sàng trên thiết bị" và "document. Yet", vì vậy việc loại bỏ một trong số chúng đã khắc phục vấn đề của tôi :)


-8

Một lý do lỗi này có thể xảy ra là: không có index.htmltrong .../YourApp/www/!

Tôi chỉ làm theo hướng dẫn ion , và một trong các bước là:

$ rm www/index.html

Trên iOS, điều này không có vấn đề gì vì trong quá trình xây dựng, trình biên dịch sẽ lấy một số HTML mặc định. Tuy nhiên, khi xây dựng cho Android, KHÔNG index.htmlsử dụng ví dụ . Thỉnh thoảng tôi mới tìm hiểu ("TẠI SAO nó hoạt động trên iOS, nhưng không phải trên Android ...?)

Giải pháp dễ dàng: tạo một index.html, lưu nó bên dưới .../YourApp/www, xây dựng lại ... et voila!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.