Kesalahan Aplikasi - Koneksi ke server tidak berhasil. (file: ///android_asset/www/index.html)


157

App Dies On Startup (koneksi ke server tidak berhasil)

Saya memiliki aplikasi Android yang saya tulis menggunakan PhoneGap BUILD. Aplikasi ini berfungsi dengan baik sebelumnya, tetapi sekarang sepertinya saya mendapatkan kesalahan ini setelah memperbaiki aplikasi saya (hanya beberapa perubahan UI)

1) Ketika saya memulai aplikasi saya (biasanya) mendapatkan:

Kesalahan Aplikasi - Koneksi ke server tidak berhasil. (file: ///android_asset/www/index.html)

Maaf jika ini merupakan duplikasi dari pertanyaan apa pun. Saya telah melihat beberapa pertanyaan serupa di sini, tetapi saya tidak dapat menemukan jawaban atau solusi yang sempurna. Seperti dalam kasus saya itu berfungsi dengan baik sampai perubahan terakhir saya.

Jawaban:


73

Seperti yang Anda katakan, ada banyak pertanyaan rangkap pada topik yang sama. Bagaimanapun menjelaskan situasi Anda.

Masalahnya mungkin diselesaikan dengan menambahkan batas waktu untuk memanggil index.html Anda

yaitu Anda perlu menambahkan super.setIntegerProperty("loadUrlTimeoutValue", 70000);file activity.java Anda (di dalam src / com / yourProj / - / youractivity.java) Anda di atas baris ini: super.loadUrl("file:///android_asset/www/index.html");

Penjelasan:

Ini dapat terjadi karena alasan berikut

Alasan intinya: masalahnya mungkin karena kecepatan emulator sehingga jaringan terlalu lambat menyelesaikan komunikasi secara tepat waktu.

Ini bisa disebabkan oleh:

  1. Kode / data / gambar Anda terlalu besar ukurannya (saya kira dalam kasus Anda Anda menggunakan beberapa gambar, seperti yang Anda katakan Anda membuat beberapa modifikasi UI, mungkin ukuran gambar tinggi)
  2. Skrip Anda mungkin memiliki loop tak terbatas atau panjang, sehingga butuh terlalu banyak waktu untuk memuat.
  3. Anda akan menggunakan terlalu banyak skrip (jQuery, iscroll, dll. Lebih banyak jumlah plugin atau skrip)

7
Apa yang terjadi dalam kasus saya adalah bahwa saya masih memiliki tag skrip yang menunjuk ke instance lokal Weinre. Weinre tidak berlari. Oleh karena itu - batas waktu.
demaniak

Saya membuat aplikasi menggunakan phonegap melalui devgirl.org/2013/07/17/... tutorial ini. Bisakah Anda memberi tahu saya tempat setIntegerproperty ini?
Ashoka Mondal

40
-1 "masalahnya kemungkinan karena kecepatan emulator sehingga jaringan terlalu lambat" - tidak masuk akal, karena tidak ada jaringan yang terlibat! URL itu adalah aset android lokal.
Chris Stratton

saya menambahkan ini di file konfigurasi saya, tetapi tidak berfungsi pada nexus 5x -
Sa E Chowdary

183

Dalam file config.xml Anda tambahkan baris ini:

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

6
Anda harus menggambarkan ini juga
Rohit Gupta

13
Bagi siapa pun yang bertanya-tanya: Jumlah waktu dalam milidetik menunggu saat memuat laman sebelum membuat kesalahan: cordova.apache.org/docs/en/latest/config_ref/index.html
Cedric Reichenbach

13
<preference name="loadUrlTimeoutValue" value="120000" />lebih baik dibandingkan dengan 700000, maksud saya jika aplikasi Anda tidak muncul dalam dua menit, maka ada sesuatu yang salah (dan Anda harus memperbaikinya dengan menggunakan solusi lain). Tentunya Anda tidak ingin menunggu sekitar 11 menit untuk melihat apakah suatu aplikasi akan muncul atau tidak! (Itulah sebabnya kami memang memiliki konsep batas waktu, kan? :-)) Menurut dokumen tersebut, nilai defaultnya adalah 20000 (20 detik)
SidMorad

saya menambahkan ini di file konfigurasi saya, tetapi tidak berfungsi pada nexus 5x
Sa E Chowdary

Ini sangat aneh. Tambang saya telah disetel ke 70000, dan aplikasi sedang sekarat setelah sekitar 30 detik mencoba memuat. Saya mengubahnya menjadi 1.200 dan sekarang mereka memuat dengan sukses dalam 3-4 detik. Itu saja yang saya ubah. Argh.
Brian Knoblauch

24

Inilah solusi yang bisa digunakan

buat halaman baru main.html

contoh:

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

ubah yang berikut di mainactivity.java

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

untuk

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

Sekarang bangun aplikasi Anda dan itu berfungsi pada koneksi yang lambat

rujukan .

CATATAN: Ini adalah solusi yang saya temukan pada 2013.


3
Sebenarnya Anda cukup mengganti nama index.html Anda dan membuat main.html dengan window.location = './index.html'. Tidak perlu mengubah super.loadUrl dari MainActivity.java
M.Salomaa

4
Efek yang sama! Tetapi halaman Anda yang sebenarnya akan diubah menjadi main.html. Tapi saya ingin halaman saya yang sebenarnya adalah index.html.BTW, saya pikir komentar Anda salah. Anda perlu untuk mengubah nama index.htmluntuk main.htmldan membuat index.htmlhalaman, kemudian menambahkan window.location = './main.html'. di index.htmlhalaman. Ini seharusnya bekerja.
Robin C Samuel

