- Решение проблем при разработке под Android
- Ошибка “No Platforms Found”:
- Unity не удаётся установить ваше приложение на ваше устройство
- Ваше приложение падает сразу после запуска.
- Building DEX Failed
- Приложение падает через несколько секунд после начала проигрывания видео.
- Моя игра закрывается, когда я жму кнопку сна
- Android-приложение Unity3D сразу вылетает на всех телефонах.
- 4 ответа
- Решение проблем в редакторе
- Версии
- Активация
- Не удаётся запустить
- Шрифты
- Испорченный проект или установка Unity
- Производительность и падения
- Утрата проекта
- Переустановка
- Unity Android APK сбой при запуске
- Начало разработки под Android
- Подготовка среды разработки для Android
- Доступ к функциям Android
- Привязка C, C++ или Java кода к скриптам
- Occlusion Culling (отсечение невидимой геометрии)
- Настройка начальной заставки
- Решение проблем и сообщения об ошибках
- Как Unity для Android отличается от версии для настольных компьютеров
- JavaScript со строгой типизацией
- ETC — рекомендуемый способ сжатия текстур
- Проигрывание видео.
Решение проблем при разработке под Android
Ошибка “No Platforms Found”:
- Удалите установленный Android SDK и убедитесь, что у вас нигде не установлены ещё копии.
- Обновите Java до последней стабильной версии. Никогда не забывайте, что хоть самая последняя версия не должна конфликтовать, у пользователей в прошлом всё равно бывали проблемы.
- Скачайте свежую копию самого последнего ADT Bundle и установите его следуя инструкциям. Это должно корректно откалибровать инструменты разработки: http://developer.android.com/sdk/index.html
- Настройте Unity на работу с установленным Android SDK.
Unity не удаётся установить ваше приложение на ваше устройство
- Убедитесь, что ваш компьютер видит ваше устройство и может взаимодействовать с ним. Для деталей см. Публикация сборок.
- Проверьте консоль Unity на наличие сообщений об ошибках. Это часто помогает в определении проблемы.
Если у вас появляется ошибка “Unable to install APK, protocol failure” во время сборки, то это значит, что ваше устройство подключено через USB-порт с низким питанием (возможно порт на клавиатуре или ещё на какой-нибудь периферии). Если такое случается, то попробуйте подсоединить устройство в USB порт на самом компьютере.
Ваше приложение падает сразу после запуска.
- Убедитесь, что вы не пытаетесь использовать NativeActivity с устройствами, которые это не поддерживают.
- Попробуйте убрать все нативные плагины, что у вас есть.
- Попробуйте отключить stripping.
- Используйте adb logcat чтобы получить отчёт о крахе с вашего устройства.
Building DEX Failed
Это ошибка, которая выдаёт сообщение, вроде следующего:-
Обычно это вызвано неверной версией Java на вашем компьютере. Обновление Java до последней версии обычно решает проблему.
Приложение падает через несколько секунд после начала проигрывания видео.
Убедитесь, что Settings->Developer Options->Don’t keep activities не включено на вашем телефоне. Проигрыватель видео — это отдельное приложение и поэтому обычное игровое приложение будет закрыто, если проигрыватель видео включён.
Моя игра закрывается, когда я жму кнопку сна
Измените тег activity в файле AndroidManifest.xml так , чтобы он содержал тег android:configChanges , сделайте это таким образом, как описано здесь.
Пример тега activity может выглядеть, например, вот так:-
Источник
Android-приложение Unity3D сразу вылетает на всех телефонах.
Всем привет и спасибо за чтение.
Я сделал приложение на Unity3D и готов протестировать его на своем телефоне Android (Huawei G510). Он вылетает, как только я пытаюсь открыть приложение на своем телефоне (даже не отображает заставку).
Мне посоветовали проверить файл LogCat, но на самом деле я полный нуб, и после нескольких часов попыток расшифровать сообщения об ошибках я оказался на грани ума.
Все приложения, которые я пытался развернуть мгновенно, сбой
Все устройства, которые я тестировал, вызывают сбой приложения (Galaxy S3, S2 и мой Huawei)
Я использую Macbook Pro, загрузил Eclipse SDK, а также Java JDK, а также установил ВСЕ доступные версии SDK.
Любая помощь будет принята с благодарностью, поскольку я полностью озадачен :(.
Вот файл logcat (я опубликовал ошибки, которые могу выделить под всем выводом logcat)
4 ответа
Похоже, есть конфликт в номерах версий. Если вы обновили (или понизили) Unity в середине проекта, это вероятная причина. На основе этого forum, похоже, вам нужно начинать новый проект xcode каждый раз, когда вы обновляете Unity. Я знаю, что проекты Unity можно обновить до более новой версии, но они будут повреждены, если когда-либо будут открыты в более старой версии.
В моем случае с Android просто замените libunity.so в моем проекте Android на новую версию libunity.so , экспортированную новой версией Unity. На самом деле нет необходимости создавать новый Android-проект.
В случае, если к этому вопросу будет больше посетителей, у меня была такая же проблема при сборке планшета Huawei на MacBook Pro, в точности так, как вы описываете. Нам удалось решить эту проблему, сняв флажок «Development Build» в диалоговом окне «Build Setting».
Надеюсь, что это помогает кому-то!
Перейдите в экспортированную папку единства. В папке libs вы найдете папки armeabi-v7a , x86 и файл unity-classes.jar в соответствии с настройками вашего плеера.
Переместите и замените папки armeabi-v7a и x86 в папку /app/src/main/jniLibs/ .
Переместите и замените файл unity-classes.jar в папку /app/libs/ .
Если вы не можете найти пути, которые я упомянул, поищите их имена в своем проекте Android и соответственно замените их новыми.
Источник
Решение проблем в редакторе
В следующих разделах рассказано о том, как решать и предотвращать проблемы в редакторе Unity в различных ситуациях. В общем случае, убедитесь, что ваш компьютер соответствует всем системным требованиям, что он не устаревший и в системе у вас имеются все необходимые пользовательские разрешения. Также не забывайте регулярно делать резервные копии ваших проектов, ради их же безопасности.
Версии
Вы можете установить разные версии редактора в разные каталоги. Тем не менее, убедитесь что вы делаете резервные копии проектов, т.к. они могут обновиться до более новых версий, и вы не сможете открыть их в более старых версиях Unity. Для дальнейшей информации см. установка нескольких версий.
Лицензии дополнений подходят только для версий Unity c такой же основной версией, например 3.х и 4.х. Если вы обновите Unity внутри основной версии, например с 4.0 до 4.1, то дополнения останутся.
Активация
Интернет активация — предпочитаемый метод генерирования вашей лицензии Unity. Но если у вас возникают проблемы, следуйте следующим шагам:
- Отключите ваш компьютер от сети, иначе у вы можете получить ошибку “tx_id_invalid”.
- Выберите пункт Manual Activation.
- Нажмите на Save License Request.
- Выберите доступную папку для сохранения, например папку Downloads.
- Заново подключитесь к сети и откройте https://license.unity3d.com/
- В поле файла нажмите Browse и выберите сохранённый licence request file.
- Выберите необходимый тип лицензии для Unity и заполните запрашиваемую информацию.
- Нажмите Download License и сохраните файл.
- Вернитесь в Unity и выберите Manual Activation если придётся.
- Кликните на Read License и выберите загруженный файл лицензии.
Если у вас всё ещё есть проблемы с регистрацией или входом в ваш аккаунт пользователя, пожалуйста, свяжитесь с нами по адресу support@unity3d.com.
Не удаётся запустить
Если при запуске Unity сразу же падает, то в первую очередь убедитесь, что ваш компьютер соответствует минимальным системным требованиям. И не забудьте обновить аудио драйвера и драйвера видеокарты.
Если вы получаете ошибки, связанные с записью на локальный диск, то проверьте разрешения вашей учётной записи. При использовании MacOS, учтите, что “root user” не рекомендуется и Unity ещё не прошёл тестирование в этом режиме. Unity всегда должен обладать разрешениями на запись файлов в своих папках, но если вы устанавливаете разрешения вручную, то проверьте эти папки:
- Папку с установленным Unity
- %AllUsersProfile%\Unity (обычно C:\ProgramData\Unity)
- C:\Documents and Settings\ \Local Settings\Application Data\Unity
- C:\Users\ \AppData\Local\Unity
- Содержимое пакета Unity.app
- /Library/Application Support/Unity
Некоторые пользователи испытывали затруднения, когда использовали жёсткие диски, форматированные с не нативными разделами и использовали определённые программы для переноса данных между устройствами хранения.
Шрифты
Повреждённые шрифты могут вызвать падение Unity. Вы можете найти повреждённые файлы при помощи следующих шагов:
- Откройте каталог с шрифтами на вашем компьютере, расположенный в папке “Windows”.
- Выберите “Details” (Таблица) в меню “View” (Вид).
- Проверьте пункт “Size (Размер)” на наличие шрифтов с размером “0”, указывающий на проблемный файл.
- Удалите повреждённые файлы и переустановите их.
Запустите приложение Font Book.
Выберите все шрифты.
Откройте меню “File” (Файл) и выберите “Valiadte Fonts” (Проверить шрифты). Проблемные шрифты будут помечены как нерабочие.
Удалите повреждённые файлы и переустановите их.
Ресурсы системы могут быть ограничены, например, при работе в виртуальной машине. Используйте Диспетчер задач, чтобы найти процессы потребляющие много памяти.
Испорченный проект или установка Unity
Unity может попытаться открыть повреждённый проект, это также касается и стандартного тестового проекта. В таком случае переименуйте или переместите папку проекта. После того, как Unity нормально запустится, вы можете вернуть папку проекта в исходное состояние, если захотите.
В случае повреждения копии Unity, вам может понадобится переустановить Unity — смотрите инструкции ниже.
В Windows могут возникнуть проблемы, вроде ошибок при установке, повреждения регистра, конфликты и т.д. Например, ошибка 0xC0000005 означает, что программа попыталась получить доступ к той памяти, к которой не должна. Если вы недавно устанавливали новое оборудование или драйвера, то попробуйте извлечь и заменить оборудование, чтобы узнать, не из-за него ли появляется проблема. Используйте программы для диагностики и проверьте информацию в центре помощи операционной системы.
Производительность и падения
Если редактор работает медленно или падает, в частности на стадии сборки, это может происходить из-за того, что все доступные системные ресурсы уже используются. Закройте все другие приложения при сборке проекта. Почистите систему используя специализированные утилиты и сверьтесь с диспетчером задач (Windows) или Activity Monitor (MacOS), чтобы проверить, нет ли в системе процессов, использующих очень много ресурсов, например, памяти. Иногда антивирусы могут замедлять или даже блокировать файловую систему в процессе сканирования.
Утрата проекта
Есть много различных факторов, способных уничтожить проект. Вам следует постоянно делать резервные копии ваших проектов для предотвращения несчастных случаев. В MacOS, активируйте TimeMachine используя внешний жёсткий диск, используемый только для этой цели. После утери вы можете попробовать использовать какую-нибудь утилиту для восстановления файлов, но иногда файлы оказываются невосстановимыми.
Переустановка
Следуйте этим шагам для переустановки редактора:
Удалите Unity. Если вы используете MacOS, перетащите приложение Unity в корзину.
Удалите следующие файлы, если они есть:
%AllUsersProfile%\Unity\ (обычно C:\ProgramData\Unity)
Источник
Unity Android APK сбой при запуске
Хорошо, так как я последний раз успешно построил, все, что я сделал, попробовал добавить Google Play Services к моей игре, отсюда .
Я импортировал пакет единства и установил игровые игры google для Android в соответствующем окне настройки.
Я попытался построить на этом этапе, однако я не смог, получил эту странную ошибку при создании файлов dex, означающих наличие конфликта между файлами aar. Я сузил его до того, что был вызван как активами / плагинами / андроид / play-services-base-9.0.2, так и активами / плагинами / андроидами / play-services-basement-9.0.2.
Я отключил оба из них, которые были созданы для Android, чтобы убрать конверсию в файл ошибки dex. Я предположил, что все будет в порядке.
Затем я нажал приложение в Google Play (альфа-окружение) вместе с небольшим сценарием контроллера для Google Play для входа в систему start ():
Однако Unity, кажется, сбой, прежде чем открыть первую сцену. Сбой сразу после запуска. Здесь можно увидеть материал журнала.
Проблема возникает, например, в строке 842:
Я понятия не имею, как это исправить?
::Дополнительная информация::
Поэтому я вернулась к точке, где у меня есть пакет единства, импортированный в Unity, но я еще не настроил его, предоставив ему свой xml, содержащий ресурсы. На данный момент в редакторе дается нулевое исключение:
Линия, на которую он ссылается:
Однако сразу после этого исключения nullreference я вижу, как распознаватель регистрируется в журналах. Такие как:
Теперь, я могу построить этот APK и запустить его на моем телефоне в порядке, никаких проблем. (Очевидно, что игровые сервисы google не будут делать много, поскольку они не настроены).
Итак, я перехожу к Window >> Google Play Games >> Setup >> Android и здесь, я вставляю свои ресурсы XML. Я даю место и имя для файла ресурсов C # и нажимаю Setup.
Я вижу следующие параметры конфликта зависимости Jar:
Я попытался приложить все к ним, а также ОК, оба действия в конечном итоге вызывают конфликт с моими арами.
Я просто попробовал еще раз, на этот раз, нажав OK для всех из них, и попытался построить снова, только сделав это со своей последней успешной сборки. Преобразуя формат баннеров в формат dex, он не выполняет сборку, которая дает следующую ошибку:
Как уже упоминалось ранее, я могу помешать этому, обнаружив файлы play-services-base и play-services-basement и сняв флажок для их создания для Android. Когда я это делаю, APK строит, однако приложение будет разбиваться, как только оно будет открыто.
В прошлом году я столкнулся с такой же проблемой в своем Android-проекте. Я обновил Android Support Repository, Android Support Library, Google Play Services, Google Repository, Google Billing Library, Android API 6.0, а затем эта проблема решена. Я до сих пор не знаю, что является источником проблемы, но я решил проблему таким образом в своем проекте. Надеюсь, это сработает и для вас.
Работа с зависимостями – это действительно боль …. я долго работал над единством. И я не помню слишком много этого. Но посмотрите на эти ссылки, возможно, это может помочь.
Также попробуйте этот зависимый преобразователь ….
Возникла та же проблема с моим проектом единства. Был дублированный класс поддержки-v4. Выяснилось, что лучше всего импортировать плагин для игры в пустые проекты (сделайте тестовую сборку).
Затем полностью удалите плагин google play и все файлы из папок Extensions, Editor и Plugins и повторно импортируйте из пустого проекта. Извините, я не могу уточнить, что больше не имеет доступа к моим файлам проектов.
Источник
Начало разработки под Android
Разработка игр для устройств с Android OS требует подхода, схожего с разработкой под iOS. С другой стороны, аппаратное обеспечение Android-устройств не подчиняется чётким стандартам, что заставляет решать вопросы, которые отсутствуют при работе с iOS. Также присутствуют различия между версиями Unity для Android и iOS.
Подготовка среды разработки для Android
Прежде чем вы сможете протестировать свои игры на устройстве, вам нужно будет подготовить среду разработки. В частности — скачать и установить Android SDK нужной платформы и добавить ваше устройство в систему (этот процесс отличается для Windows и Mac). Об этом подробно написано на сайте Android-разработчиков, а также дополнительную информацию может предоставлять производитель вашего устройства. Так как это достаточно сложный процесс, мы приготовили небольшую инструкцию которая поможет вам подготовить всё необходимое для разработки. Если вам понадобится больше информации, вы сможете получить её на портале Android-разработчиков.
Доступ к функциям Android
Unity предоставляет API для доступа к средствам ввода и настройкам Android. Доступные классы задокументированы на странице Написание кода для Android сборок.
Привязка C, C++ или Java кода к скриптам
Unity позволяет вызывать функции, написанные на C/C++, непосредственно из скриптов (Java-функции могут быть вызваны непрямым способом). Чтобы узнать как из Unity получать доступ к функциям из нативного кода, посетите страницу о сборке плагинов для Android.
Occlusion Culling (отсечение невидимой геометрии)
Unity предоставляет поддержку occlusion culling, что очень полезно при оптимизации для мобильных платформ. Больше информации можно найти на странице Occlusion culling.
Настройка начальной заставки
Заставка, отображаемая при запуске игры, может быть настроена — см. эту страницу для дополнительной информации.
Решение проблем и сообщения об ошибках
Существует множество причин, из-за которых ваше приложение вылетает или не работает должным образом. Наше руководство по решению специфических для Android проблем поможет вам разобраться с причинами ошибок в кратчайшие сроки. Если после прочтения руководства вы предполагаете, что проблема именно в Unity — вам следует составить сообщение об ошибке. Обратитесь к этой странице за инструкциями.
Как Unity для Android отличается от версии для настольных компьютеров
JavaScript со строгой типизацией
Для улучшения производительности в Android-версии Unity динамическая типизация в JavaScript всегда отключена (как если бы к каждому скрипту автоматически применялась #pragma strict). Это важно помнить, если вы переносите на Android проект со старших платформ, и если вы столкнётесь с ошибками компиляции — проблему стоит искать в первую очередь в типизации. С такими ошибками обычно легко справиться, убедившись что типы всех переменных явно указаны или приведёны при инициализации.
ETC — рекомендуемый способ сжатия текстур
Хоть Unity Android и поддерживает DXT/PVRTC/ATC текстуры, Unity распакует текстуры в формат RGB(A) при выполнении, если эти методы сжатия на поддерживаются на конкретном устройстве. Это может серьёзно повлиять на производительность GPU отрисовки, потому рекомендуется использовать формат ETC. Он является фактическим стандартом для Android, и должен поддерживаться всеми современными устройствами. С другой стороны, ETC не поддерживает альфа-канал, и иногда 16-битные RGBA текстуры будут лучшим выбором по критериям качества, размера и скорости рендеринга там, где нужен альфа-канал.
Также возможно создать несколько дистрибутивов игры (apk-файлов) с разными форматами текстур, чтобы Android Market сам предоставлял для каждого устройства наиболее подходящий из дистрибутивов. За подробностями обратитесь к этой странице.
Проигрывание видео.
Видео текстуры (MovieTexture) не поддерживаются на Android, но программно доступно полноэкранное поточное проигрывание. Для дополнительной информации о поддерживаемых форматах файлов и API скриптинга, ознакомьтесь со страницой класса MovieTexture или со страницей поддерживаемых на Android форматах медиа.
Источник