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

Luk*_*uke 3 mono android proguard visual-studio xamarin.android

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

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

jon*_*onp 5

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

然而,除了一个广泛的例外,缺乏支持性支持在很大程度上没有实际意义.Proguard仅在Java字节码上运行.该单为Android架构在运行的过程中的单声道运行; .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.有报道称可以使用Xenocode的Postbuild 2010,但我不知道如何解决这个问题的任何细节.

上面提到的例外与构建过程中包含的任何自定义Java代码有关,这些代码通过构建AndroidJavaSourceAndroidJavaLibrary构建操作,用于包括诸如AdMob库之类的东西.对于这种情况,我们应该为构建过程添加proguard支持,尽管我没有关于何时添加proguard支持的ETA.