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.

gitsitgo
sumber

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)
AnhSirk Dasarp
sumber
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" />
Soufiene
sumber
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.

Robin C Samuel
sumber
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

sharma_kunal
sumber
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>
Raugaral
sumber
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 ...

Avinash
sumber
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!

Nithin Krishnan P
sumber
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

Deano
sumber
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.

jjyepez
sumber
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">
Adeojo Emmanuel IMM
sumber
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.

Alexey Muravyov
sumber
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.

FernandoZ
sumber
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.

caglabaran
sumber
1

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

Chong Lip Phang
sumber
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 :)

Burung
sumber
-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!

Beladau
sumber