NameNotFoundException web görünümü


116

Crashlytics'ten bazı cihazların com.google.android.webview eksik olduğunu gösteren hatalar alıyorum. Bu nasıl mümkün olabilir?

java.lang.RuntimeException: Unable to start activity   ComponentInfo{com.myapp.app/com.myapp.ReaderActivity}: android.view.InflateException: Binary XML file line #29: Error inflating class com.myapp.MyWebView
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
       at android.app.ActivityThread.access$800(ActivityThread.java:144)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:135)
       at android.app.ActivityThread.main(ActivityThread.java:5221)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Caused by: android.view.InflateException: Binary XML file line #29: Error inflating class com.myapp.MyWebView
       at android.view.LayoutInflater.createView(LayoutInflater.java:633)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.createCustomViewInternal(SourceFile:206)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.access$000(SourceFile:20)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater$PrivateWrapperFactory2.onCreateView(SourceFile:297)
       at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:177)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:733)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate(SourceFile:60)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
       at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(SourceFile:228)
       at android.support.v7.app.ActionBarActivity.setContentView(SourceFile:102)
       at com.myapp.ReaderActivity.onCreate(SourceFile:120)
       at android.app.Activity.performCreate(Activity.java:5933)
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
       at android.app.ActivityThread.access$800(ActivityThread.java:144)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:135)
       at android.app.ActivityThread.main(ActivityThread.java:5221)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Caused by: java.lang.reflect.InvocationTargetException
       at java.lang.reflect.Constructor.newInstance(Constructor.java)
       at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
       at android.view.LayoutInflater.createView(LayoutInflater.java:607)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.createCustomViewInternal(SourceFile:206)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.access$000(SourceFile:20)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater$PrivateWrapperFactory2.onCreateView(SourceFile:297)
       at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:177)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:733)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate(SourceFile:60)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
       at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(SourceFile:228)
       at android.support.v7.app.ActionBarActivity.setContentView(SourceFile:102)
       at com.myapp.ReaderActivity.onCreate(SourceFile:120)
       at android.app.Activity.performCreate(Activity.java:5933)
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
       at android.app.ActivityThread.access$800(ActivityThread.java:144)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:135)
       at android.app.ActivityThread.main(ActivityThread.java:5221)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Caused by: android.util.AndroidRuntimeException: android.content.pm.PackageManager$NameNotFoundException: com.google.android.webview
       at android.webkit.WebViewFactory.getFactoryClass(WebViewFactory.java:161)
       at android.webkit.WebViewFactory.getProvider(WebViewFactory.java:101)
       at android.webkit.WebView.getFactory(WebView.java:2185)
       at android.webkit.WebView.ensureProviderCreated(WebView.java:2180)
       at android.webkit.WebView.setOverScrollMode(WebView.java:2239)
       at android.view.View.(View.java:3581)
       at android.view.View.(View.java:3675)
       at android.view.ViewGroup.(ViewGroup.java:491)
       at android.widget.AbsoluteLayout.(AbsoluteLayout.java:55)
       at android.webkit.WebView.(WebView.java:538)
       at android.webkit.WebView.(WebView.java:483)
       at android.webkit.WebView.(WebView.java:466)
       at android.webkit.WebView.(WebView.java:453)
       at com.myapp.MyWebView.(SourceFile:31)
       at java.lang.reflect.Constructor.newInstance(Constructor.java)
       at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
       at android.view.LayoutInflater.createView(LayoutInflater.java:607)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.createCustomViewInternal(SourceFile:206)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.access$000(SourceFile:20)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater$PrivateWrapperFactory2.onCreateView(SourceFile:297)
       at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:177)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:733)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate(SourceFile:60)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
       at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(SourceFile:228)
       at android.support.v7.app.ActionBarActivity.setContentView(SourceFile:102)
       at com.myapp.ReaderActivity.onCreate(SourceFile:120)
       at android.app.Activity.performCreate(Activity.java:5933)
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
       at android.app.ActivityThread.access$800(ActivityThread.java:144)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:135)
       at android.app.ActivityThread.main(ActivityThread.java:5221)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Caused by: android.content.pm.PackageManager$NameNotFoundException: com.google.android.webview
       at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:114)
       at android.webkit.WebViewFactory.getFactoryClass(WebViewFactory.java:133)
       at android.webkit.WebViewFactory.getProvider(WebViewFactory.java:101)
       at android.webkit.WebView.getFactory(WebView.java:2185)
       at android.webkit.WebView.ensureProviderCreated(WebView.java:2180)
       at android.webkit.WebView.setOverScrollMode(WebView.java:2239)
       at android.view.View.(View.java:3581)
       at android.view.View.(View.java:3675)
       at android.view.ViewGroup.(ViewGroup.java:491)
       at android.widget.AbsoluteLayout.(AbsoluteLayout.java:55)
       at android.webkit.WebView.(WebView.java:538)
       at android.webkit.WebView.(WebView.java:483)
       at android.webkit.WebView.(WebView.java:466)
       at android.webkit.WebView.(WebView.java:453)
       at com.myapp.MyWebView.(SourceFile:31)
       at java.lang.reflect.Constructor.newInstance(Constructor.java)
       at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
       at android.view.LayoutInflater.createView(LayoutInflater.java:607)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.createCustomViewInternal(SourceFile:206)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.access$000(SourceFile:20)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater$PrivateWrapperFactory2.onCreateView(SourceFile:297)
       at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:177)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:733)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate(SourceFile:60)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
       at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(SourceFile:228)
       at android.support.v7.app.ActionBarActivity.setContentView(SourceFile:102)
       at com.myapp.ReaderActivity.onCreate(SourceFile:120)
       at android.app.Activity.performCreate(Activity.java:5933)
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
       at android.app.ActivityThread.access$800(ActivityThread.java:144)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:135)
       at android.app.ActivityThread.main(ActivityThread.java:5221)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

