Файловый архив Apk не оптимизирован, запустите инструмент оптимизации и повторите попытку

Обновлено: 21.11.2024

Nox, несмотря на то, что он является наиболее многофункциональным эмулятором Android, вызывает много негатива из-за их выходок, когда дело доходит до получения дохода от их программы. Он известен тем, что запускает повторяющиеся рекламные объявления в фоновом режиме, звонит домой и передает системную информацию (вне вашего экземпляра Android), а также огромное количество потенциально конфиденциальных данных в зашифрованной полезной нагрузке обратно на их множество серверов. С помощью следующих превентивных мер мы можем предотвратить большую часть этого, а также значительно улучшить общую производительность.

Загрузите и установите новую копию Nox. Последняя версия в порядке (пока). Если он у вас уже установлен, это тоже хорошо. Нет необходимости переустанавливать.

Включите режим Root на Nox, нажав на значок шестеренки и установив флажок Root Startup.

Установите новую программу запуска из Play Маркета. ВСЕ, кроме стандартного Nox. Я предлагаю Nova Launcher.

После того, как выбранная вами программа запуска будет установлена, нажмите значок «Домой», выберите «Nova Launcher» и «Всегда использовать эту программу запуска».

Перейдите в панель приложений, откройте Диспетчер файлов и перейдите в раздел system -> app . В этой папке найдите Launcher_X.X.X_*.apk и com.facebook.lite.apk — удалите их. Если после нажатия «Удалить» появится сообщение, что они не найдены, просто нажмите «Удалить» еще раз.

Закройте Nox и перейдите в папку C:\Windows\System32\drivers\etc, щелкните правой кнопкой мыши файл hosts и откройте его в Блокноте (при необходимости запустите от имени администратора) или в текстовом редакторе по вашему выбору (например, Notepad++, VS Code и т. д.) – после открытия добавьте следующий список в конец файла:

После добавления сохраните и закройте Блокнот.

  1. Перейдите к C:\Users\ИМЯ ПОЛЬЗОВАТЕЛЯ\AppData\Local\Nox и откройте Conf.ini в том же редакторе, который использовался для хостов выше. После открытия измените следующие параметры на значения, определенные ниже:

После этого сохраните и закройте файл. Щелкните его правой кнопкой мыши, перейдите в «Свойства» и установите флажок «Только для чтения», чтобы Nox не отменил эти изменения.

После того, как все это будет сделано, вы можете снова открыть Nox и продолжить играть, как обычно.

Ragnarok Mobile, а также некоторые другие игры имеют внутриигровой режим разрешения 2K, доступный на iPad Pro и высокопроизводительных планшетах Android с разрешением 4K. Его можно включить при использовании Nox, установив правильное разрешение и DPI.

Если вы уже выполнили описанные выше шаги, вам нужно будет закрыть Nox и временно снять флажок «Только для чтения» в вашем conf.ini. После этого откройте Nox, нажмите шестеренку в правом верхнем углу и перейдите в Дополнительные настройки.

Настройки производительности
Они зависят от компьютера, поэтому откройте меню "Пуск" -> щелкните правой кнопкой мыши "Мой компьютер" -> "Свойства" и посмотрите, сколько ядер у вашего процессора и сколько у вас памяти.

Ядер
Столько же, сколько у вашего процессора (например, у i7-8700k их 6)

Память
Если в вашей системе 16 ГБ или более памяти, 8096 МБ будет более чем достаточно.
Если в вашей системе 8 ГБ памяти, достаточно 4096 МБ.
Если в вашей системе 4 ГБ или меньше памяти, извините, но не пытайтесь использовать 2 КБ.

Параметры запуска
Ширина: 2560
Высота: 1440
DPI: 320

Разное
Режим рендеринга графики: Скорость (DirectX)
Настройки кадра: 60 ​​
Ускорение мыши: Отмечено (отключить ускорение мыши в Windows)

TameemS прокомментировал 9 августа 2020 г.

не вижу строку service_qq. он удален?

вы, вероятно, можете просто повторно добавить строку где-нибудь в файле ini

warlord1352 прокомментировал 12 августа 2020 г.

Я не знаю, возможно ли это, и я знаю, что это не совсем "вредоносное ПО", но есть ли способ отключить возможность использования контроллера? Я использую другие игры в некоторые моменты времени, когда Nox открыт, и по какой-то причине Nox, кажется, имеет приоритет, поэтому я не могу использовать контроллер для других игр. Заранее спасибо!

TameemS прокомментировал 16 августа 2020 г.

Я не знаю, возможно ли это, и я знаю, что это не совсем "вредоносное ПО", но есть ли способ отключить возможность использования контроллера? Я использую другие игры в некоторые моменты времени, когда Nox открыт, и по какой-то причине Nox, кажется, имеет приоритет, поэтому я не могу использовать контроллер для других игр. Заранее спасибо!

