Android应用程序太大,链接功能失效

本文关键字:链接 功能 失效 应用程序 Android | 更新日期: 2023-09-27 18:05:35

我已经完成了我的应用程序,现在我正试图构建。apk并在手机上测试它(没有调试,在发布模式下)。

将链接设置为"None"一切正常。这里的问题是,应用程序太大了-它的20MB,这是垃圾。


我读了那篇关于链接的文章:点击这里

所以我尝试了"Sdk Assemblies Only"answers"Sdk and User Assemblies"。第二个选项(两个组件)直接失败了,我甚至无法看到我的应用程序的第一个屏幕(登录)。

与链接设置为"Sdk Assemblies Only"我能够来到第一个屏幕(Loginscreen)。应用程序也是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>

Android应用程序太大,链接功能失效

对于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 include方法更改为

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

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

如果这不是这个工作的正确原因,有人可以添加一个注释,这样我们都可以了解如何在将来解决这些问题