我们正在考虑将 C# .NET 应用程序移植到 Android,我已经开始阅读有关 Xamarin.Android 和 Mono 框架的内容。我刚刚开始Android 开发。
我注意到主要http://xamarin.com/android http://xamarin.com/android页面指出:
本机代码
高性能编译代码,可完全访问所有本机 API。
这是否意味着生成的代码将是更难以逆向工程的本机代码?我们希望创建一个包含关键算法的类库,如果我们可以将其编译为本机代码以阻碍逆向工程,这将使我们不再担心移植。
我读过其他几篇关于 Android 代码并不比混淆的 .net 程序集更难反编译(使用 ProGuard 之后)的文章。本机代码编译是这些帖子之后出现的最新功能吗?感谢您的任何建议!
目前,Android 下的 Xamarin 无法编译为本机处理器代码。它创建 .NET p 代码,该代码在 Mono 虚拟机中运行,每个 Xamarin 编译的应用程序都会与其余应用程序文件一起安装。据我所知,为 Android 创建本机代码的唯一合理方法是使用 Android NDK (http://developer.android.com/tools/sdk/ndk/index.html http://developer.android.com/tools/sdk/ndk/index.html)并用 C 或 C++ 编写代码。
我做了一些非正式的基准测试,比较了 Java 和用 Xamarin 和 Dot42 编译的 C# 中的类似代码,以及真实应用程序(文本处理)的本机代码。基本上,在该特定应用程序上,Xamarin 的 C# 比 Java 或 Dot42 快大约 10-20%,而本机代码大约快 5-6 倍。阅读更多内容:
有没有人有比较用 Xamarin C# 和 Java 编写的 Android 应用程序性能的基准(代码和结果)? https://stackoverflow.com/questions/17134522/does-anyone-have-benchmarks-code-results-comparing-performance-of-android-ap
另外,为了保护我的 Android Java 代码免遭黑客攻击,我使用 DexGuard 混淆器 (http://www.saikoa.com/dexguard http://www.saikoa.com/dexguard)。然而,我真不知道对于优秀的黑客来说,反编译和篡改这样的混淆代码要困难多少。当然,DexGuard 不会保护 .NET Xamarin 代码,只会保护 Java 代码或为 JVM 编译的其他代码。它甚至不会保护 Dot42 代码,该代码直接编译为 Dalvik VM p 代码(所有普通 Android 应用程序都在其中运行的虚拟机,Java 代码也会被“dexed”并转换为 Dalvik 代码,然后才能在 Android 上运行)。
Greg
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)