Uygulama Hatası - Sunucu bağlantısı başarısız oldu. (File: ///android_asset/www/index.html)


157

Uygulama Başlangıçta Öldü (sunucuya bağlantı başarısız oldu)

PhoneGap BUILD kullanarak yazdığım bir Android uygulamam var. Uygulama daha önce iyi çalışıyordu, ancak şimdi uygulamamı geliştirdikten sonra bu hatayı alıyorum (sadece bazı kullanıcı arayüzü değişiklikleri)

1) Uygulamayı başlattığımda (genellikle) şunu alıyorum:

Uygulama Hatası - Sunucu bağlantısı başarısız oldu. (File: ///android_asset/www/index.html)

Bu herhangi bir sorunun kopyasıysa özür dileriz. Burada benzer sorular gördüm, ancak mükemmel bir cevap veya çözüm bulamadım. Benim durumumda olduğu gibi, son değişikliklerime kadar iyi çalışıyordu.

Yanıtlar:


73

Söylediğiniz gibi, aynı konuda birçok yinelenen soru var. Durumunuzu nasıl açıklarsanız.

Sorun, index.html dosyasını aramak için bir zaman aşımı eklenerek çözülebilir

yani super.setIntegerProperty("loadUrlTimeoutValue", 70000);activity.java dosyanıza (src / com / yourProj / - / youractivity.java içinde) bu satırın üstüne eklemeniz gerekir: super.loadUrl("file:///android_asset/www/index.html");

Açıklama:

Bu, aşağıdaki nedenlerden dolayı olabilir

Temel neden: sorun muhtemelen emülatörün hızından kaynaklanmaktadır, bu nedenle ağ çok yavaştır, iletişimi zamanında tamamlayın.

Bunun nedeni şunlar olabilir:

  1. Kodunuz / verileriniz / resminiz çok fazla boyuttadır (Sanırım bazı resimler kullanıyorsunuz, bazı kullanıcı arayüzü değişiklikleri yaptığınızı söylediğiniz gibi, resimlerin boyutu yüksek olabilir)
  2. Komut dosyanızın sonsuz veya uzun bir döngüsü olabilir, böylece yüklenmesi çok fazla zaman alır.
  3. Çok fazla komut dosyası kullanacaksınız (jQuery, iscroll, vs .. daha fazla sayıda eklenti veya komut dosyası)

7
Benim durumumda, hala yerel bir Weinre örneğine işaret eden bir komut dosyası etiketimin olmasıydı. Weinre koşmuyordu. Bu nedenle - zaman aşımları.
demaniak

Devgirl.org/2013/07/17/… bu öğretici aracılığıyla phonegap kullanarak uygulama oluşturuyorum . Lütfen bana bu setin nerede olduğunu söyler misiniz?
Ashoka Mondal

40
-1 "sorun muhtemelen öykünücünün hızından kaynaklanmaktadır, bu nedenle ağ çok yavaştır" - hiçbir ağ dahil olmadığından mantıksız ! Bu url yerel bir android varlığı içindir.
Chris Stratton

Bu benim yapılandırma dosyasına ekledi, ama onun nexus 5x üzerinde çalışmıyor -
Sa E Chowdary

183

Config.xml dosyanıza şu satırı ekleyin:

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

6
Bunu da tarif etmelisiniz
Rohit Gupta

13
Merak eden herkes için: Bir hata atmadan önce sayfayı yüklerken milisaniye cinsinden beklenilen süre: cordova.apache.org/docs/en/latest/config_ref/index.html
Cedric Reichenbach

13
<preference name="loadUrlTimeoutValue" value="120000" />700000 ile karşılaştırıldığında daha iyi, yani uygulamanız iki dakika içinde gelmiyorsa, o zaman yanlış bir şey var (ve başka bir çözüm kullanarak düzeltmelisiniz). Ne yazık ki, bir uygulamanın gelip gelmediğini görmek için yaklaşık 11 dakika beklemek istemiyorsunuz! (20 saniye)
SidMorad

Bu benim yapılandırma dosyasına ekledi, ama nexus 5x üzerinde çalışmıyor
Sa E Chowdary

Bu çok garip. Benimkini 70000 olarak ayarladım ve uygulamalar yüklenmeye çalıştıktan yaklaşık 30 saniye sonra ölüyordu. 120000 olarak değiştirdim ve şimdi 3-4 saniyede başarıyla yükleniyorlar. Tüm değiştirdiğim bu. Ahh.
Brian Knoblauch

24

İşte çalışma çözümü

yeni bir sayfa oluştur main.html

misal:

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

mainactivity.java içinde aşağıdakileri değiştirin

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

için

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

Şimdi uygulamanızı oluşturun ve herhangi bir yavaş bağlantıda çalışır

refernce .

NOT: Bu, 2013'te bulduğum bir geçici çözümdür.


3
Aslında index.html'inizi yeniden adlandırın ve window.location = './index.html' ile main.html oluşturun. MainActivity.java
super.loadUrl

4
Aynı etki! Ancak gerçek sayfanız main.html olarak değiştirilecektir. Ama aslında sayfamın index.html.BTW olmasını istiyorum, yorumunuzun yanlış olduğunu düşünüyorum. Sen adlandırmak gerekir index.htmletmek main.htmlve yaratmak index.htmleklemek, sonra sayfa window.location = './main.html'. içinde index.htmlsayfa. Bu çalışmalı.
Robin C Samuel

Evet haklısın! Bunu yazdım özledim: DI, window.location = './main.html' ile index.html oluşturmak anlamına geliyordu. :)
M.Salomaa

