我们最近从VS2017迁移到VS2019,构建Xamarin Forms应用程序。多年来,我们在混淆方面没有任何问题,但现在我们有一个引人注目的障碍。总结一下:最终APK文件中的项目DLL是未混淆的版本,而不是混淆版本。
如果我们正常构建 Android 应用程序(在发布配置中(,它可以正常工作:反编译文件按预期显示混淆代码 - 完全无法理解。它还成功地将其从其工作"dfout"文件夹(在"obj"下(复制到"bin"文件夹,因此构建过程会按预期方式传播经过模糊处理的文件;一切都很酷。
但。。。当您运行"存档"以创建APK文件时...事情的运作方式不同。经过几个小时的仔细检查,我们发现确实正在发生,但我们不知道为什么,以及如何修复它:项目 DLL(应该在 APK 内部(正在从未混淆的代码中获取。然后,在打包完成后运行混淆,将正确的 DLL 保留在"obj"和"bin"文件夹中,但打包的 APK 中的 DLL 是未混淆的版本。
这到底是怎么回事?
在另一个 StackOverflow 问题的评论线程中找到了这个问题的解决方案。
基本上,这是Dotfuscator与VS2019一起使用的问题,这需要一些新的Dotfuscator目标文件才能工作。最初这些也不起作用,但是在删除所有bin和obj文件夹并在管理员模式下重新启动VS后,就可以解决问题。
Dotfuscator 混淆了独立程序集,但不混淆了 APK 存档