Это может быть связано с тем, что Nox основан на инфраструктуре VirtualBox, поведение которого, как я полагаю, заключается в том, что он отключает определенные устройства, такие как USB-накопители или контроллеры, от вашего компьютера и подключает их к виртуальной машине всякий раз, когда вы говорите об этом. Nox может делать это автоматически всякий раз, когда вы подключаете игровой контроллер.

Это может быть возможное решение, но, по крайней мере, на данный момент закрывайте Nox каждый раз, когда вы играете в любую другую игру.

ShadowEO прокомментировал 24 августа 2020 г.

Только что заметил, что ярлыки приложений Nox, кажется, не работают, если их панель запуска удалена.Вероятно, потребуется создать специальный прослушиватель намерений, чтобы воссоздать функциональность без средства запуска..

Exablade прокомментировал 28 августа 2020 г.

Здравствуйте! Я пользовался этим руководством пару месяцев назад и заметил, что во время последней проверки вы добавили несколько доменов для блокировки. Должен ли я добавить их тоже?

shadowbq прокомментировал 28 августа 2020 г. •

Для вас, пользователей MacOS... с меньшим количеством рекламного ПО. $HOME/Library/Application Support/NoxAppPlayer/conf/conf.ini

shak3800 прокомментировал 22 сентября 2020 г.

Может ли кто-нибудь подтвердить, что эти изменения увеличили производительность nox по сравнению с обычной версией?

shak3800 прокомментировал 23 сентября 2020 г.

Для меня, как только я удаляю apk лаунчера и устанавливаю другой лаунчер, процессор взлетает до небес. Это хуже, чем использование по умолчанию, где процессор в основном равен 0 в режиме ожидания, тогда как раздутый всегда 25-30%.

Я использую nox 6.6.1

midniteghost прокомментировал 30 сентября 2020 г.

Может ли кто-нибудь подтвердить, что эти изменения увеличили производительность nox по сравнению с обычной версией?

Я лично вернул его к значениям по умолчанию через несколько дней, с отредактированным файлом HOSTS он не позволяет nox загружать новые экземпляры эмулятора (через диспетчер нескольких экземпляров), а с файлом конфигурации, установленным на Только для чтения, вы не можете вносить какие-либо изменения в существующие экземпляры, не снимая сначала флажок Только для чтения в файле конфигурации.

Просто мне показалось, что это сильно головная боль, и я не заметил буквально нулевого улучшения производительности, но раньше игры работали нормально.

Возможно, это было бы более полезно на более медленном оборудовании или если Nox звонит домой немного странно для вас (понятно).

ПК i7 8700K / 16 ГБ / RTX 2070 / Win 10.

stevenmchoi прокомментировал 16 октября 2020 г.

Для пользователей MacOS... с меньшим количеством рекламного ПО. $HOME/Library/Application Support/NoxAppPlayer/conf/conf.ini

Спасибо! Это правильный путь для пользователей MacOS!

Примечание. Обязательно заблокируйте файл (щелкните правой кнопкой мыши > «Получить информацию» > [x] Заблокировано) перед запуском Nox. Я забыл, и service_qq_link стал " " с кавычками вокруг него, что не привело к каким-либо изменениям в скорости. Когда я удалил кавычки и заблокировал файл перед запуском Nox, я был удивлен, насколько гладко он работал!

CapoFantasma97 прокомментировал 5 ноября 2020 г.

Разве не было бы действительно хорошего программного обеспечения для эмуляции Android, вместо того, чтобы рисковать им с нечестными программами?

aranapatona прокомментировал 21 декабря 2020 г.

Разве не было бы действительно хорошего программного обеспечения для эмуляции Android, вместо того, чтобы рисковать им с нечестными программами?

хм, может попробовать Bliss OS

Zer010 прокомментировал 3 января 2021 г. •

