为什么在反编译我的应用程序时出现错误?

Why am I getting an error while decompiling my app?

分发后,我解压我的 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 />

这是由于 Xamarin.Android 更新

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

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

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

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

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