Интеграция Dotfuscator в конвейер сборки Unity3D

Я пытаюсь использовать Dotfuscator с Unity3D. При создании моего проекта Android в Unity он использует внутренний монокомпилятор. Я добавил цель «AfterBuild» в файл «.csproj», и если я создаю проект в Visual Studio 2013, AfterBuild работает.

Итак, мой вопрос: как я могу изменить конвейер сборки Unity для этого?

Я использую Unity 5.4.2 и VS 2013.


person edcx    schedule 07.12.2016    source источник


Ответы (1)


Для настольного приложения

  1. Используйте BuildPipeline.BuildPlayer, чтобы создать приложение или игру по указанному пути. Затем используйте Dotfuscator для обфускации dll (она должна находиться где-то в выходном каталоге), запустив процесс Dotfuscator при сборке.

    // Build player.
    BuildPipeline.BuildPlayer(levels, path + "/BuiltGame.exe", BuildTarget.StandaloneWindows, BuildOptions.None);
    
    // Obfuscate the dll in the player.
    Process proc = new Process();
    proc.StartInfo.FileName = "path_to_dotfuscator";
    proc.StartInfo.Arguments = "arguments_of_dotfuscator path_to_app_dll";
    proc.Start();
    
  2. Используйте командную строку редактора Unity3D для создания своего приложения или игры. Затем используйте Dotfuscator, чтобы запутать dll. Просто используйте язык сценариев, как вы хотите, чтобы написать и выполнить эти шаги.

Для приложения iOS/Mac использования il2cpp должно быть достаточно, чтобы обфускировать приложение. Хотя я не совсем в этом уверен.

Что касается Android, я не знаю, есть ли способ перехватить конвейер сборки до того, как Unity3D сделает для вас apk. Но мы всегда можем извлечь dll из apk, запутать ее и вернуть обратно. Для этого существуют некоторые решения, см. вопрос.

person zwcloud    schedule 08.12.2016