首页 > 解决方案 > 为什么在反编译我的应用程序时出现错误?

问题描述

分发后,我解压缩我的 apk 文件并尝试反编译库

在 ILSpy 我得到这个错误:

// This file does not contain a managed assembly.

在 de4dot 中:

WARNING: The file isn't a .NET PE file

csproj 文件:

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugSymbols>false</DebugSymbols>
<DebugType>portable</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AndroidManagedSymbols>true</AndroidManagedSymbols>
<AndroidUseSharedRuntime>false</AndroidUseSharedRuntime>
<EmbedAssembliesIntoApk>true</EmbedAssembliesIntoApk>
<BundleAssemblies>false</BundleAssemblies>
<AndroidUseAapt2>true</AndroidUseAapt2>
<AndroidDexTool>d8</AndroidDexTool>
<AndroidPackageFormat>apk</AndroidPackageFormat>
<AndroidCreatePackagePerAbi>false</AndroidCreatePackagePerAbi>
<AndroidSupportedAbis />

标签: c#xamarin.formsreverse-engineering

解决方案


这是由于 Xamarin.Android 更新

现在默认压缩托管程序集以用于发布配置构建,从而显着减小 APK 和 Android App Bundle 的大小。程序集在构建期间使用 LZ4 算法进行压缩,然后在应用程序启动期间在设备上解压缩。

对于一个小的示例 Xamarin.Forms 应用程序,这将 APK 大小从大约 23 兆字节减少到大约 17 兆字节,同时仅将显示应用程序首页的时间从大约 780 毫秒增加到大约 790 毫秒。

如果需要,可以通过在 Visual Studio 或其他文本编辑器中打开项目文件并将 .csproj 文件中的 AndroidEnableAssemblyCompression MSBuild 属性设置为 false 来禁用特定项目的新行为:

<PropertyGroup>
     <AndroidEnableAssemblyCompression>false</AndroidEnableAssemblyCompression>
</PropertyGroup>

来源:https ://github.com/xamarin/xamarin-android/releases/tag/v11.0.0.3


推荐阅读