Android App太大,Linking禁用function

我已经完成了我的应用程序,现在我正在尝试构建.apk并在我的手机上进行测试(无需调试,在发布模式下)。

将链接设置为“ ”一切正常。 这里的问题是,应用程序太大了 – 它的20MB ,那就是垃圾。


我读过关于链接的文章: 点击这里

所以我尝试了“ 仅限Sdk Assemblies ”和“ Sdk和用户assembly ”。 第二个选项(两个程序集)直接失败,我甚至无法看到我的应用程序的第一个屏幕(登录)。

将链接设置为“ 仅限Sdk Assemblies ”后,我可以进入第一个屏幕(Loginscreen)。 该应用程序也是6.73MB什么更好,更有资格。

我现在面临的问题是,当我点击第一个屏幕上的“登录”按钮时, 没有任何反应 (通常会将我重定向到下一个活动)。

Button被绑定到命令:

public IMvxCommand LoginCommand { get { return new MvxRelayCommand(DoLogin); } } private void DoLogin() { //Do Stuff } 

在DoLogin()中放置一个断点 – 表明它永远不会进入。

那么,我怎么能解决这个问题呢? 似乎mvvmcross的function因任何原因被禁用?

我的主要目标是减少应用程序的大小。


这里重要的是.csproj中必要的部分

  pdbonly true bin\Release\ TRACE prompt 4 False SdkOnly  True 

使用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

不得不这样做很烦人…但它不需要很长时间 – 大多数应用程序实际上并没有绑定到许多不同的属性/事件。

我将progressBar包含方法更改为

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

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

如果这不是正确的工作原因可能有人添加评论,所以我们都可以解释如何在将来解决这些问题