2015-05-19 166 views
3

我有我的模糊处理的Android Xamarin项目的任务(让我们把它叫做AndrProj)与图书馆一起它引用:二PCL(我们姑且称之为PCL1PCL2)和Android库(AndrLib)。 PCL2AndrLib也提及PCL1无法创建.apk文件

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

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

如果我真的可以创建一个.apk文件并在Android设备上尝试,我会非常高兴。但是,当我选择Build - >存档出版在Xamarin Studio中,有一段时间我看到后“构建失败”和而发生混淆

错误: - 汇编“AndrLib”是 已经与加密混淆混淆。如果您已在Visual Studio项目上运行Visual Studio项目集成向导,则不能从Crypto Obfuscator UI进行混淆,除非先从Crypto Obfuscator的“项目”菜单中禁用该项目的自动混淆模式 - >'启用/禁用Visual Studio集成“并在Visual Studio中将解决方案重建为 可生成未混淆的程序集。

我也尝试从Visual Studio 2013中导出Android包(.apk),但它输出较少,仍然不会创建.apk。

我相信它抱怨只有约AndrLib因为它去首字母顺序排列之中PCL1PCL2AndrLib。更多的全球性问题是,创建.apk会强制所有程序集再次被混淆。有什么办法可以跳过这第二次混淆?或者忽略这种问题?

+0

您已经发布了自己的回答你的问题,但解释没有单独模糊处理它们,并使用构建做 –

+0

对不起@Martyn,我不明白你的想法。通过“Visual Studio项目集成向导”建立了项目,以便在第一个和最后一个项目被指明的情况下进行混合。此外,AndrProj的构建没有错误。它的包创建失败。 – foxanna

回答

0

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


这是从技术支持关于上述问题(可能是有用的人)的电子邮件:

如果您的解决方案未能这样做的MSBuild整合后打造,请尝试以下操作:

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

现在检查的Visual Studio Output窗口任何提示或有关错误原因的详细信息。

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

如果在运行(CTRL + F5)或调试(F5)解决方案时遇到类似于“程序集'XYZ'已被加密混淆器混淆......”的错误消息,请尝试执行清理(​​Visual Studio生成菜单 - >清理菜单项),然后执行运行(CTRL + F5)或调试(F5)。如果您运行该向导多次,每次选择不同的“第一”的项目,也可能发生

构建失败。此问题通常通过构建日志/输出中的“文件未找到”错误呈现。为了解决这个问题,从清洁的非集成的.csproj/.vbproj文件(向导会将原来的非集成项目文件的.backup_%时间戳%扩大开始修改项目文件之前;或者你可以打开的.csproj/.vbproj文件放在文本编辑器中,并删除向导中添加的XML,这些XML可以在文件末尾找到)。然后再次运行向导,指定正确的第一个和最后一个项目。