Я работаю над проектом Xamarin, где хочу, чтобы мое приложение для Android было защищено от обратной разработки. у меня есть собственный рендерер в моих проектах и внешних библиотеках. Я пробовал dotfuscator, но он меняет некоторые методы и не влияет на XAML, из-за чего некоторые функции не работают, а также не работает пользовательский рендерер. Может ли кто-нибудь предложить мне лучший вариант? Я использую Visual Studio 2017 Professional. предложите мне какое-нибудь бесплатное или более дешевое решение с минимальными затратами.
Как запутать код Xamarin Android, если у меня есть собственный рендерер и много внешних библиотек
Ответы (1)
Вы можете использовать AOT в версии сообщества Visual Studio. Просто добавьте следующие строки вручную в файл csproj для конфигурации вашего выпуска:
<BundleAssemblies>True</BundleAssemblies>
<EmbedAssembliesIntoApk>True</EmbedAssembliesIntoApk>
<AotAssemblies>True</AotAssemblies>
<AndroidAotAdditionalArguments>no-write-symbols,nodebug</AndroidAotAdditionalArguments>
Также многие рекомендуют использовать LLVM:
<EnableLLVM>True</EnableLLVM>
Добавление всего этого удаляет легко декомпилируемые DLL-файлы, которые обычно присутствуют в пакете apk.
Вместо этого создаются файлы общих объектов (.dll.so). Их, насколько я понимаю, нельзя использовать для воспроизведения исходного кода. Однако я не эксперт, и это утверждение должно быть проверено кем-то более осведомленным.
Общие объектные файлы тоже можно разархивировать, но я не вижу в них легкодоступного кода. Я не знаком с макетом/содержимым этих файлов. Надеюсь, кто-нибудь когда-нибудь добавит о них больше информации.
Будьте осторожны с настройками параметров Android вашего проекта в Visual Studio, так как они могут изменить параметры, введенные вами вручную. Лично я не трогаю эти параметры в Visual Studio и делаю все настройки проекта вручную в текстовом редакторе.