Ve sadece Lollipop çalıştıran cihazlardan. Nexus 5 cihazımda test ettim ancak hatayı yeniden oluşturamıyorum. Proguard kullanıyorum

MyWebView şuna benzer:

public class MyWebView extends WebView {

    public static final String tag = MyWebView.class.getName();
    private HtmlJSInterfaceNew js;

    public MyWebView(Context context) {
        super(context);
        gd = new GestureDetector(context, sogl);
        init();
    }

    public MyWebView(Context context, AttributeSet attrs) {
        super(context, attrs);
        gd = new GestureDetector(context, sogl);
        init();
    }

    public MyWebView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        gd = new GestureDetector(context, sogl);
        init();
    }

    @SuppressLint("NewApi")
    private void init() {
        setPadding(0, 0, 0, 0);
        MyWebViewClient myWebViewClient = new MyWebViewClient();        
        this.setWebViewClient(myWebViewClient);
        setWebChromeClient(new MyWebChromeClient());
        if(!isInEditMode())
        {
            getSettings().setAllowFileAccess(true);
            getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
            getSettings().setJavaScriptEnabled(true);
            WebSettings webSettings = getSettings();

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
                webSettings.setAllowContentAccess(false);
            }

            webSettings.setUseWideViewPort(true);


        }


    }
    public void addMyJavascriptInterface(HtmlJSInterfaceNew htmlJSInterface, String string) {
        js = htmlJSInterface;
        addJavascriptInterface(htmlJSInterface, string);
    }

    public class MyWebChromeClient extends WebChromeClient
    {
        public void onProgressChanged(WebView view, int progress) {
        }
    }
}

En çok temel neden:

android.util.AndroidRuntimeException: android.content.pm.PackageManager$NameNotFoundException: com.google.android.webview
       at android.webkit.WebViewFactory.getFactoryClass(WebViewFactory.java:161)

Bu yüzden proguard ve belki JavascriptInterface ile bir ilgisi olabileceğini düşünüyorum. Herhangi bir fikir?

DÜZENLEME: grepcode'dan getFactoryClass yöntemini buldum:

