Конец эпохи ARMv7 или же немного о портировании игр

от автора

Вступление

Тема с портированием андроид игр с одной архитектуры на другую весьма неновая. Изначально я столкнулся с этим ещё в 2015 году, только речь шла о портировании под ARMv6. С тех пор принцип переноса не поменялся, и перенести игру с одной архитектуры на другую может любой, если имеет необходимые библиотеки.

Разбор apk

Итак, что такое .apk? APK файл представляет из себя немного модифицированный ZIP архив, который содержит ресурсы игры и игровой движок. Выглядит он примерно так:
image

Папка lib — ключевая точка при переносе между архитектурами. Она содержит библиотеки движка нашей игры.
* armeabi — armv6 библиотеки (не актуально)
* armeabi-v7a — armv7 библиотеки (при отсутствии папки — отсутствует и поддержка архитектуры)
* arm64-v8a — armv8 x64 библиотеки

Перенос

Шаг #1

Первым делом нам нужно узнать, возможно ли портировать игру. Для этого нужно определить движок игры. К примеру, файл lib/libunity.so — принадлежит Unity Engine, а по наличию папки assets/x-renpy можно догадаться, что игра разработана на RenPy Engine. Если у игры движок не является собственным, то переходим к шагу два.

Шаг #2

Итак, мы определили движок игры. Теперь нам нужно найти подходящего донора. Если эта игра раньше поддерживалась вашим аппаратом, а после обновления перестала — то можно попробовать вскрыть ресурсы прошлых версий. Если этот вариант не подошёл, то можно поискать игры, базирующиеся на этом же движке. Иногда разработчики просто не добавляют поддержку armv7, так что есть вероятность найти нужные компоненты.

Шаг #3

Мы нашли подходящего донора, теперь нам нужно добавить папку lib/armeabi-v7a в наш (name).apk. Добавляем и видим следующее:
image
В самом начале, как я уже сказал, APK файл представляет из себя немного модифицированный ZIP архив, а после изменения его содержимого он становится обычным ZIP’ом.

Шаг #4

Для того, чтобы ваше устройство могло установить ваш (name).apk файл, его нужно «подписать». Для этого есть несколько различных утилит, к примеру apk-signer.
Устанавливаем утилиту на свой девайс, открываем, переходим в раздел Signing, нажимаем на карандаш снизу и выбираем наш (name).apk. После чего программа предложит вам выбрать, куда сохранить «подписанный файл». Выбираем и ждём. ??? PROFIT!!!
image

Шаг #5

Будь добрым человеком, выложи свой порт для общего пользования, к примеру, в топик игры на том же 4PDA. 😉

Некоторые lib’ы

Unity 3.* for ARMv6: yadi.sk/d/XGHn309ORuPgeg

RenPy ARMv7: yadi.sk/d/_U-hnz8D-J7D-Q


ссылка на оригинал статьи https://habr.com/ru/post/482282/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *