Mam aplikację mobilną (C# / Xamarin) dla Androida i w emulatorze działa dobrze, natomiast w telefonie (wersja signed.apk) "wykrzacza się" z tekstem "przepraszamy aplikacja ...... przestała działać).... Co może być powodem?
Problemy z pamięcią lub brak jakiś bibliotek, z których korzysta Twoja aplikacja. Ewentualnie niepoprawne wersje tych bibliotek.
Powodem jest brak szklanej kuli, która pozwoliła by nam zajrzeć co właściwie zrobiłeś.
Musisz ściągnąć crash loga i go zdekodować, on ci wskaże miejsce problemu.
Może ktoś od Androida zapoda linka jak to zrobić.
W katalogu Release mam sporo plików różnego typu w tym DLL.
Ja wgrałem jedynie plik app7-signed.apk sądząc że to wystarczy.
Poprzednią aplikację wgrałem w ten sposób (tzn. tylko APK wgrałem do telefonu) i działa bez problemowo.
W katalogach bin / Release oraz bin / Debug mam po kilkanaście plików (.mdb i trochę .dll) łacznie mają ok. 10 MB, przy czym pojedyncza appka .apk ma około 5 MB.
W pierwszym "projekcie" (taki heloł łerld) wystarczyło wgrać do telefonu jeden plik app1-signed.apk i wszystko działa elegancko. Dlatego teraz postąpiłem podobnie.
O crash logach poczytam, poszukam informacji...
Znalazłem kilka takich appek, ale niestety wymagają pozwoleń, a więc chyba też konta root (?). Mam Andka Jelly Bean który nie pozwala im czytać logów.
To ponownie ja ;) (ksywka na forum zmienia się sama)
Chyba z logami sobie na komórce nie poradze. Bo trzeba dać "grant permission"....
Oto mój kod aplikacji:
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
SetContentView (Resource.Layout.Main);
Button button = FindViewById<Button> (Resource.Id.myButton);
TextView tvp = FindViewById<TextView>(Resource.Id.textView1);
TextView tvd = FindViewById<TextView>(Resource.Id.textView2);
button.Click += delegate
{
var html = new HtmlDocument();
try
{
html.LoadHtml(new WebClient().DownloadString(URL));
}
catch (Exception e)
{
Toast.MakeText(this, "Problem z siecia!.", ToastLength.Long).Show();
}
if (html == null)
{
Toast.MakeText(this, "Problem z siecia!.", ToastLength.Long).Show();
return;
}
var link = html.DocumentNode
.Descendants("a")
.First(x => x.Attributes["class"] != null
&& x.Attributes["class"].Value == "offerrentos");
if (link != null)
..... itd. itd. ............
Wyciagam z kodu HTML interesujace rzeczy..
............................
}
}
}
}
Program w emulatorze działa bez problemu, w telefonie uruchamia się i mówi "żegnaj" jak tylko nacisnę myButton.
W czym może być problem?
Weź ten kod w try{} catch(){} i w catchu wypisz toastem błąd i będziesz wiedział o co chodzi
DDRako napisał(a):
Weź ten kod w try{} catch(){} i w catchu wypisz toastem błąd i będziesz wiedział o co chodzi
No to chyba najlepszy pomysł, ja stosowałem Console.WriteLine - ale to działa oczywiście tylko w VS,...
DZIEKI!