private static Class<WebViewFactoryProvider> getFactoryClass() throws ClassNotFoundException {
        Application initialApplication = AppGlobals.getInitialApplication();
        try {
            // First fetch the package info so we can log the webview package version.
            String packageName = getWebViewPackageName();
            sPackageInfo = initialApplication.getPackageManager().getPackageInfo(packageName, 0);
            Log.i(LOGTAG, "Loading " + packageName + " version " + sPackageInfo.versionName +
                          " (code " + sPackageInfo.versionCode + ")");

            // Construct a package context to load the Java code into the current app.
            Context webViewContext = initialApplication.createPackageContext(packageName,
                    Context.CONTEXT_INCLUDE_CODE | Context.CONTEXT_IGNORE_SECURITY);
            initialApplication.getAssets().addAssetPath(
                    webViewContext.getApplicationInfo().sourceDir);
            ClassLoader clazzLoader = webViewContext.getClassLoader();
            Trace.traceBegin(Trace.TRACE_TAG_WEBVIEW, "Class.forName()");
            try {
                return (Class<WebViewFactoryProvider>) Class.forName(CHROMIUM_WEBVIEW_FACTORY, true,
                                                                     clazzLoader);
            } finally {
                Trace.traceEnd(Trace.TRACE_TAG_WEBVIEW);
            }
        } catch (PackageManager.NameNotFoundException e) {
            // If the package doesn't exist, then try loading the null WebView instead.
            // If that succeeds, then this is a device without WebView support; if it fails then
            // swallow the failure, complain that the real WebView is missing and rethrow the
            // original exception.
            try {
                return (Class<WebViewFactoryProvider>) Class.forName(NULL_WEBVIEW_FACTORY);
            } catch (ClassNotFoundException e2) {
                // Ignore.
            }
            Log.e(LOGTAG, "Chromium WebView package does not exist", e);
            throw new AndroidRuntimeException(e);
        }
    }

2
Bunları Crashlytics verilerimizde de görüyorum. Çoğunlukla Lolipop ama aynı zamanda birkaç 4.0.4. Cihazlar arasında Nexus 7, Galaxy S5, Galaxy Discover bulunur. Tahminen hiçbiri köklü değil. Bir cihazda com.google.android.webview nasıl / neden eksik olabilir? Çok az sayıda kullanıcıyı etkiliyor ve bu cihazlarda bu sorunu yaşamayan birçok kullanıcımız var. Hmm ...
Robert Nekic

Yanıtlar:


99

Bunun, Lollipop'un Android Sistem Web Görünümü uygulaması güncellemelerinin hemen ardından çok kısa bir zaman diliminde gerçekleşmesi muhtemeldir.

Bu hatayı Google Play Geliştirici Konsolu'nda görmüştüm, ancak aynı zamanda, uygulamamın Android Sistem Web Görünümü uygulamasına erişimini gerçekten ne kadar engellemeye çalıştığımdan bağımsız olarak, Nexus 5'imde hiç yeniden oluşturamamıştım:

java.lang.RuntimeException: Unable to create application com.uninteresting.app.name:
    android.util.AndroidRuntimeException: android.content.pm.PackageManager$NameNotFoundException: com.google.android.webview

