2013-03-25 8 views
7

Ho finito con la mia app e ora sto provando a compilare .apk e testarlo sul mio telefono (senza debug, in modalità di rilascio).L'app Android è troppo grande e il collegamento disattiva la funzionalità

Impostazione del collegamento a "Nessuno" tutto funziona correttamente. Il problema è che l'app è troppo grande - è 20MB e questo è spazzatura.


ho letto quell'articolo sul collegamento: Click Here

così ho provato "Assemblee Sdk Solo" e "SDK e Assemblee utente". La seconda opzione (entrambi gli assembly) ha avuto esito negativo direttamente, non ero nemmeno in grado di vedere la prima schermata (Login) della mia app.

con il collegamento impostata su "SoloAssemblee SDK" Sono stato in grado di venire alla prima schermata (loginscreen). L'App è anche 6.73MB è molto meglio e più idoneo.

Il problema mi trovo di fronte è ora, che quando clicco sul pulsante "Accedi" nella prima schermata, non succede nulla (normalmente mi avrebbe reindirizzare alla prossima Attività).

il pulsante è binded ad un comando:

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

private void DoLogin() 
{ 
    //Do Stuff 
} 

Mettere un punto di interruzione in DoLogin() - spettacoli, che non è mai cammina in

Beh, come potrei risolvere il problema.? Sembra che la funzionalità di mvvmcross sia disabilitata per qualsiasi motivo?

Il mio obiettivo principale è ridurre le dimensioni dell'app.


Qui se importante sezione necessario dal .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

vedi anche http://stackoverflow.com/questions/14291696/ mvvmcross-android-button-click-binding-not-working-in-release-build/14292504 # 14292504 – Stuart

+0

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

risposta

6

Con MvvmCross, io generalmente usare solo SDK Assemblies.

Per risolvere il problema, Linker non riesce per MvvmCross (e per problemi generali MonoTouch/MonoDroid), quindi aggiungo i file di tipo LinkerPleaseInclude per ingannare il linker.

Un file di esempio è:

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; 
    } 
} 

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

E 'fastidioso dover fare questo ... ma non ci vuole molto - la maggior parte delle applicazioni in realtà non si legano a molte diverse proprietà/eventi.

+0

grazie Stuart, è fantastico! – eMi

0

mi cambia la Progressbar includono metodo per

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

e ha funzionato. Ho rimosso tutti gli altri e tutti hanno iniziato a lavorare. Presumo che funzioni come sta testando sia il getter che il setter della proprietà ProgressBar Visibility.

Se questo non è il motivo corretto per questo lavoro qualcuno potrebbe aggiungere un commento, così tutti noi possiamo unsterstand come risolvere questi problemi in futuro

Problemi correlati