【问题标题】:Cannot create .apk file after introducing Crypto Obfuscator into Xamarin.Android project将 Crypto Obfuscator 引入 Xamarin.Android 项目后无法创建 .apk 文件
【发布时间】:2015-05-19 12:13:04
【问题描述】:

我的任务是混淆我的 Xamarin Android 项目(我们称之为 AndrProj)连同它引用的库:两个 PCL(我们称之为 PCL1 PCL2) 和 Android 库 (AndrLib)。 PCL2AndrLib 也有对 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 UI 进行混淆,除非您首先从 Crypto Obfuscator 的“项目”菜单 -->“启用/禁用 Visual”禁用此项目的自动混淆 Studio 集成”并在 Visual Studio 中重建您的解决方案以 生成未混淆的程序集。

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

我相信它只会抱怨 AndrLib,因为它按字母顺序排在 PCL1PCL2AndrLib 之间。更全球性的问题是,创建 .apk 会迫使所有程序集再次被混淆一次。有没有办法跳过这第二次混淆?还是忽略这类问题?

【问题讨论】:

  • 你已经在你的问题中发布了你自己的答案,它解释了不要单独混淆它们并使用构建来做到这一点
  • 对不起@Martyn,我不明白你的想法。项目被设置为通过“Visual Studio 项目集成向导”进行模糊处理,其中指示了第一个和最后一个项目。此外,AndrProj 的构建没有错误。是包创建失败。

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


【解决方案1】:

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


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

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

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

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

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多