Ardından, Sistem WebView uygulaması güncellemelerinin hemen ardından uygulamamızın bazı cihazlarda yukarıdaki mesajla sürekli olarak çöktüğünü öğrendik, bu yüzden bunu test ettim. Hala sonuç yok, vanilya Nexus 5 uygulamamızı çökertmeyi reddetti! Bu yüzden diğer üreticilerin diğer telefonlarını denedim (raporlarımızın yaklaşık% 75'i Samsung Galaxy cihazlarından geliyor) ve aniden sürekli olarak çökmeye başladık. Test metodolojim:

  1. Uygulamanızı açın, bir Web Görünümü gösterildiğinden emin olun.
  2. Play Store'u açın, "Uygulamalarım" a gidin ve "Android Sistem Web Görünümü" nü açın. Güncellemeleri kaldır. Bu sizi kilitlememelidir, ancak uygulamanızın yeniden başlatmaya zorlandığını görmelisiniz.
  3. Uygulamanızı yedekleyin ve yeniden başlattıktan sonra kurtarmasına izin verin.
  4. Play Store'a geri dönün ve Android Sistem Web Görünümü'nü güncelleyin.
  5. Güncelleme işlemi sırasında uygulamanıza yeniden odaklanın. Şimdi, etkilenen bir cihazdaysanız, çökmelidir. Aksi takdirde, uygulamanız arka plana aktarılacak ve sessizce yeniden başlatılacaktır.

Şimdiye kadar söylediklerimle ilgili birkaç küçük uyarı:

  • Uygulamamız bir Web Görünümü'nü son derece erken başlatma hatasını yapıyor , bu nedenle kilitlenme mesajımızda "uygulama oluşturamıyoruz" hatası alıyoruz. Kullanıcının çökmesi için uygulamamıza bakmasına bile gerek yok. Bunun sizin için geçerli olduğundan şüpheliyim, ancak uygulamanız bu senaryo sırasında bir Web Görünümü içeren etkinliğini yeniden başlatmaya çalışırsa, bu durumu açıklar.
  • Raporlarımızın% 100'ü 5.0 cihazdan geliyor, bunun Lollipop'un altındaki herhangi bir şeyde nasıl olabileceğine dair dünyasal hiçbir fikrim yok.
  • Nexus 4 ve Nexus 5'in bu hatayı içeren raporlarını görüyoruz, bu yüzden onu neden bu cihazlarda yeniden oluşturamadığımı bilmiyorum. Ayrı bir temel neden olabilir, ancak bunu daha derinlemesine incelemem gerekiyor.

Kısacası, ProGuard veya Javascript Arayüzünüz ile yanlış bir şey yaptığınızı hemen düşünmüyorum. Raporların çoğunun temel nedeni olarak ürün yazılımını suçlamaya çok güçlü bir şekilde eğiliyorum, bu da sorunsuz bir güncelleme işleminin, bazı uygulamaların tamamen çökmesine neden olan bir güncelleme olmasıyla sonuçlandı.

Düzenleme: Birkaç test daha yaptım ve çökmeyen tüm cihazların 5.0 veya 5.0.1 olduğu, çökme yapan tüm cihazların 5.0.2 olduğu ortaya çıktı, bu yüzden parmağımı rahatça yöneltemiyorum Artık OEM'ler.


Crashlytics verilerimizde Android 4.0.4, 4.2.2, 4.4.2, 5.0, 5.0.1, 5.0.2 ve 5.1'e sahip kullanıcılardan bildirilen bu hatalardan birkaçı var. Çok nadirdir: Birkaç milyon yüklemesi olan bir uygulama için yaklaşık 30 rapor.
Robert Nekic

@RobertNekic Benzer sayıda kurulumla, bunu yalnızca 5.0 ve 5.1'de gördük ve sorunumuzun nedenine dayanarak, daha düşük bir şeyde nasıl olacağını göremiyorum. Özellikle bunlara neyin sebep olduğunu bilmek isterim.
Riley C

1
@androiddeveloper Bunun için google: code.google.com/p/android/issues/detail?id=175124 ve groups.google.com/forum/#!topic/google-admob-ads-sdk/… . Bu pek çok insanı etkiliyor gibi görünüyor.
Jared Burrows

2
İşte bir krom ekip üyesinden gelen doğru bilgiler. code.google.com/p/chromium/issues/detail?id=506369 Görünüşe göre şu anda
çözülemiyor

1
@RileyC, Mat'ın dediği gibi, bu yorumda belirtildiği gibi düzeltilmeyecek . WebView istemcisi güncellenirken bunun olabileceğini söylüyor. Kurulum tamamlandığında uygulama yeniden başlar.
Sufian

0

Bu, android'de Chrome güncellemeleri olduğunda gerçekleşir: güncelleme sırasında, paket yüklü olarak sayılmaz ve bu nedenle paket yöneticisinde aranma girişimleri başarısız olur.

Benim durumum için , cihazı gerçekten yeniden başlatana / yeniden başlatana kadar bir süre daha kaldı (uygulama çökmeye devam etti) , o zaman her şey yolunda.

Kodunuzda yanlış bir şey yok, güncellemelerin nasıl işlendiği.

Kaynak: https://bugs.chromium.org/p/chromium/issues/detail?id=506369


0

Sorunu yeniden oluşturmanın bir yolunu buldum ( htc one (m8) android 6.0 ).
Uygulamamda başlangıçta Android System WebView bileşenini kullanıyorum ( Activity.onCreate () yönteminde). Bunun kötü bir uygulama olduğunu biliyorum, ancak bu sadece örnek.

Adımlar:

  1. Google Play'i açın ve Android Sistem Web Görünümü güncellemelerini kaldırın
  2. uygulamanızı başlatın
  3. geri dönmek Google Play ve lansmanı yükleyerek güncellemeler Android Sistem WebView'da ve hızlı bir şekilde uygulamanıza geri dönmek ve uygulamanız için bekleyen kapalı
  4. 1. adımı tekrarlayın ve hızla uygulamanıza geri dönün
  5. hata raporu göreceksiniz
  6. İngilizcem için üzgünüm...
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.