2013-03-25 10 views
7

Skończyłem z moją aplikacją i teraz próbuję zbudować .apk i przetestować go na moim telefonie (bez debugowania, w trybie zwolnienia).Aplikacja na Androida jest zbyt duża i funkcja wyłączania łączy się

Ustawienie łącza do "Brak" wszystko działa poprawnie. Problem polega na tym, że aplikacja jest zbyt duża - i to jest śmieci.


Czytałem ten artykuł o łączeniu: Click Here

więc próbowałem "SDK zwoje Tylko" i "SDK i Zespoły Obsługi". Druga opcja (Oba Złożenia) nie powiodła się bezpośrednio, nie mogłem nawet zobaczyć pierwszego ekranu (logowania) mojej aplikacji.

Z łączem ustawionym na "Złożenia Sdk tylko" Udało mi się dojść do pierwszego ekranu (Loginscreen). Aplikacja jest również 6.73MB co znacznie lepsze i bardziej kwalifikowalne.

Problem, przed którym stoję, polega na tym, że po kliknięciu przycisku "Zaloguj się" na pierwszym ekranie, nic się nie dzieje (normalnie przekieruje mnie to do następnej czynności).

przycisk jest binded do polecenia:

public IMvxCommand LoginCommand 
{ 
    get 
    { 
     return new MvxRelayCommand(DoLogin); 
    } 
} 

private void DoLogin() 
{ 
    //Do Stuff 
} 

oddanie Breakpoint w DoLogin() - pokazuje, że nigdy nie idzie w

Cóż, jak mogę rozwiązać ten problem.? Wydaje się, że funkcjonalność mvvmcross jest wyłączona z jakiegokolwiek powodu?

Moim głównym celem jest zmniejszenie rozmiaru aplikacji.


tutaj, jeśli ważna jest konieczne odcinek od .csproj

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 
<DebugType>pdbonly</DebugType> 
<Optimize>true</Optimize> 
<OutputPath>bin\Release\</OutputPath> 
<DefineConstants>TRACE</DefineConstants> 
<ErrorReport>prompt</ErrorReport> 
<WarningLevel>4</WarningLevel> 
<AndroidUseSharedRuntime>False</AndroidUseSharedRuntime> 
<AndroidLinkMode>SdkOnly</AndroidLinkMode> 
<AndroidLinkSkip /> 
<EmbedAssembliesIntoApk>True</EmbedAssembliesIntoApk> 

+0

patrz również http://stackoverflow.com/questions/14291696/ mvvmcross-android-click-binding-binding-not-working-in-release-build/14292504 # 14292504 – Stuart

+0

i http://stackoverflow.com/questions/14275499/problems-with-mvvmcross-binding-on-ios-works -on-simulator-but-some-properties i http://stackoverflow.com/questions/11349864/mvvmcross-monotouch-fail-to-bind-properties-on-a-real-ipad-but-itwork-on -th – Stuart

Odpowiedz

6

Z MvvmCross, ja generalnie korzystać tylko SDK Assemblies.

Aby obejść ten problem, Linker kończy się niepowodzeniem w przypadku MvvmCross (i ogólnych problemów związanych z MonoTouch/MonoDroid), a następnie dodajemy pliki typu LinkerPleaseInclude, aby oszukać linker.

Przykładowy plik jest:

public class LinkerIncludePlease 
{ 
    private void IncludeClick(View view) 
    { 
     view.Click += (s, e) => { }; 
    } 

    private void IncludeVisibility(View view) 
    { 
     view.Visibility = view.Visibility + 1; 
    } 

    private void IncludeRelativeLayout(RelativeLayout relative) 
    { 
     relative.Visibility = ViewStates.Visible; 
    } 
} 

od: https://github.com/slodge/MvvmCross/blob/vnext/Sample%20-%20TwitterSearch/TwitterSearch.UI.Droid/LinkerIncludePlease.cs

Jest to irytujące, aby to zrobić ... ale to nie trwa długo - większość aplikacji nie faktycznie wiążą się z wiele różnych właściwości/zdarzeń.

+0

dzięki Stuart, to niesamowite! – eMi

0

I zmienia Progressbar obejmują metodę

public void Include(ProgressBar progressBar) 
    { 
     progressBar.Visibility = progressBar.Visibility; 
    } 

i to działało. Usunąłem wszystkie pozostałe i wszystkie zaczęły działać. Zakładam, że to działa, ponieważ testuje zarówno getter, jak i ustawiającą właściwość ProgressBar Visibility.

Jeśli nie jest to poprawne Powodem tej pracy może ktoś dodać komentarz, więc możemy wszystko unsterstand jak rozwiązać te problemy w przyszłości

Powiązane problemy