c# - 为什么在反编译我的应用程序时出现错误?
问题描述
分发后,我解压缩我的 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 或其他文本编辑器中打开项目文件并将 .csproj 文件中的 AndroidEnableAssemblyCompression MSBuild 属性设置为 false 来禁用特定项目的新行为:
<PropertyGroup>
<AndroidEnableAssemblyCompression>false</AndroidEnableAssemblyCompression>
</PropertyGroup>
来源:https ://github.com/xamarin/xamarin-android/releases/tag/v11.0.0.3
推荐阅读
- node.js - npm 安装 @types/.../node_modules/react
- python - 如何隐藏 wx.Dialog(为什么 .Hide() 不起作用)?
- android - 我可以从 android 的 system/lib/ 中存在的系统库中的应用程序数据目录 [data/data/com.my.package/files/] 上写入文件吗?
- c# - 如何在 C# 操作中读取 OData URL 参数值?
- sql - 按字符串排序
- reactjs - 运行“npm run lint”时出错
- firebase-realtime-database - Firebase 实时数据库使用自定义规则自动删除空数据库
- java - 与本地环境相比,当我通过简单的 Jdbc 调用在 oracle 中调用过程时,响应时间更高
- qt - 在QML中按下回车键时如何触发按钮单击
- react-native - 项目名称 '@mapbox/react-native-mapbox-gl' 不得包含以下任何字符:[/、\、:、<、>、"、?、*、|]