C# 在Xamarin.Android项目中引入加密模糊器后,无法创建.apk文件

C# 在Xamarin.Android项目中引入加密模糊器后,无法创建.apk文件,c#,android,xamarin,code-access-security,crypto-obfuscator,C#,Android,Xamarin,Code Access Security,Crypto Obfuscator,我的任务是混淆我的Xamarin Android项目(我们称之为AndrProj)及其引用的库:两个PCL(我们称之为PCL1和PCL2)和Android库(AndrLib)。PCL2和AndrLib也引用了PCL1 我受到这篇文章的启发,决定尝试使用.NETV2015演示版 我使用了它的“Visual Studio项目集成向导”。PCL1设置为“第一个项目”,AndrProj设置为“最后一个项目”。开始时仅使用默认设置。现在,当我建立我的项目,一切都是完美的。\bin\Release文件夹中的

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

我受到这篇文章的启发,决定尝试使用.NETV2015演示版

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

如果我能创建一个.apk文件并在Android设备上试用,我会非常高兴。但当我选择Build->Archive在Xamarin Studio中发布时,过了一段时间后,我看到“Build FAILED”和

模糊处理时出错:-程序集“AndrLib”无效 已使用加密模糊器进行模糊处理。如果已在Visual Studio项目上运行Visual Studio项目集成向导,则无法从加密模糊器UI进行模糊处理,除非首先从加密模糊器的“项目”菜单-->“启用/禁用Visual Studio” “Studio集成”,并在Visual Studio中重建解决方案以 生成未模糊的程序集

我还尝试了从VisualStudio2013中导出Android软件包(.apk),但输出较少,仍然无法创建.apk


我相信它只抱怨安德烈布,因为它在PCL1、PCL2和安德烈布之间按字母顺序排在第一位。更为全局性的问题是,创建.apk会迫使所有程序集再模糊一次。有没有办法跳过第二次混淆?或者忽略这类问题?

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


以下是技术支持关于所述问题的电子邮件(可能对某些人有用):

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

按如下所示更改生成输出日志详细信息: Visual Studio工具菜单-->选项-->项目和解决方案-->生成和运行-->MSBuild项目生成输出详细程度,将其设置为详细

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

将MSBuild使用的线程数更改为1,如下所示: Visual Studio工具菜单-->选项-->项目和解决方案-->生成和运行-->最大并行线程数:将其设置为1

如果在运行(CTRL+F5)或调试(F5)解决方案时收到类似“程序集“XYZ”已被加密模糊器模糊化…”的错误消息,请尝试执行清理(Visual Studio生成菜单-->清理菜单项),然后执行运行(CTRL+F5)或调试(F5)


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

我在存档时遇到问题,当我将Visual Studio 2017 Professional从15.9.9降级到15.7.6后,问题就消失了。

您在问题中给出了自己的答案,这说明了不要单独混淆它们,并使用构建来完成它的任务。

您已经在问题中发布了自己的答案yn,我不理解你的想法。项目是通过“Visual Studio项目集成向导”设置的,其中指明了第一个和最后一个项目。此外,Andrpoj构建没有错误。包创建失败。