Android应用程序太大并且链接禁用了功能

问题描述:

我完成了我的应用程序,现在我正在尝试构建.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

随着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

我改变了进度包括方法

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

和它的工作。我删除了所有其他人,他们都开始工作。我假设这是工作,因为它正在测试ProgressBar Visibility属性的getter和setter。

如果不是这方面的工作可能有人添加评论正确的理由,让我们大家unsterstand如何在未来