有没有办法将ProGuard与MonoDroid一起使用?

时间:2012-01-06 21:04:53

标签: android visual-studio mono xamarin.android proguard

我们的开发团队(主要)在Visual Studio中使用MonoDroid完成了一个Android应用程序。因为它与银行业务有关,所以我们想尝试对其进行模糊处理,以便为试图反编译它的人增加一些安全性。最初,我想我可以使用ProGuard,但似乎没有我可以在Visual Studio中编辑的project.properties文件。任何人都可以对这个问题发表一些光荣的帮助,并告诉我是否有可能将ProGuard与Mono一起使用,我的新生活只是让我的视线蒙上阴影?

(另一位开发人员尝试使用Dotfuscator - 因为我们无法立即找到使用ProGuard的方法 - 但它失败了很多错误; Mono运行时似乎给它带来了问题。)

1 个答案:

答案 0 :(得分:5)

Mono for Android工具链目前不支持运行proguard。

然而,除了一个广泛的例外,缺乏支持性支持在很大程度上没有实际意义。 Proguard仅在Java字节码上运行。 Mono for Android architecture在此过程中运行Mono运行时; .NET CIL没有“编译”成Java字节码,CIL由Mono JITed编写。运行的唯一Java代码是Android Callable Wrappers,它允许Java / Android调用托管代码。

因此,在Mono for Android应用程序中唯一可以保护的是生成的Android Callable Wrappers,它主要由一堆native方法声明组成。 Android Callable Wrappers中没有任何反编译业务逻辑。

相反,CIL程序集未压缩存储在.apk文件中。反过来,程序集可以被反编译以获得所有业务逻辑。这里的解决方案是在将程序集嵌入.apk之前对程序集进行模糊处理。有reports可以使用Xenocode的Postbuild 2010,但我不知道如何解决这个问题的任何细节。

上述异常涉及build procesAndroidJavaSourceAndroidJavaLibrary构建操作中包含的任何自定义Java代码,这些代码将用于包含AdMob库等内容。对于这种情况,我们应该为构建过程添加proguard支持,尽管我没有关于何时添加proguard支持的ETA。