Последний уникальный список для хост-файла (я объединил все, что нашел в этой теме, и все готово, как есть.

Поскольку apktool обрабатывает файлы .9.jpg, не должен ли теперь инструмент оптимизации png декомпилировать с помощью apktool, optpng, а затем перекомпилировать apk?

Данешм90

Признанный разработчик на пенсии

Я не думаю, что это по-прежнему предотвратит проблему потери свойств .9png из-за сжатия.
Теперь я не уверен, но похоже, что brut.all нашел способ правильно декодировать .9 PNG в своем последнем выпуске, который позволяет нам редактировать их, однако, когда вы устанавливаете свои границы. если вы используете для них оптимизацию png, они, как правило, теряют эти свойства.
Попробую посмотреть, позволяет ли apktool компилировать apk, чьи .9 png были оптимизированы, и выходят ли эти png на другом конце так, как должны

Брют.все

Неактивный признанный разработчик

@Daneshm90
Вы неправильно поняли проблему с этими 9 патчами PNG, но я не думаю, что вы могли бы их оптимизировать.

Проблема в том, что и aapt, и optipng перестраивают png-файл. Если вы используете optipng, а затем aapt, то aapt перестроит png и, вероятно, испортит все оптимизации. Если вы используете aapt, а затем optipng, то optipng будет рассматривать данные 9patch как какой-то мусор и удалит их для оптимизации. Если есть переключатель optipng для сохранения некоторых пользовательских фрагментов, тогда должна быть возможность оптимизировать эти файлы. Если нет, то мы все равно могли бы написать свой собственный инструмент - впрочем, это не большая проблема.

Брют.все

Неактивный признанный разработчик

Если есть переключатель для сохранения некоторых пользовательских фрагментов, тогда должна быть возможность оптимизировать эти файлы. Если нет, то мы все равно могли бы написать свой собственный инструмент - впрочем, это не большая проблема.


Я не вижу такого переключателя в optipng. Я попытаюсь написать инструмент для оптимизации файлов 9.jpg. Должно быть легко.

БолекДСТ

Старший участник

Как бы то ни было, лол, я выложил немного обновленный менеджер apk с вашим запросом. Теперь вы можете включать/выключать *выход* с помощью опции 17.

Данешм90

Признанный разработчик на пенсии

Если есть переключатель для сохранения некоторых пользовательских фрагментов, тогда должна быть возможность оптимизировать эти файлы.Если нет, то все же мы могли бы написать свой


Я не вижу такого переключателя в optipng. Я попытаюсь написать инструмент для оптимизации файлов 9.jpg. Должно быть легко.

хм, жду с нетерпением.

Учитывая, что optipng является открытым исходным кодом, вы не используете его или просто добавляете проверку для .9 png?

Брют.все

Неактивный признанный разработчик

это сделал

Старший участник

Ну, у меня все получилось, и я мало что знаю о smali, и собирался использовать это, чтобы узнать все, что я могу о smali и java. В любом случае, этот парень нашел здесь классный виджет погоды, и я подумал, что могу изменить название, чтобы оно не было на японском, а также изменить родной язык на английский. Итак, я сначала начал использовать fancywidget в качестве теста, потому что он полностью английский, и я сделал для него свою собственную тему. Поэтому я в определенной степени изменил имя, но оно по-прежнему отображается как причудливый виджет, а не как виджет Наруто. Некоторые файлы, такие как /data/data, отображаются правильно, а другие нет. Также любопытно, куда идет подписанный apk после того, как он был подписан? Я не мог найти его и в итоге просто подписал его сам. (Не проблема) Спасибо, если кто-нибудь может оставить отзыв

Данешм90

Признанный разработчик на пенсии

Ну, у меня все получилось, и я мало что знаю о smali, и собирался использовать это, чтобы узнать все, что я могу о smali и java. В любом случае, этот парень нашел здесь классный виджет погоды, и я подумал, что могу изменить название, чтобы оно не было на японском, а также изменить родной язык на английский. Итак, я сначала начал использовать fancywidget в качестве теста, потому что он полностью английский, и я сделал для него свою собственную тему. Поэтому я в определенной степени изменил имя, но оно по-прежнему отображается как причудливый виджет, а не как виджет Наруто. Некоторые файлы, такие как /data/data, отображаются правильно, а другие нет. Также любопытно, куда идет подписанный apk после того, как он был подписан? Я не мог найти его и в итоге просто подписал его сам. (Не проблема) Спасибо, если кто-нибудь может оставить отзыв


Что ж, когда вы декомпилируете с помощью apktool, он переходит в каталог out, затем вы редактируете файлы, и когда вы их переупаковываете, он должен создать файл с именем repackaged-unsigned.apk в том же каталоге *modding*, который вы изначально поместите ур apk. Когда вы подписываете его, он переименовывает этот файл в переупакованный-подписанный. Если ваш файл исчез, значит, что-то пошло не так. Включите вход и проверьте, что и где пошло не так.

БолекДСТ

Старший участник


Видите? Я знал, что это будет полезно, просто шучу, хе-хе. Еще раз спасибо, этот инструмент великолепен, я уже изменил значки всех системных приложений, чтобы они подходили к моим обоям, теме на g1

это сделал

Старший участник

Брют.все

Неактивный признанный разработчик

это сделал

Старший участник

Ну, когда вы декомпилируете с помощью apktool, он переходит в каталог out, затем вы редактируете файлы, и когда вы их переупаковываете, он должен создать файл с именем repackaged-unsigned.apk в том же каталоге *modding*, в который вы изначально поместили свой apk. . Когда вы подписываете его, он переименовывает этот файл в переупакованный-подписанный. Если ваш файл исчез, значит, что-то пошло не так. Включите вход и проверьте, что и где пошло не так.


Все работает нормально, пока подписывающая часть apk не исчезает, а остается там так же?

это сделал

Старший участник

У ада никогда не было проблем, мы должны говорить о разных вещах

Хорошо, вот копия com.htc.resources.apk со слайда mytouch. Просто
мы находимся на той же странице, что и пример, внутри res/drawable есть файл,
называемый common_main_panel_navbar.9.jpg, это то, что вы имеете в виду, потому что если не
то это я здесь запутался, а лучше сказать неправильно

Брют.все

Неактивный признанный разработчик

У ада никогда не было проблем, мы должны говорить о разных вещах

Хорошо, вот копия com.htc.resources.apk со слайда mytouch. Просто
мы находимся на той же странице, что и пример, внутри res/drawable есть файл,
называемый common_main_panel_navbar.9.jpg, это то, что вы имеете в виду, потому что если не
то это я здесь запутался, а лучше сказать неправильно


Знаете ли вы, что такое изображения 9patch? Масштабируются они по-разному, не линейно и если их редактировать, то скорее всего 9patch потеряется, поэтому будут масштабироваться как обычное изображение - линейно.

это сделал

Старший участник

Знаете ли вы, что такое изображения 9patch? Масштабируются они по-разному, не линейно и если их редактировать, то скорее всего 9patch потеряется, поэтому будут масштабироваться как обычное изображение - линейно.

Значит, мы говорим об одном и том же? В любом случае, я пришел с тематических телефонов p2k (qa1, w490), и люди все усложняют. Я использую Windows 7 64bit с установленным Gimp. Я использую 7zip для извлечения файла, чтобы у меня была папка с apk и разархивированным apk. Я захожу в папку res разархивированного apk, открываю файл .9png (или png) с помощью gimp отредактируйте его и что-нибудь еще, затем сохраните его. затем я открываю apk как архив с 7zip, помещаю туда папку res из разархивированного apk и закрываю ее. (иногда подпишите его, вы должны подписать большинство рыночных приложений). Затем adb толкает его туда, куда он идет (/data/app или /system/app или /system/framework), и у меня никогда не было проблем
также забыл упомянуть, что .9png имеет разрядность 32 вместо обычных 8, которые имеет png

Как я отошел от темы? Кто-нибудь знает, как изменить имя apk с помощью smali?

Данешм90

Признанный разработчик на пенсии

thatguythatdid: Что касается проблем с вашим скриптом, можете ли вы загрузить последнюю версию и посмотреть, есть ли проблемы с поиском java? потому что кажется, что все остальное работает, а не подписывает. Последний скрипт предупредит вас, если не найдет java.

Что касается этого .9 png, поправьте меня, если я ошибаюсь, Brut.all, потому что вы знаете НАМНОГО больше. Я думаю, что thatguythatdid имеет в виду изменение изображения .9, а не его границы, возможно? я могу подтвердить, что я также могу редактировать .9 png в чем-то вроде краски, однако в фотошопе его граничные свойства теряются. Итак, я думаю, что Brut.all имеет в виду то, что мы не можем создавать новые границы для .9 png после его компиляции в apk? Я могу быть ДАЛЕКО, но попробовать стоит

Фарматито: Я очень надеюсь, что вы подумаете о переносе Recovery Manager на Linux, потому что у меня есть несколько обеспокоенных пользователей. Однако, если у вас нет времени, я могу понять

Брют.все

Неактивный признанный разработчик

Что касается этого .9 png, поправьте меня, если я ошибаюсь, Brut.all, потому что вы знаете НАМНОГО больше. Я думаю, что thatguythatdid имеет в виду изменение изображения .9, а не его границы, возможно? я могу подтвердить, что я также могу редактировать .9 png в чем-то вроде краски, однако в фотошопе его граничные свойства теряются. Итак, я думаю, что Brut.all имеет в виду то, что мы не можем создавать новые границы для .9 png после его компиляции в apk? Я могу быть ДАЛЕКО, но попробовать стоит

В скомпилированном файле 9.jpg нет границ - данные 9patch хранятся в каком-то пользовательском бинарном чанке. Формат PNG является расширяемым, это означает, что любой может добавить в него некоторые пользовательские фрагменты, и если какая-то программа их не знает, она должна просто их игнорировать. Так что это совершенно нормально, что Android добавляет свои собственные фрагменты данных, а другие инструменты по-прежнему могут читать файл PNG.

Проблема в том, что если какая-то программа попытается перезаписать файл PNG? Он не понимает этот дополнительный фрагмент, поэтому не может его сгенерировать. Возможно, некоторые программы достаточно умны, чтобы копировать все неизвестные фрагменты как есть, чтобы вы могли редактировать файл, изменять растровые данные, но фрагмент 9patch не будет испорчен/удален. Не знаю, проверю в Gimp

это сделал

Старший участник

Хорошо, теперь я тебя понял. Видишь ли, я иногда не думаю об определенных аспектах. Просто эй, я изменил, что он сделал то, что хотел, так что я закончил. Черт, я не на том уровне, на котором вы двое. Также собираюсь загрузить последнюю версию инструмента apk. Возможно, также придется повторно загрузить jre (только что восстановил систему и не знаю, что у меня сейчас получилось)

Брют.все

Неактивный признанный разработчик

Возможно, некоторые программы достаточно умны, чтобы скопировать все неизвестные фрагменты как есть, чтобы вы могли редактировать файл, изменять растровые данные, но фрагмент 9patch не будет испорчен/удален. Не знаю, проверю в Gimp

Как я и думал, Gimp удаляет фрагмент 9patch при редактировании файла. Я думаю, что большинство графических редакторов делают это.

Чтобы понять, что это такое, я создал простое приложение с файлом 9.jpg, собрал его, распаковал, отредактировал файл 9.jpg, не внося в него никаких изменений, заархивировал и запустил на устройстве. Вы можете увидеть результаты на прикрепленных изображениях.

Вложения

Похожие темы

  • Главная
  • Форумы
  • Общее развитие
  • Устаревшие устройства и устройства с низкой активностью
  • HTC Dream: G1
  • Разработка G1 для Android

Хлебные крошки

Самые популярные публикации

Поэтому я написал простой скрипт, облегчающий процесс редактирования apks. Получил много загрузок, поэтому подумал, что это пользуется спросом

Выполняете ли вы базовое редактирование изображений или редактируете файлы smali или xml, в среднем вам нужно использовать (Brut.all или smali/baksmali от JF) отличный инструмент для извлечения APK, редактирования, затем подписи APK и затем adb нажмите/установите его. Этот процесс довольно утомителен, если вы тестируете метод, требующий тонкой настройки.

Этот скрипт должен сделать процесс НАМНОГО более плавным.
Есть возможность скомпилировать/подписать/установить все за один шаг

Спасибо:
Идет на Brut.all за его замечательный инструмент.
Конечно, обращается к JF за smali/baksmali
Отправляется к farmatito за портирование этого скрипта на Linux

Особенности:
- Извлечение, Zip apk.
- Оптимизировать png (игнорирует .9.jpg)
- Zipalign apks
- Подписать apks
- Отправить в определенное место на телефоне
- Включает брут.all's apktool
- Загрузите apk с телефона в среду для моддинга.
- Пакетная оптимизация apk (Zipalign, optipng или и то, и другое)
- Быстрая подпись apk (поддерживается пакетный режим)
- Пакетная оптимизация Ogg
- Выбор уровня сжатия (отслеживание статуса выше меню)
- Пакетная установка apk из скрипта (опция 16)
- Убрано включение/выключение входа в систему. Вместо этого создается файл log.txt, в котором регистрируются действия скрипта, организованные с использованием заголовков времени/даты.
- Пользователь может изменить максимальный размер кучи java (используйте только в том случае, если определенные большие apk-файлы зависают при декомпиляции/компиляции apk-файлов) (опция 19)
- Улучшен синтаксис вопросов/ответов
- Обнаружение ошибок. Проверяет, произошла ли ошибка в любое время, когда вы выполняете задачу, и сообщает об этом. Когда вы это сделаете, если вы дважды щелкните любой apk, он установит его для вас.
- Поддерживает пакетную установку, поэтому, если вы перетащите несколько apk в скрипт (не во время его работы), он установит их все для вас. Вы, конечно, можете перетащить и один apk.
— Добавлена ​​декомпиляция, зависящая от фреймворка (для непатентованных rom apks). (Вариант 10). Проверяет правильность выбранного зависимого apk u.
- Позволяет изменять несколько проектов, переключаться между ними.
- Позволяет изменять системные apk с помощью apktool, но обеспечивает максимальную совместимость с точки зрения подписи/манифеста.xml
- Все, что я забыл, наверное

Инструкция (Windows):
- Поместите apk в соответствующую папку (подойдет любое имя файла, если запускаемых в первый раз папок там не будет, необходимо запустить и тогда папки создадутся)
- Запустить скрипт
- Свернуть скрипт
- Редактировать файлы внутри папки проекта
- Развернуть скрипт

Инструкция (Linux):
- Поместите apk в соответствующую папку (подойдет любое имя файла, если запускаемых в первый раз папок там не будет, необходимо запустить и тогда папки создадутся)
- Откройте терминал и измените каталог на apkmanager (самый простой способ - набрать «cd»)
- Chmod 755 Script.sh
- Chmod 755 все файлы приложений внутри другой папки (спасибо за подсказку bkmo) < br />- Запустить скрипт, набрав ./Script.sh
- Свернуть скрипт
- Редактировать файлы внутри папки out
- Развернуть скрипт

Требования:
Java
Adb

Будущие улучшения:
- Управление несколькими одновременными изменениями apk (выбор apk для извлечения/сборки)
- Возможность оптимизации apk < br />- Возможность отправки adb в определенное пользователем место
- Другие вещи, о которых я пока не знаю

Рассматриваем упаковку вашего окончательного проекта Android.

Выберите операционную систему:

Чтобы понять и использовать содержимое этой страницы, убедитесь, что вы знакомы со следующими темами:

В следующем руководстве мы рассмотрим, как упаковать проект Unreal Engine 4 (UE4) для развертывания на устройстве Android. Процесс упаковки Android в UE4 прост в использовании и выводит несколько удобных файлов для установки и удаления вашего проекта с телефонов для тестирования.

Основная настройка

Прежде чем мы начнем, вам необходимо выполнить следующие требования и настроить проект:

На вашем компьютере должна быть установлена ​​Android Studio. См. раздел Настройка Android SDK и NDK .

На вашем Android-устройстве должен быть включен режим разработки и отладка по USB. См. раздел Настройка устройства Android для разработки .

Вам потребуется настроить параметры проекта для Android и принять лицензионное соглашение Android SDK. См. Краткое руководство по началу работы с Android .

Если вы еще не создали проект, создайте его с помощью шаблона от третьего лица, установив для параметра "Оборудование" значение "Мобильный/планшет" и для качества "Масштабируемое 3D" или "2D".

1. Упаковка вашего проекта

В этом разделе мы упакуем проект в виде файла .APK.

В настоящее время мы занимаемся упаковкой в ​​разделе "Разработка", потому что тестируем эту игру, но когда ваша игра будет готова, вы можете упаковать ее в разделе "Доставка", наведя указатель мыши на параметр "Конфигурации сборки" в меню "Упаковать проект".

В меню "Файл" выберите "Упаковать проект" > "Android" и выберите формат текстуры, который вы хотите упаковать. В этом примере мы выберем Android ETC2, так как он поддерживается всеми устройствами.

Нажмите, чтобы увеличить изображение.

Разные устройства поддерживают разные форматы текстур в зависимости от оборудования, на котором они работают. Подробную информацию о различных форматах см. в Справочнике по разработке для Android.

Формат

Описание

ETC2

Поддерживается всеми устройствами класса OpenGL 3.x и поддерживает альфа-сжатие.

ДСТ

Поддерживается графическими процессорами Nvidia Tegra и поддерживает альфа-сжатие.

АСТЦ

Новейший формат сжатия текстур, позволяющий лучше контролировать качество за счет указания размера блока и поддерживающий альфа-сжатие. На данный момент доступно на некоторых устройствах.

Если вы используете старую версию Unreal Engine для поддержки существующего проекта, у вас также будет доступ к следующим устаревшим форматам текстур.

Формат

Описание

ETC1

Поддерживается всеми устройствами на базе Android, но не может сжимать альфа-текстуры (они хранятся в несжатом виде). Рекомендуется использовать RGB и отдельную альфа-текстуру, если требуется альфа-канал для лучшего сжатия.

ETC1a

Использует ETC1 для текстур без альфа-канала и ETC2 для текстур с альфа-каналом. Если устройство не поддерживает ETC2, альфа-текстуры будут распаковываться в RGBA во время выполнения. Этот формат можно использовать как на устройствах ETC1, так и на устройствах ETC2, но ETC1 для текстур без альфа-канала может быть не такого высокого качества, как ETC2.

УВД

Поддерживается графическими процессорами Qualcomm Adreno и поддерживает альфа-сжатие.

ПВРТЦ

Поддерживается графическими процессорами PowerVR и поддерживает альфа-сжатие.

Вам будет предложено указать место для сохранения упакованной игры, которое по умолчанию должно находиться в папке вашего проекта. Создайте новую папку и назовите ее AndroidBuilds.

Нажмите, чтобы увеличить изображение.

Во время упаковки вашего проекта в правом нижнем углу появится сообщение об упаковке, показывающее ход упаковки.

После успешного завершения упаковки в правом нижнем углу редактора появится сообщение "Упаковка завершена".

Перейдите к папке, которую вы создали на втором шаге. Появится новая папка, названная специально для типа текстуры, который вы выбрали при упаковке. В этом примере папка называется Android_ETC2.

Нажмите, чтобы увеличить изображение.

2. Развертывание упакованного проекта на устройстве

Теперь, когда мы упаковали ваш проект в виде .APK, в этом разделе вы узнаете, как развернуть сборку на устройстве.

Подключите устройство Android к компьютеру с помощью USB-кабеля. Если будет предложено, разрешите вашему компьютеру изменять файлы.

Откройте папку Android_ETC2 и дважды щелкните пакетный файл Install_[ProjectName]_Development.bat, чтобы установить проект на устройство Android.

Нажмите, чтобы увеличить изображение.

Если ваше устройство не подключено через USB, запуск файла .BAT ничего не даст.

Подключите устройство Android к компьютеру с помощью USB-кабеля. Если будет предложено, разрешите вашему компьютеру изменять файлы.

Подключите устройство Android к компьютеру с помощью USB-кабеля. Если будет предложено, разрешите вашему компьютеру изменять файлы.

Откройте папку Android_ETC2, в которой вы найдете файлы, созданные в процессе упаковки.

Вы должны увидеть сценарии оболочки установки и удаления (.sh) вместе с пакетом приложения Android (.apk), который содержит все файлы, необходимые для установки проекта на любое устройство Android, поддерживающее поддерживает схему сжатия ETC1.

Теперь откройте терминал из расположения этой папки, щелкнув правой кнопкой мыши внутри папки и выбрав Открыть в терминале.

Введите ./Install_LinuxAndroidProject_Development-arm64.es2.sh в терминал, чтобы установить проект на Android-устройство.

Нажмите, чтобы увеличить изображение.

Если у вас возникли проблемы с запуском сценария оболочки, попробуйте ввести adb devices в терминал, чтобы убедиться, что ваше устройство подключено к компьютеру.

Во время установки сценарий оболочки должен вывести на ваш терминал следующий вывод

Нажмите, чтобы увеличить изображение.

Когда сценарий оболочки завершит процесс установки, вы должны увидеть сообщение об успешной установке.

После выполнения этого руководства ваш проект должен появиться на вашем устройстве Android, как показано на следующем изображении:

Кроме того, у вас будут упакованные файлы .APK и сопутствующие вспомогательные программы для развертывания их на других устройствах для тестирования.

Упаковка пакетов приложений

Наборы Android App Bundle — это формат распространения, предлагаемый Google в качестве альтернативы упаковке файлов .apk. Вместо того, чтобы создавать разные .apk для разных подмножеств устройств, вы можете создать одну сборку Android App Bundle (.aab) и загрузить ее в Google Play Store. Затем система динамического распространения магазина использует содержимое App Bundle для создания файла .apk, оптимизированного для конкретного устройства пользователя, когда он загружает приложение.

Помимо значительного сокращения работы, связанной с поддержкой сборок в Google Play Store, сборки App Bundle могут распространять файлы .apk размером до 150 МБ вместо прежнего ограничения в 100 МБ. Это ограничение применяется к окончательному файлу .apk, а не к пакету приложений, использованному для его создания.

Чтобы создать сборку App Bundle, откройте настройки проекта и перейдите в раздел «Платформы» > «Android». В разделе "Наборы приложений" включите "Создать набор" (AAB).

Теперь, когда вы упаковываете проект для Android, вы создаете файл .aab для загрузки в Google Play. Вы также создадите универсальный файл .apk для тестирования.

Из-за ограничения Google Play Store наборы приложений Android нельзя распространять с файлами .obb.

Другие параметры, доступные для настройки сборок App Bundle, позволяют точно настроить степень чувствительности, которую App Bundle будет использовать при создании окончательных .apk для вашего проекта.

Создать универсальный APK-файл из пакета

Включение этого параметра позволит App Bundle создавать универсальный файл .apk для конечных пользователей, который можно запускать на любом устройстве. Это не влияет на универсальный файл .apk, созданный для тестирования на вашем компьютере.

Включить разделение ABI

Набор приложений создает отдельные файлы .apk на основе двоичного интерфейса приложения, используемого ЦП пользователя. Например: arm64-v8a, x86, x86_64.

Включить разделение языков

Набор App Bundle создаст отдельные файлы .apk в зависимости от языка пользователя. Будут загружены только строки, локализованные для пользователя.

Включить разделение по плотности

Набор App Bundle создает отдельные файлы .apk в зависимости от разрешения изображения и DPI. Будут загружены только значки и заставки, совместимые с устройством пользователя.

Например, если вы включили разделение ABI, но отключили разделение языков, файл .aab адаптирует окончательный APK к устройству пользователя на основе совместимого ABI для его устройства, но каждый пользователь получит ресурсы для всех языков независимо от его устройства или языковых настроек.

Настройки по умолчанию приведут к наименьшему возможному размеру конечного .apk, а отключение этих настроек приведет к увеличению .apk.

Информацию о том, как загрузить файлы .apks или .aabs в Google Play Store, см. в нашем руководстве по доставке с Android .

Android App Bundle — это новый официальный формат публикации приложений Android.

Эта статья доступна в виде видео, ссылка на которую находится в конце сообщения.

С помощью набора Android App Bundle мы создали формат, который, помимо прочего, открывает доступ к небольшим приложениям для ваших пользователей. Небольшие приложения с большей вероятностью будут установлены и с меньшей вероятностью будут удалены при нехватке места на диске.

В этом посте мы подробно рассмотрим, как создать свой первый набор приложений, как загрузить его с помощью Play Console, а также рассмотрим некоторые параметры конфигурации.

Для начала не требуется никаких изменений в существующей кодовой базе.

Все, что вам нужно сделать, это создать Android App Bundle с помощью командной строки или Android Studio.

В командной строке вы запустите одну из задач пакета следующим образом:

Затем найдите пакет в каталоге сборки вашего приложения. Расположение по умолчанию: app/build/outputs/bundle/release .

Этот пакет необходимо подписать. При использовании jarsigner вы подписываете пакет следующим образом:

После замены переменных фактическими значениями и ввода пароля хранилища ключей пакет будет подписан и готов к загрузке.

В Android Studio выберите «Build => Generate Signed Bundle / APK» и следуйте инструкциям в диалоговом окне.

Независимо от того, используете ли вы командную строку или Android Studio, в результате вы получите готовый и подписанный комплект релиза, готовый для загрузки в Play Маркет.

Загрузка через Play Console

Чтобы загрузить набор приложений в Play Маркет, создайте новый выпуск в выбранной версии. Вы можете перетащить пакет в раздел "Наборы приложений и APK" или использовать Google Play Developer API.

После загрузки пакета Play Маркет может оптимизировать APK-файлы, которые он доставляет на устройства пользователей, в зависимости от их конфигурации. Это, в свою очередь, уменьшает размер загрузки и установки.

Чтобы посмотреть, как Play Маркет доставляет ваше приложение на устройство пользователя, нажмите кнопку "Подробности" в конце строки пакета.

На экране подробностей вы уже видите много информации о вашем комплекте приложений, например код версии, уровень minSdk, целевой SDK, необходимые функции, разрешения, макеты экрана, локализации и многое другое.

Кроме того, вы можете скачать подписанные APK-файлы для своего приложения, чтобы точно знать, что Play Маркет доставляет на конкретное устройство. Чтобы перейти туда, нажмите «Исследовать пакет», а затем откройте вкладку «Загрузки».

Вы можете выбрать конкретное устройство или применить один или несколько фильтров на вкладке "Добавить фильтр".

В обозревателе комплектов приложений в конце экрана есть кнопка «Загрузить», которая предоставляет ZIP-файл, содержащий несколько APK, адаптированных для конкретного рассматриваемого устройства.

После того, как вы загрузите и разархивируете файл, содержащий его APK-файл можно установить на локальный эмулятор или устройство с помощью `adb install — несколько *.apk` из содержащего каталога.

Несмотря на то, что каждый APK-файл в этом наборе важен для обеспечения правильной работы вашего приложения, я хочу отметить, что base.apk всегда должен быть установлен на устройстве, чтобы обеспечить основные функции вашего приложения. Помимо кода и ресурсов базовый модуль также содержит объединенный AndroidManifest и общие зависимости для всего приложения.

Каждый функциональный модуль или разделение конфигурации предоставляет свои собственные ресурсы и может содержать код, но базовый модуль связывает все это вместе.

Вы можете отключить оптимизацию в файле build.gradle каждого модуля. Все, что вам нужно сделать, это отредактировать свойство языка, плотности или abi и установить для параметра enableSplit значение false. Это сообщит системе сборки, что ей не следует оптимизировать это конкретное измерение.

Если у вас нет веской причины, я рекомендую не трогать этот раздел, так как установка enableSplit на false может значительно увеличить размер установки вашего приложения на устройстве.

Могут быть исключения, например, когда ваше приложение имеет собственный встроенный селектор языка, и вы хотите, чтобы все возможные языки всегда были доступны для выбора. Но даже в этом случае использование Android App Bundle дает вам возможность вместо этого загружать функции по запросу. Это можно использовать, чтобы избежать предварительной установки частей вашего приложения, которые могут понадобиться только некоторым пользователям.

А поскольку мы позволяем вам загружать и устанавливать функции программным способом, мы предоставляем отдельный API, который вы можете использовать. Он является частью библиотеки PlayCore и рассматривается в следующем посте и в этом видео из нашей серии «Современные навыки разработки для Android».

Читайте также: