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

问题描述 投票:3回答:2

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

我受到this文章的启发,并决定为我的目的尝试Crypto Obfuscator For .Net v2015演示版。

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

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

混淆时发生错误: - 程序集“AndrLib”已经使用Crypto Obfuscator进行了混淆。如果您已在Visual Studio项目上运行Visual Studio项目集成向导,则除非您首先从Crypto Obfuscator的“项目”菜单中禁用此项目的自动模糊处理,否则无法对Crypto Obfuscator UI进行模糊处理 - >'启用/禁用Visual Studio集成'并在Visual Studio中重建您的解决方案以生成未经混淆的程序集。

我还尝试从Visual Studio 2013中“导出Android包(.apk)”,但它提供的输出较少,但仍然没有创建.apk。

我相信它只会抱怨AndrLib,因为它首先按字母顺序排在PCL1,PCL2和AndrLib之间。更全面的问题是创建.apk会强制所有程序集再次被混淆。有没有办法跳过第二次混淆?或者忽略这种问题?

c# android xamarin code-access-security crypto-obfuscator
2个回答
0
投票

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


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

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

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

现在,在Visual Studio输出窗口中查看有关错误原因的任何提示或更多信息。

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

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.