2017-01-20 11 views
8

Kiedy uruchomić sesję debugowania dla moich Xamarin.Forms projektu Android, ulega awarii natychmiast, z następującym komunikatem o błędzie:Xamarin.Forms Android Application wywala na starcie

java.lang.RuntimeException: Nie można uzyskać dostawca mono.MonoRuntimeProvider: java.lang.NullPointerException: Próba wywołania metody wirtualne "java.lang.String java.io.File.getAbsolutePath() na null odniesienia obiektu

używam Shared Runtime i Fast Deploy, chociaż dezaktywacja albo nie rozwiązuje mojego problemu.

Jednak rozwiązaniem mojego problemu jest ręczne odinstalowanie aplikacji z urządzenia. Wtedy będzie działać na jedną sesję debugowania, ale zaraz po uruchomieniu następnej, ten sam błąd powraca.

Wydaje mi się, że aplikacja nie jest w stanie znaleźć środowiska wykonawczego Mono Shared, jeśli była zainstalowana w poprzedniej sesji debugowania, ale nie mogę na całe życie zrozumieć dlaczego.

+0

Przejdź Ustawienia> Aplikacje i odinstaluj środowiska wykonawcze Xamarin i Mono z urządzenia/urządzenia wirtualnego. I spróbuj ponownie. –

+0

@AkashKava Tak, jak powiedziałem w moim poście, działa i aplikacja zaczyna się od nowa, ale jest to tymczasowa poprawka i problem zawsze powraca. –

+0

Zauważyłem ten błąd natychmiast po zakorzenieniu docelowego urządzenia * samsung * (aby zainstalować ** binarne sqlite3 ** ARM). Zainstalowałem także ** busybox ** (która nie ma jedynej potrzebnej komendy, ** 'file' **, i nie będzie odinstalowywana czysto). Radzę nie kojarzyć Samsunga, jeśli ważne są ważne testy. – samosaris

Odpowiedz

-1

Spróbuj usunąć wszystkie foldery "bin" i "obj" w projekcie. Następnie oczyść i odbuduj.

2

Oto kroki, aby przejść przez gdy próbuje naprawić coś takiego:

  1. Czy używasz najnowszej stabilnej wersji Xamarin? Jeśli nie, zaktualizuj.
  2. Jak wspomniano w komentarzach, należy również spróbować usunąć środowisko wykonawcze Mono ze swojego urządzenia. Co szukasz są następujące pozycje na liście zainstalowanych aplikacji (ja tylko usunąć Mono Shared Runtime pierwszy, ale nie zaszkodzi spróbować, aby usunąć wszystkie z nich):
    • Mono współdzielonych Runtime
    • mono Android-x Pomoc
    • Xamarin.Android API-x Pomoc
  3. Czyste rozwiązanie i spróbuj ponownie

Jeśli to nie rozwiąże problemu, należy dodawać więcej fr om dziennik błędów. Co szukam jest kilka linii po głównym definicji wyjątków zobaczyć StackTrace, jak to (głównie linie rozpoczynające na):

java.lang.RuntimeException: Unable to start activity ComponentInfo{plp.cs4b.thesis.drawitapp/plp.cs4b.thesis.drawitapp.PlayGame}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String plp.cs4b.thesis.drawitapp.Player.getName()' on a null object reference 
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(Native Method) 

podczas pracy z Xamarin i Android, błąd może nie zawsze jest tam, gdzie wskazuje wyjątek. Dlatego warto przyjrzeć się temu głębiej w takiej sytuacji.

1

Według dwóch innych stanowisk na SO znaleźć tutaj:
Xamarin.Forms "App has stopped working" on android
Why does my Xamarin Android application suddenly require external storage permissions?
Wygląda na to „może” być brak zgody zewnętrznej pamięci masowej, która zazwyczaj znajduje się w pliku AssemblyInfo.cs:
[assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)] Lub można ustawić w pliku AndroidManifest.xml.
Albo zamiast tego jako autor pierwszego pytania opublikował swoją odpowiedź, po prostu zmienił lokalizację instalacji na wewnętrzną.
Sugeruję, że warto to sprawdzić.