Neden gerçek sayfanızın index.html olması gerekiyor?
M.Salomaa

1
@madebydavid Bunu 4 yıl önce cevapladım. Bu noktada, yüklenecek çok sayıda komut dosyası olduğunda oluşan gecikmeyi ele alacak güvenilir bir çözüm yoktu. Komut dosyaları sayfa yükünü geciktirdiği için uygulama çöküyordu. Bu main.html, hafif olduğu ve yüklenecek komut dosyası olmadığı için çalışır , böylece uygulamayı daha hızlı başlatır ve ardından komut dosyalarını yükler index.html. Kapanış </head>bir yazım hatasıydı, şimdi eklendi.
Robin C Samuel

10

Lütfen aşağıdaki gibi uzaktan bağlı jQuery dosyalarını kaldırın: https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js

Bunun yerine, bu dosyayı indirin ve yerel js klasörünüzden yükleyin, URI'yi oluşturun:

js/jquery.min.js


6

İndex.html dosyanızdaki harici komut dosyalarını kaldırın

Bunu değiştir:

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

için

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

5

Benzer bir sorunum vardı ve yukarıdaki önerilere dayanarak önce "super.setIntegerProperty (" loadUrlTimeoutValue ", 70000);" ama bu yardımcı olmadı. Bu yüzden Projeyi denedim -> Temiz, işe yaradı ve şimdi uygulamayı başlatabilirim!

Avinash ...


5

Bunu dene,

1. index.html dosyanızı “main.html” olarak yeniden adlandırın

2.Yeni bir “index.html” oluşturun ve içine aşağıdaki içeriği yerleştirin:

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

3. uygulamanızı yeniden oluşturun! Başka hata yok!


ve main.html gibi bazı argümanlar eklemek zorunda kalırsam ne yapmalıyım? USER = xxx & SESSION = xxx?
Nourdine Alouane

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

Main.html
cordkin

Bu kodu ekledim, ancak yaklaşık 1 dakika boyunca, sıçramadan sonra beyaz bir ekran geliyor. Ne yapmalıyım?
Anjana

4

Projemde de aynısı vardı.

"Super.setIntegerProperty (" loadUrlTimeoutValue ", 70000);" denedim, ancak boşuna.

Tüm dosyaların düzgün bir şekilde bağlandığından emin oldum [CSS, JS dosyaları vb.], W3c doğrulayıcı [ http://validator.w3.org/#validate_by_upload ] kullanarak HTML'yi doğruladı ve projeyi temizledim [Project -> Clean]

Şimdi aynı hata olmadan yüklenir ve yürütülür.

Bu yardımcı olur umarım


4

Yükleme Zaman Aşımı Limitinin uzatılması, hataya neden olan sorunu çözmez, sadece sistemin mesajı göstermesini önler, ancak performans herhangi bir şekilde etkilenir.

Asıl neden: Dosyaları veya görüntüleri uzak konumlara bağlıyor olabilirsiniz ve bu kaynakların yüklenmesi çok uzun sürüyor. (bu muhtemelen en yaygın hatadır)

Kesin çözüm: Gerekli tüm komut dosyalarını, görüntüleri ve css'yi bazı yerel klasörlere taşıyın ve yerel olarak yükleyin ...

Performans artırılacak ve hata etkin bir şekilde çözülecektir.


4

Bunu iyonik bir uygulamada düzeltmek,

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

Bu satırdan hemen sonra config.xml dosyanıza

<platform name="android">

3

index.htmlDosyayı kontrol et . Uygulamayı çalıştırdığınızda mevcut olmayan harici kaynaklar kullanıyorsanız, bu hatayı alabilirsiniz.

Benim durumumda hata ayıklayıcı komut dosyası (weinre) bağlantısını silmeyi unuttum.

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

Bu yüzden uygulama emülatör üzerinde çalıştı çünkü http://192.168.0.102:8080/benim yerel ana bilgisayarımdaydı ve emülatör için mevcuttu.

Ancak cep telefonuna uygulama kurduğumda aynı hatayla karşılaştım çünkü 192.168.0.102 mobil ağdan kullanılamıyordu.


1

Benim durumumda iyonik kullanıyorum ve iletişim kutusunu emülatördeki uygulamalara gitti ve bunun yerine uygulamamı oradan çalıştırdım. Bu işe yaradı. Bunun fikrini buradan aldım çünkü bu sadece bir mola konusu.


1

Görsel stüdyo kullanıyorsanız. Config.xml dosyasını değiştirdikten sonra bazen buna ihtiyacınız olur

temiz yapı çözümü uygulamanızı yeniden oluşturun

Benim için çalışıyor.



1

Aynı sorunla karşı karşıyaydım. Benim dizininde hem "cihaz hazır" hem de "document.ready" fonksiyonu olduğunu fark ettim, bu yüzden birini kaldırmak benim sorunum düzeltildi :)


-8

Bu hata oluşabilir diğer nedeni ise: hayır yoktur index.htmlyılında .../YourApp/www/!

İyonik kılavuzu takip ettim ve adımlardan biri:

$ rm www/index.html

Derleme sırasında derleyici bazı varsayılan HTML alır gibi iOS'ta bu sorun değil. Ancak, android için inşa ederken, hiçbir örnek index.htmlkullanılmaz. Öğrenmem bir süre aldı ("NEDEN iOS'ta çalışıyor, ama android'de çalışmıyor ...?)

Kolay çözüm: Bir index.html oluşturun, altına kaydedin .../YourApp/www, yeniden oluşturun ... ve voila!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.