Iya kamu benar! Saya rindu mengetik satu: DI berarti membuat index.html dengan window.location = './main.html'. :)
M.Salomaa

Mengapa Anda membutuhkan halaman aktual Anda menjadi index.html?
M.Salomaa

1
@madebydavid Saya menjawab ini 4 tahun yang lalu. Pada saat itu, tidak ada solusi yang dapat diandalkan untuk menangani penundaan yang disebabkan ketika ada banyak skrip yang akan dimuat. Jadi aplikasi mogok karena skrip menunda pemuatan halaman. Ini berfungsi karena main.htmlringan dan tidak memiliki skrip untuk dimuat, sehingga menginisialisasi aplikasi lebih cepat, dan kemudian memuat skrip aktif index.html. Penutupan </head>itu salah ketik, ditambahkan sekarang.
Robin C Samuel

10

Harap hapus file jQuery yang ditautkan dari jarak jauh seperti: https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js

Sebaliknya, unduh file ini dan muat dari folder js lokal Anda, buatlah URI:

js/jquery.min.js


6

Hapus skrip eksternal di index.html Anda

Ubah ini:

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

untuk

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

5

Saya memiliki masalah serupa dan berdasarkan saran di atas saya pertama kali menambahkan "super.setIntegerProperty (" loadUrlTimeoutValue ", 70000);" tapi itu tidak membantu. Jadi saya mencoba Project -> Clean, itu berhasil dan saya dapat meluncurkan aplikasi sekarang!

Avinash ...


5

Coba ini,

1. Ubah nama index.html Anda menjadi "main.html"

2. Buat "index.html" baru dan masukkan konten berikut ke dalamnya:

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

3. Bangun kembali aplikasi Anda! Tidak ada lagi kesalahan!


dan apa yang harus saya lakukan jika saya harus menambahkan beberapa argumen seperti main.html? USER = xxx & SESSION = xxx?
Nourdine Alouane

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

Tidak ada cordova dan plugin yang disuntikkan ke main.html
viskin

Saya telah menambahkan kode ini tetapi selama kira-kira 1 menit, layar putih muncul setelah splash. Apa yang harus saya lakukan?
Anjana

4

Saya memiliki hal yang sama pada proyek saya.

Saya mencoba "super.setIntegerProperty (" loadUrlTimeoutValue ", 70000);" tetapi tidak berhasil.

Saya memastikan semua file terhubung dengan benar [CSS, file JS dll], memvalidasi HTML menggunakan validator w3c [ http://validator.w3.org/#validate_by_upload ], dan membersihkan proyek [Project -> Clean]

Sekarang memuat dan mengeksekusi tanpa kesalahan yang sama.

Semoga ini membantu


4

Memperluas pemuatan Batas Waktu tidak akan menyelesaikan masalah yang menyebabkan kesalahan, itu hanya akan menghindari sistem untuk menampilkan pesan tetapi kinerja akan terpengaruh apa pun.

Alasan aktual: Anda mungkin menautkan file atau gambar ke lokasi yang jauh, dan sumber daya itu terlalu lama untuk dimuat. (ini kemungkinan merupakan kesalahan paling umum)

Solusi pasti: pindahkan semua skrip, gambar, dan css yang diperlukan ke beberapa folder lokal dan muat secara lokal ...

Kinerja akan meningkat dan kesalahan akan dipecahkan secara efektif.


4

memperbaiki ini pada aplikasi ion, cukup tambahkan

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

ke file config.xml Anda segera setelah baris ini

<platform name="android">

3

Periksa index.htmlfile Anda . Jika Anda menggunakan sumber daya eksternal, yang tidak tersedia saat Anda menjalankan aplikasi maka Anda bisa mendapatkan kesalahan ini.

Dalam kasus saya, saya lupa menghapus tautan pada skrip debugger (weinre).

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

Jadi aplikasi bekerja pada emulator karena http://192.168.0.102:8080/berada di localhost saya dan tersedia untuk emulator.

Tetapi ketika saya mengatur aplikasi pada ponsel saya memiliki kesalahan yang sama, karena 192.168.0.102 tidak tersedia dari jaringan seluler.


1

Dalam kasus saya, saya menggunakan ion dan saya hanya menutup dialog pergi ke aplikasi di emulator dan menjalankan aplikasi saya dari sana. Ini berhasil. Saya mendapat ide itu dari sini karena itu hanya masalah waktu.


1

Jika Anda menggunakan studio visual. Setelah mengubah config.xml terkadang Anda membutuhkan ini

solusi membangun bersih membangun kembali aplikasi Anda

Ini bekerja untuk saya.


1

Untuk kasus saya, masalahnya adalah karena kehilangan koneksi internet di WiFi saya.


1

Saya menghadapi masalah yang sama. Saya perhatikan bahwa dalam indeks saya memiliki fungsi "di perangkat siap" dan "document.ready", jadi menghapus salah satu dari mereka memperbaiki masalah saya :)


-8

Alasan lain kesalahan ini mungkin terjadi adalah: tidak ada index.htmldi .../YourApp/www/!

Saya hanya mengikuti panduan ion , dan salah satu langkahnya adalah:

$ rm www/index.html

Di iOS ini tidak ada masalah karena selama pembuatan kompiler mengambil beberapa HTML default sebagai gantinya. Namun, saat membangun untuk android, TIDAK ada contoh index.htmlyang digunakan. Butuh beberapa saat untuk mencari tahu ("MENGAPA kerjanya di iOS, tetapi tidak di android ...?)

Solusi mudah: buat index.html, simpan di bawah .../YourApp/www, bangun kembali ... dan voila!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.