В наборе инструментов Mono для Android на данный момент нет поддержки Proguard.
Тем не менее, с одним широким исключением, отсутствие поддержки Proguard во многом спорное. Proguard работает только на байт-коде Java. В архитектуре Mono для Android запущена среда исполнения Mono; .NET CIL не «компилируется» в байт-код Java, CIL - это JITed от Mono. Единственный работающий Java-код предназначен для Android Callable Wrappers , которые позволяют Java / Android вызывать управляемый код.
Таким образом, единственное, что proguard защитит в приложении Mono для Android, - это сгенерированные Android Callable Wrappers, которые в основном состоят из набора native
объявлений методов. В Android Callable Wrappers не будет никакой бизнес-логики для декомпиляции.
Вместо этого сборки CIL хранятся без сжатия в файле .apk
. Сборки, в свою очередь, могут быть декомпилированы для получения всей вашей бизнес-логики. Решение здесь состоит в том, чтобы запутать сборки перед их внедрением в .apk
. Есть отчеты о том, что Xenocode Postbuild 2010 можно использовать, хотя я не знаю каких-либо подробностей о том, как это подключить.
Указанное выше исключение относится к любому пользовательскому коду Java, включенному в процесс сборки с помощью действий AndroidJavaSource
и AndroidJavaLibrary
Build, который будет использоваться для включения таких вещей, как библиотека AdMob. Для этого сценария мы должны добавить поддержку proguard в процесс сборки, хотя у меня нет ETA, когда будет добавлена поддержка proguard.