С чего все началось


Всем привет. На определенном этапе разработки игры под Android на движке Unity я столкнулся с одной проблемой при билде. После добавления в проект таких плагинов как Appodeal и Google Play Games количество используемых методов превысило 65K и во время билда появилась следующая ошибка:

Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536

Почитав документацию Appodeal, понял что надо включить Multidex. Решил это сделать. На сайте была ссылка с инструкцией для Android Studio. А мы то с вами на Unity, что же делать?

А все довольно просто надо сделать всего три действия:

Включить систему сборки Gradle


Чтобы в своем проекте на Android включить систему Gradle в Unity выполним пару действий

  1. В Unity откройте Build Settings (File >> Build Settings)
  2. Если вы еще не выбрали платформу, то пора сделать это (Platform >> Android)
  3. В списке Build System выбираем Gradle (Build System >> Gradle )

image

Изменение настроек Gradle


1. Чтобы изменить настройки Gradle, вам сначала нужно получить файл настроек Gradle, который расположен в папке (Assets/Plugins/Android/mainTemplate.gradle). Если файла mainTemplate.gradle скачайте по ссылке и вставьте по адресу Assets/Plugins/Android/:

Скачать файл

2. Если файл у вас уже есть, добавляем строку multiDexEnabled true в объект defaultConfig

3. Если минимальный уровень API Android равен 20 или ниже, добавьте эту строку compile ‘com.android.support:multidex:1.0.1’

4. Закомментируем или удалим строки:

minifyEnabled **MINIFY_DEBUG**
useProguard **PROGUARD_DEBUG**

Окончательный вид файла:

image

Инициализация Multidex


Если минимальный уровень API Android, установленный на 20 или ниже.

Обновите файл манифеста, расположенный в Assets/Plugins/Android/AndroidManifest.XML. Если у вас нет этого файла, вам придется его создать. Вы можете найти AndroidManifest по умолчанию.xml в месте установки Unity. Но вам также придется вручную применить параметры проекта вашего приложения: имя пакета, разрешения, параметры конфигурации и другую информацию.

Если вы только что создали новый файл манифеста или у вас уже был он, вы просто добавляете этот параметр(android:name) следующим образом:

image

На этом все. Ошибка исчезнет, и вы спокойно сбилдите свой проект.

Спасибо за внимание.