2013-03-25 46 views
7

我完成了我的應用程序,現在我正在嘗試構建.apk並在手機上進行測試(無需調試,處於發佈模式)。Android應用程序太大並且鏈接禁用了功能

將鏈接設置爲「」一切工作正常。 這裏的問題是,該應用程序太大 - 它的20MB這就是垃圾。


,我讀了一篇關於鏈接: Click Here

所以,我想 「SDK組件只有」 和 「SDK和用戶大會」。第二個選項(兩個程序集)直接失敗,我甚至無法看到我的應用程序的第一個屏幕(登錄)。

將鏈接設置爲「Sdk Assemblies Only」我能夠進入第一個屏幕(登錄屏幕)。該應用程序也是6.73MB什麼更好,更符合資格。

現在我面對的問題是,當我點擊第一個屏幕上的按鈕「登錄」時,沒有任何反應(通常它會將我重定向到下一個活動)。

的按鈕被綁定到一個命令:

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

private void DoLogin() 
{ 
    //Do Stuff 
} 

把一個斷點在DoLogin() - 表明,它永遠不會在散步

嘛,我怎麼能解決這個問題?似乎mvvmcross的功能因任何原因被禁用?

我的主要目標是減小應用程序的大小。


這裏如果從.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

也看到解決這些問題http://stackoverflow.com/questions/14291696/ mvvmcross-android-button-click-binding-not-working-in-release-build/14292504#14292504 – Stuart 2013-03-25 11:58:15

+0

和http://stackoverflow.com/questions/14275499/problems-with-mvvmcross-binding-on-ios-works -on-simulator-but-some-properties and http://stackoverflow.com/questions/11349864/mvvmcross-monotouch-fail-to-bind-properties-on-a-real-ipad-but-it-works-on -th – Stuart 2013-03-25 11:59:02

回答

6

隨着MvvmCross重要的必要部分,一般我只使用SDK Assemblies

然後解決方法鏈接器失敗MvvmCross(和一般MonoTouch/MonoDroid問題),然後我添加LinkerPleaseInclude類型文件欺騙鏈接器。

示例文件是:

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

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

很煩人不得不這樣做...但它並不需要很長時間 - 大多數應用程序實際上不綁定許多不同的屬性/事件。

+0

謝謝Stuart,那真棒! – eMi 2013-03-25 12:34:38

0

我改變了進度包括方法

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

和它的工作。我刪除了所有其他人,他們都開始工作。我假設這是工作,因爲它正在測試ProgressBar Visibility屬性的getter和setter。

如果不是這方面的工作可能有人添加評論正確的理由,讓我們大家unsterstand如何在未來