我的任务是混淆我的Xamarin Android项目(让它称为 AndrProj )和它引用的库:两个PCL(我们称之为 PCL1 和 PCL2 )和Android库( AndrLib )。 PCL2 和 AndrLib 也引用 PCL1 。
我受到this文章的启发,并决定尝试使用Crypto Obfuscator .Net v2015演示版本用于我的目的。
我使用了'Visual Studio项目集成向导'。 PCL1 设置为“第一个项目”, AndrProj 设置为“最后一个项目”。开始时仅使用默认设置。现在,当我构建我的项目时,一切都很完美。在\ bin \ Release文件夹中的Dll是混淆的。
如果我能真正创建一个.apk文件并在Android设备上试用它,我会非常高兴。但是当我选择Build - >在Xamarin Studio中存档,一段时间后我看到“Build FAILED”和
混淆时出错: - 程序集'AndrLib'是 已经使用Crypto Obfuscator进行了混淆。如果您已在Visual Studio项目上运行Visual Studio项目集成向导,则除非您首先从Crypto Obfuscator的“项目”菜单中禁用此项目的自动模糊处理,否则您无法对Crypto Obfuscator UI进行模糊处理 - > '启用/禁用Visual Studio Integration'并在Visual Studio中重建您的解决方案 产生未经混淆的组件。
我也尝试过从Visual Studio 2013中“导出Android包(.apk)”,但它提供的输出较少,但仍然没有创建.apk。
我认为它仅抱怨 AndrLib ,因为它首先按字母顺序排在 PCL1 , PCL2 和 AndrLib 之间。更全面的问题是创建.apk会强制所有程序集再次被混淆。有没有办法跳过第二次混淆?或者忽略这种问题?
答案 0 :(得分:0)
嗯,解决方案非常简单:我必须直接使用MSBuild.exe和目标SignAndroidPackage,而不是从IDE创建.apk。
以下是来自技术支持的有关所述问题的电子邮件(可能对某人有用):
如果您的解决方案在执行MSBuild Integration后无法构建,请尝试以下操作:
更改构建输出日志详细程度,如下所示: Visual Studio工具菜单 - >选项 - >项目和解决方案 - >构建和运行 - > MSBuild项目构建输出详细程度,将其设置为详细。
现在检查Visual Studio输出窗口,查看有关错误原因的任何提示或更多信息。
将MSBuild使用的线程数更改为1,如下所示: Visual Studio工具菜单 - >选项 - >项目和解决方案 - >构建并运行 - >最大并行线程数:将其设置为1。
如果您收到类似于&#34的错误消息;程序集' XYZ'已经使用Crypto Obfuscator混淆了......"当您运行(CTRL + F5)或调试(F5)您的解决方案,然后尝试执行Clean(Visual Studio生成菜单 - >清除菜单项),然后执行运行(CTRL + F5)或调试(F5)。
如果您多次运行向导,每次选择不同的"第一个"项目。这个问题通常是通过未找到的"文件来呈现的。构建日志/输出中的错误。要解决此问题,请从干净的非集成.csproj / .vbproj文件开始(向导会在修改项目文件之前将原始的非集成项目文件复制到.backup_%timestamp%扩展名;或者,您可以打开.csproj /文本编辑器中的.vbproj文件,并删除向导添加的XML,该XML可以在文件末尾找到。然后再次运行向导,指定正确的第一个和最后一个项目。
答案 1 :(得分:0)
我在归档时遇到问题,并且在我将Visual Studio 2017 Professional从15.9.9降级到15.7.6之后问题就消失了。