c# - 将 Crypto Obfuscator 引入 Xamarin.Android 项目后无法创建 .apk 文件

标签 c# android xamarin code-access-security crypto-obfuscator

我的任务是混淆我的 Xamarin Android 项目(我们称它为 AndrProj)及其引用的库:两个 PCL(我们称它们为 PCL1 PCL2) 和 Android 库 (AndrLib)。 PCL2AndrLib 也引用了 PCL1

我的灵感来自 this文章并决定尝试Crypto Obfuscator对于我的目的的 .Net v2015 演示版本。

我使用了它的“Visual Studio 项目集成向导”。 PCL1 被设置为“第一个项目”,AndrProj 被设置为“最后一个项目”。开始时仅使用默认设置。现在,当我构建我的项目时,一切都很完美。\bin\Release 文件夹中的 Dll 已被混淆。

如果我真的可以创建一个 .apk 文件并在 Android 设备上试用它,我会非常高兴。但是当我在 Xamarin Studio 中选择 Build -> Archive for Publishing 时,一段时间后我看到“Build FAILED”和

Error occurred while obfuscation: - The assembly 'AndrLib' is already obfuscated with Crypto Obfuscator. If you have run the Visual Studio Project Integration Wizard on your Visual Studio projects, you cannot obfuscate from the Crypto Obfuscator UI unless you first disable automatic obfuscation for this project from Crypto Obfuscator's 'Project' menu --> 'Enable/Disable Visual Studio Integration' and Rebuild your solution in Visual Studio to produce unobfuscated assemblies.

我也尝试过从 Visual Studio 2013 中“导出 Android 包 (.apk)”,但它提供的输出较少并且仍然不会创建 .apk。

我相信它只提示 AndrLib,因为它在 PCL1PCL2AndrLib 中按字母顺序排在第一位。更全局性的问题是创建 .apk 会强制所有程序集再次被混淆。有什么办法可以跳过第二次混淆吗?还是忽略这种问题?

最佳答案

好吧,解决方案非常简单:我必须直接将 MSBuild.exe 与目标 SignAndroidPackage 一起使用,而不是从 IDE 创建 .apk。


这是一封来自技术支持的关于所描述问题的电子邮件(可能对某些人有用):

如果您的解决方案在执行 MSBuild 集成后无法构建,请尝试以下操作:

按如下方式更改构建输出日志的详细程度: Visual Studio Tools 菜单 --> Options --> Projects And Solutions --> Build and Run --> MSBuild Project Build Output Verbosity,将其设置为 Detailed。

现在检查 Visual Studio 输出窗口以获取有关错误原因的任何提示或更多信息。

将MSBuild使用的线程数改为1,如下: Visual Studio Tools 菜单 --> Options --> Project And Solutions --> Build And Run --> Maximum number of parallel threads : set this to 1.

如果您在运行 (CTRL+F5) 或调试 (F5) 您的解决方案时收到类似于“程序集‘XYZ’已使用 Crypto Obfuscator...”进行混淆的错误消息,请尝试执行 Clean ( Visual Studio Build 菜单 --> Clean 菜单项),然后执行运行 (CTRL+F5) 或调试 (F5)。

如果您多次运行该向导,每次都选择不同的“第一个”项目,也可能会发生构建失败。此问题通常通过构建日志/输出中的“找不到文件”错误出现。要解决此问题,请从干净的非集成 .csproj/.vbproj 文件开始(向导在修改项目文件之前将原始非集成项目文件复制到 .backup_%timestamp% 扩展名;或者您可以打开 .csproj/.vbproj 文件并删除向导添加的 XML,该文件位于文件末尾)。然后再次运行向导,指定正确的第一个和最后一个项目。

关于c# - 将 Crypto Obfuscator 引入 Xamarin.Android 项目后无法创建 .apk 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30325311/

相关文章:

c# - static关键字是什么意思?

c# - 使用数据源和 Entity Framework 填充以编程方式声明的 datagridview

javascript - 计算工作日/工作日 C#

c# - 将图像插入到 Excel 工作表不起作用

java - MPAndroidChart 中条形图的单击事件是在条形列上触发的,而不是仅在条形图上触发

Android picasso 自动旋转图像

android - 网页可以知道android虚拟键盘吗

android - PrintWriter 是否有某种内部缓冲区?

ios - Xamarin iOS : Edit cells of UICollectionView

c# - 尝试检测 iOS 手机是否处于静音状态时遇到问题?