что делать если игра не влазит в экран телефона

[Вопросы] почему при входе в игру у меня изображение не помещается в экран

смотря какой у тебя телефон если у тебя безрамочный экран то просто заходишь в настройки там находишь все твои приложения ищешь игру там нажимаешь разрешить полноэкранный режим (или что то подобное)

Посмотрите какие приложения у вас совместимы с полноэкраным режимом 😉

Screenshot_2019-08-14-21-07-01-713_com.miui.home.png (640.92 KB, Downloads: 14)

2019-08-15 02:19:56 Upload

Screenshot_2019-08-14-21-07-34-921_com.android.settings.png (579.1 KB, Downloads: 14)

2019-08-15 02:19:56 Upload

Screenshot_2019-08-14-21-08-02-312_com.android.settings.png (526.05 KB, Downloads: 12)

2019-08-15 02:19:56 Upload

IMG_20190814_211043.jpg (563.54 KB, Downloads: 16)

2019-08-15 02:19:56 Upload

IMG_20190814_211502.jpg (580.32 KB, Downloads: 12)

2019-08-15 02:19:56 Upload

IMG_20190814_211643.jpg (592.77 KB, Downloads: 11)

2019-08-15 02:19:56 Upload

Screenshot_2019-08-14-21-17-07-073_com.android.settings.png (580.96 KB, Downloads: 12)

2019-08-15 02:19:56 Upload

Screenshot_2019-08-14-21-18-25-294_com.android.settings.png (1.98 MB, Downloads: 14)

2019-08-15 02:19:56 Upload

Screenshot_2019-08-14-21-18-11-726_com.android.settings.png (1.95 MB, Downloads: 15)

2019-08-15 02:19:56 Upload

Xiaomi Comm APP

Получайте новости о Mi продукции и MIUI

Рекомендации

* Рекомендуется загружать изображения для обложки с разрешением 720*312

Изменения необратимы после отправки

Cookies Preference Center

We use cookies on this website. To learn in detail about how we use cookies, please read our full Cookies Notice. To reject all non-essential cookies simply click «Save and Close» below. To accept or reject cookies by category please simply click on the tabs to the left. You can revisit and change your settings at any time. read more

These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services such as setting your privacy preferences, logging in or filling in formsYou can set your browser to block or alert you about these cookies, but some parts of thesite will not then work. These cookies do not store any personally identifiable information.

These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services such as setting your privacy preferences, logging in or filling in formsYou can set your browser to block or alert you about these cookies, but some parts of thesite will not then work. These cookies do not store any personally identifiable information.

These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services such as setting your privacy preferences, logging in or filling in formsYou can set your browser to block or alert you about these cookies, but some parts of thesite will not then work. These cookies do not store any personally identifiable information.

Источник

Android: как заставить приложения видеть весь экран

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

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

Все приложения в полноэкранном режиме

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

С помощью приложения

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

Источник

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

Доброго времени!

В последнее время большинство ноутбуков идет с разрешением FullHD (1920 на 1080, и выше). Причем, такое высокое разрешение идет как на экранах в 13,3 дюйма, так и на 17+ дюймах. Разумеется, если бы в Windows 10 не было масштабирования — то изображение на небольших экранах было бы очень мелким, и работать было бы не комфортно.

Всё это, конечно, хорошо, но масштабирование работает некорректно со многими старыми приложениями (включая игры). И можно столкнуться с двумя проблемами:

В общем, в этой статье предложу парочку простых способов исправить ситуацию. И так.

Изображение просто не вписывается в экран (два фото на одном и том же экране). Игра Civilization IV (2004 г.)

Как исправить ситуацию

Вариант #1 — отключить масштабирование

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

Для изменения масштабирования:

desk.cpl — открыть свойства экрана

Настройки дисплея (Windows 10) / Было

Вариант #2 — переопределить режим масштабирования для одного приложения

Этот вариант мне нравится больше, т.к. масштабирование будет изменяться только в одном отдельно взятом приложении, а в остальной работе — будет так, как вы задали в параметрах Windows. Правда, сразу отмечу, что работает данная фишка не со всеми программами.

Свойства (исполняемый файл игры)

После чего следует открыть вкладку «Совместимость» и:

Переопределить режим масштабирования (для приложения)

Дополнения по теме — приветствуются!

Источник

Настройка масштаба интерфейса на Android

Масштаб интерфейса на устройстве Андроид – это размер всех элементов меню. Благодаря возможности его настроек, можно легко отрегулировать все под максимально удобный вид. Изменять масштаб можно, начиная с версии ОС Android 7.0 Nougat. Но на устройствах некоторых производителей, имеющих свою фирменную оболочку, функция уменьшения или увеличения масштаба присутствует уже давно. Они внедрили её еще на более ранних версиях Андроид.

Из статьи вы узнаете

Зачем менять масштаб?

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

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

В качестве примера посмотрите на эти два скриншота. На одном масштаб маленький, а на другом большой:

На что влияет масштаб?

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

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

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

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

Масштаб будет применен к следующим частям системы:

А вот эти элементы не будут изменяться:

Первый способ

В данном случае доступно лишь 4 режима:

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

Второй способ

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

Для применения нужно зайти в режим «Для разработчиков». Делаем следующие шаги:

4 Replies to “ Настройка масштаба интерфейса на Android ”

я решил попробовать это на устройстве BQ SPRING я использовал второй способ и изменил ширину с 320 на 3200 и у меня произошёл сбой в системе то есть появилось окно: сбой в приложении «интерфейс системы» (и 1 вариант) закрыть приложение, я нажимаю появляется чёрный экран. Я пробовал включить безопасный режим, просто перезагрузить, подключил к ПК, посмотрел, единственная информация о телефоне — это заряд батареи издатель модель и серийный номер ВСЁ. ПОЖАЛУЙСТА СКАЖИТЕ КАК ИСПРАВИТЬ.

У меня тоже такая проблема как ты решил? Скажи пожалуйста

я решил попробовать это на устройстве doogee x60l я использовал второй способ и изменил ширину с 320 на 648 и у меня произошёл сбой в системе то есть появилось окно: сбой в приложении «интерфейс системы» (и 1 вариант) закрыть приложение, я нажимаю появляется чёрный экран. Я пробовал включить безопасный режим, просто перезагрузить, подключил к ПК, посмотрел, единственная информация о телефоне — это заряд батареи издатель модель и серийный номер ВСЁ. ПОЖАЛУЙСТА СКАЖИТЕ КАК ИСПРАВИТЬ.

У меня тоже такая проблема что ты сделал скажи пожалуйста?

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

Для отправки комментария вам необходимо авторизоваться.

Источник

Что делать если игра не влазит в экран телефона

Теперь давайте задумаемся, что представляет собой оптимизация игры под экраны HVGA/QVGA?
Ее можно разделить на несколько этапов.
Основные:
1. Смена разрешения рендеринга на HVGA/QVGA.
2. Корректировка координатной сетки сенсорного экрана.
Второстепенные:
3. Отключение проверки кеша(необходимо для того чтоб можно было переконвертировать вступительный ролик под меньшее разрешение).
4. Назначение аппаратной кнопки, на какое-либо действие(необходимо для телефонов без мультитача).

Прежде чем приступить к какому-либо этапу оптимизации, нам необходимо добраться до исходного кода программы, оригинальный исходный код мы разумеется не получим, но можем получить JAVA-байт код, чего вполне для нашей задачи будет достаточно. Для этого мы будем использовать «Apk Manager».

Установка и работа с «Apk Manager».

Далее по-тексту я буду упускать описание процесса распаковки/запаковки апк-файлов.
Также прежде чем начинать, рекомендую сначала просмотреть список команд JAVA-байт кода.
Теперь можно преступить непосредственно к оптимизации, для примера я буду использовать игру «Modern Combat: Sandstorm».

1. Смена разрешения рендеринга на HVGA/QVGA.

.method public onDrawFrame(Ljavax/microedition/khronos/opengles/GL10;)V
.locals 6
.parameter «gl»

.prologue
.line 174
const-wide/16 v0, 0x0

.line 177
.local v0, time:J
invoke-static <>, Ljava/lang/System;->currentTimeMillis()J

.line 179
invoke-static <>, Lcom/gameloft/android/GAND/GloftMCHP/GLMediaPlayer;->update()V

.line 180
invoke-static <>, Lcom/gameloft/android/GAND/GloftMCHP/SandstormRenderer;->nativeRender()V

.line 186
const-wide/16 v2, 0x32

sub-long/2addr v4, v0

.line 188
const-wide/16 v2, 0x0

.line 193
:cond_0
:goto_0
return-void

.line 190
:catch_0
move-exception v2

goto :goto_0
.end method

.method public onDrawFrame(Ljavax/microedition/khronos/opengles/GL10;)V
.locals 9
.parameter «gl»

.prologue
const/16 v8, 0x1E0

.line 174
const-wide/16 v0, 0x0

.line 177
.local v0, time:J
invoke-static <>, Ljava/lang/System;->currentTimeMillis()J

.line 179
invoke-static <>, Lcom/gameloft/android/GAND/GloftMCHP/GLMediaPlayer;->update()V

.line 180
invoke-static <>, Lcom/gameloft/android/GAND/GloftMCHP/SandstormRenderer;->nativeRender()V

.line 186
const-wide/16 v2, 0x32

sub-long/2addr v4, v0

.line 188
const-wide/16 v2, 0x0

.line 193
:cond_0
:goto_0
return-void

.line 190
:catch_0
move-exception v2

goto :goto_0
.end method

Также обратим внимание на функцию «onSurfaceCreated».

.method public onSurfaceCreated(Ljavax/microedition/khronos/opengles/GL10;Ljavax/microedition/khronos/egl/EGLConfig;)V
.locals 7
.parameter «gl»
.parameter «config»

.line 138
const/4 v0, 0x2

const-string v1, «SandstormRenderer»

const-string v2, «onSurfaceCreated»

.line 141
invoke-direct , Lcom/gameloft/android/GAND/GloftMCHP/SandstormRenderer;->nativeGetJNIEnv()V

.line 142
invoke-static <>, Lcom/gameloft/android/GAND/GloftMCHP/GLResLoader;->init()V

.line 143
invoke-static <>, Lcom/gameloft/android/GAND/GloftMCHP/GLMediaPlayer;->init()V

.line 144
invoke-static <>, Lcom/gameloft/android/GAND/GloftMCHP/Sandstorm;->nativeInit()V

.line 146
:goto_0
sget v0, Lcom/gameloft/android/GAND/GloftMCHP/SandstormGLSurfaceView;->mDevice_W:I

sget v0, Lcom/gameloft/android/GAND/GloftMCHP/SandstormGLSurfaceView;->mDevice_H:I

.line 149
:cond_0
const-wide/16 v0, 0x32

:catch_0
move-exception v6

.local v6, ex:Ljava/lang/Exception;
invoke-virtual , Ljava/lang/Exception;->printStackTrace()V

.line 154
.end local v6 #ex:Ljava/lang/Exception;
:cond_1
sget v1, Lcom/gameloft/android/GAND/GloftMCHP/Sandstorm;->m_bEnableKeyboard:I

sget v3, Lcom/gameloft/android/GAND/GloftMCHP/SandstormGLSurfaceView;->mDevice_W:I

sget v4, Lcom/gameloft/android/GAND/GloftMCHP/SandstormGLSurfaceView;->mDevice_H:I

sget v5, Lcom/gameloft/android/GAND/GloftMCHP/Sandstorm;->mCurrentLang:I

.line 155
return-void
.end method

sget v3, Lcom/gameloft/android/GAND/GloftMCHP/SandstormGLSurfaceView;->mDevice_W:I

sget v4, Lcom/gameloft/android/GAND/GloftMCHP/SandstormGLSurfaceView;->mDevice_H:I

Основная идея следующего шага, удалить с библиотеке все вызовы функции «glViewPort».
Для анализа библиотеки нам понадобится «Ida Pro». Для удобства копируем «libsandstorm.so» в любую папку, запускаем «Ida Pro» и жмем на кнопку «New»

Далее выбераем «Various files», «Unknown file» и жмем «Ок».

В окне открытия файла указываем путь к библиотеке «libsandstorm.so» и жмем «Открыть».
В следующем окне изменяем «Processor type» на «ARM processorARM710a», далее жмем «Set» и «Ок».

Если после этого, появятся еще окна с чем либо, жмем «Ок». Теперь необходимо дождаться окончания дизассемблирования. Процесс этот достаточно долгий, по-этому можно пойти покурить или попить кофе 🙂
О том что дизассемблирования закончено, укажет сообщение «The initial autoanalysis has been finished.» в нижнем окне «Output window».

Для большего удобства, в нашем случае, кликаем правой кнопкой мышки по голубой области, и в контекстном меню выбираем «Text view». Перемещаемся в самое начало ассемблерного кода, для осуществление поиска «glViewPort».

Жмем комбинацию клавиш «Alt+T» и в появившемся диалоге для поиска вводим «glViewPort» и жмем «Ок».

Нас интересуют вызовы функций «BLX glViewport», «BL glViewport», «B glViewport», «BX glViewport» и т. д. Любые другие упоминания о «glViewport» мы игнорируем, жмакаем «Ctrl+T» и продолжаем поиск.
Найдя необходимое место, переключаемся на «Hex View-A».

Удостоверяемся, что вызов функции занимает 4 байта и это «CE F7 D4 E8»(в вашем случае эти цифры могут быть другими), это необходимо для того чтоб видеть что нужно исправлять и не затереть случайно ничего лишнего.

Для того чтоб переместится по нужному нам адресу, жмем «Ctrl+G», в появившееся окно вводит «0x001F994A» и жмем «Ок».

Переместившись мы видим, что попали туда, куда нужно, весь шестнадцатеричный код сходится с тем что мы видели в «Ida Pro» на вкладке «Hex View-A».

Переключаемся в «Ida Pro» и продолжаем поиск следующих вызовов «glViewPort», их может быть несколько десятков. С ними поступаем аналогично.
Когда все вызовы функции выпилили, сохраняемся. Копируем на место исправленный «libsandstorm.so». Запаковываем апк-файл и устанавливаем на телефон для проверки. Если все сделано правильно, то вся графика смаштабируется до необходимого разрешения.

2. Корректировка координатной сетки сенсорного экрана

Даже когда мы оптимизировали графику под экран HVGA/QVGA и все кнопочки на экране отображаются в нужных местах, на координатной сетки сенсорного экрана они располагаются на старых местах, за пределами экрана.
Выглядит это так.

.method public onTouchEvent(Landroid/view/MotionEvent;)Z
.locals 10
.parameter «event»

.prologue
const/4 v9, 0x1

.line 379
invoke-virtual , Landroid/view/MotionEvent;->getAction()I

.line 380
.local v0, action:I
and-int/lit16 v4, v0, 0xff

.line 382
.local v4, mask:I
invoke-virtual , Landroid/view/MotionEvent;->getPointerCount()I

.line 383
.local v1, count:I
const v6, 0xff00

shr-int/lit8 v5, v6, 0x8

.line 388
.local v5, pointerId:I
if-nez v0, :cond_0

.line 390
invoke-virtual , Landroid/view/MotionEvent;->getX(I)F

.line 394
:cond_0
const/4 v6, 0x5

.line 397
invoke-virtual , Landroid/view/MotionEvent;->getX(I)F

.line 400
:cond_1
const/4 v6, 0x2

.line 402
const/4 v2, 0x0

.local v2, i:I
:goto_0
if-ge v2, v1, :cond_2

.line 403
invoke-virtual , Landroid/view/MotionEvent;->getPointerId(I)I

.line 405
.local v3, id:I
invoke-virtual , Landroid/view/MotionEvent;->getX(I)F

.line 402
add-int/lit8 v2, v2, 0x1

.line 409
.end local v2 #i:I
.end local v3 #id:I
:cond_2
const/4 v6, 0x6

.line 412
invoke-virtual , Landroid/view/MotionEvent;->getX(I)F

.line 415
:cond_3
if-ne v0, v9, :cond_4

.line 416
const/4 v2, 0x0

.restart local v2 #i:I
:goto_1
if-ge v2, v1, :cond_4

.line 418
invoke-virtual , Landroid/view/MotionEvent;->getPointerId(I)I

.line 421
.restart local v3 #id:I
invoke-virtual , Landroid/view/MotionEvent;->getX(I)F

.line 416
add-int/lit8 v2, v2, 0x1

.line 427
.end local v2 #i:I
.end local v3 #id:I
:cond_4
return v9
.end method

.method public onTouchEvent(Landroid/view/MotionEvent;)Z
.locals 10
.parameter «event»

.prologue
const/4 v9, 0x1

.line 379
invoke-virtual , Landroid/view/MotionEvent;->getAction()I

.line 380
.local v0, action:I
and-int/lit16 v4, v0, 0xff

.line 382
.local v4, mask:I
invoke-virtual , Landroid/view/MotionEvent;->getPointerCount()I

.line 383
.local v1, count:I
const v6, 0xff00

shr-int/lit8 v5, v6, 0x8

.line 388
.local v5, pointerId:I
if-nez v0, :cond_0

.line 390
invoke-virtual , Landroid/view/MotionEvent;->getX(I)F

mul-int/lit8 v6, v6, 0xa

div-int/lit8 v6, v6, 0x6

mul-int/lit8 v7, v7, 0x3

div-int/lit8 v7, v7, 0x2

.line 394
:cond_0
const/4 v6, 0x5

.line 397
invoke-virtual , Landroid/view/MotionEvent;->getX(I)F

mul-int/lit8 v6, v6, 0xa

div-int/lit8 v6, v6, 0x6

mul-int/lit8 v7, v7, 0x3

div-int/lit8 v7, v7, 0x2

.line 400
:cond_1
const/4 v6, 0x2

.line 402
const/4 v2, 0x0

.local v2, i:I
:goto_0
if-ge v2, v1, :cond_2

.line 403
invoke-virtual , Landroid/view/MotionEvent;->getPointerId(I)I

.line 405
.local v3, id:I
invoke-virtual , Landroid/view/MotionEvent;->getX(I)F

mul-int/lit8 v6, v6, 0xa

div-int/lit8 v6, v6, 0x6

mul-int/lit8 v7, v7, 0x3

div-int/lit8 v7, v7, 0x2

.line 402
add-int/lit8 v2, v2, 0x1

.line 409
.end local v2 #i:I
.end local v3 #id:I
:cond_2
const/4 v6, 0x6

.line 412
invoke-virtual , Landroid/view/MotionEvent;->getX(I)F

mul-int/lit8 v6, v6, 0xa

div-int/lit8 v6, v6, 0x6

mul-int/lit8 v7, v7, 0x3

div-int/lit8 v7, v7, 0x2

.line 415
:cond_3
if-ne v0, v9, :cond_4

.line 416
const/4 v2, 0x0

.restart local v2 #i:I
:goto_1
if-ge v2, v1, :cond_4

.line 418
invoke-virtual , Landroid/view/MotionEvent;->getPointerId(I)I

.line 421
.restart local v3 #id:I
invoke-virtual , Landroid/view/MotionEvent;->getX(I)F

mul-int/lit8 v6, v6, 0xa

div-int/lit8 v6, v6, 0x6

mul-int/lit8 v7, v7, 0x3

div-int/lit8 v7, v7, 0x2

.line 416
add-int/lit8 v2, v2, 0x1

.line 427
.end local v2 #i:I
.end local v3 #id:I
:cond_4
return v9
.end method

mul-int/lit8 v6, v6, 0xa

div-int/lit8 v6, v6, 0x6

mul-int/lit8 v7, v7, 0x3

div-int/lit8 v7, v7, 0x2

.method private isRequiredFile(Ljava/lang/String;J)Z
.locals 5
.parameter «fileName»
.parameter «size»

.prologue
const/4 v4, 0x1

.line 410
new-instance v2, Ljava/lang/StringBuilder;

invoke-direct , Ljava/lang/StringBuilder;-> ()V

sget-object v3, Lcom/gameloft/android/GAND/GloftMCHP/GameInstaller;->DATA_PATH:Ljava/lang/String;

.line 411
.local v1, path:Ljava/lang/String;
new-instance v0, Ljava/io/File;

invoke-direct , Ljava/io/File;-> (Ljava/lang/String;)V

.line 412
.local v0, file:Ljava/io/File;
invoke-direct , Lcom/gameloft/android/GAND/GloftMCHP/GameInstaller;->replaceOconf(Ljava/lang/String;)Z

.line 415
:goto_0
return v2

:cond_0
invoke-virtual , Ljava/io/File;->exists()Z

:cond_1
const/4 v2, 0x0

:cond_2
const/4 v2, 0x0

goto :goto_0
.end method

:cond_1
const/4 v2, 0x0

.method private isRequiredFile(Ljava/lang/String;J)Z
.locals 5
.parameter «fileName»
.parameter «size»

.prologue
const/4 v4, 0x1

.line 410
new-instance v2, Ljava/lang/StringBuilder;

invoke-direct , Ljava/lang/StringBuilder;-> ()V

sget-object v3, Lcom/gameloft/android/GAND/GloftMCHP/GameInstaller;->DATA_PATH:Ljava/lang/String;

.line 411
.local v1, path:Ljava/lang/String;
new-instance v0, Ljava/io/File;

invoke-direct , Ljava/io/File;-> (Ljava/lang/String;)V

.line 412
.local v0, file:Ljava/io/File;
invoke-direct , Lcom/gameloft/android/GAND/GloftMCHP/GameInstaller;->replaceOconf(Ljava/lang/String;)Z

.line 415
:goto_0
return v2

:cond_2
const/4 v2, 0x0

goto :goto_0
.end method

Таким образом мы, указываем игре, чтоб она не зависимо от типа ускорителя, использовался кеш для «Snapdragon».
После этого игра должна работать корректно. Кстати у меня всегда вызывает недоумение, зачем выкладывать по 10 раз кеш под «Snapdragon», с заголовками «Кеш для Desire», «Кеш для Desire z», «Кеш для Desire HD» если они одинаковые? Мало того, в играх обычно существует только 3 разновидности кеша, под разные видеоускорители. В этом вы смогли удостоверится посмотрев файл «data.txt».

Если игра вообще не запускается
Бывает еще так, что игра вообще не запускается, но объективных причин для этого нет. Причем, если исправить модель устройства в «build.prop» игра начинает работать. Это значит, что где-то в коде игры есть проверка модели/производителя телефона, в результате которой игра просто закрывается. Понятно, что для решения этой проблемы нужно чтоб игра думала, что она запускается на правильном девайсе. Например на «HTC Desire», если он конечно поддерживается игрой. С помощью поиска проходим по всем «*.smali» файлам и находим те в который встречается код «Landroid/os/Build;->MANUFACTURER:Ljava/lang/String» или «Landroid/os/Build;->MODEL:Ljava/lang/String». Таким образом мы нашли код определения модели/производителя телефона.

sget-object v0, Landroid/os/Build;->MANUFACTURER:Ljava/lang/String;

sget-object v1, Landroid/os/Build;->MODEL:Ljava/lang/String;

const-string v0, «HTC»

const-string v1, «HTC Desire»

Анализировать JAVA-байт-код, в файлах «*.smali», занятие достаточно сложное и мало приятное. Но есть выход, мы можем декомпилировать apk-файл и получить исходники JAVA. Хоть эти исходники и не годятся для компиляции, но изучение программы облегчают в разы. Для этого нам понадобятся 2 программы dex2jar и jd-gui, их необходимо разархивировать в произвольные папки. Далее, с помощью архиватора, с подопытного apk-файла необходимо извлечь и скопировать в папку с «dex2jar» файл «classes.dex». С помощью командной строки выполняем команду «dex2jar.bat classes.dex», в результате последней в папке «dex2jar» получаем файл «classes.dex.dex2jar.jar». Теперь запускаем программу «jd-gui» и в ней открываем, полученный ранее, файл «classes.dex.dex2jar.jar».
В результате получаем читабельный код JAVA.

давно хотел узнать как всё это делается)

очень полезная тема)
+ в репу

Большое спасибо за статью)
Буду пробовать)
Пожалуйста напиши Назначение аппаратной кнопки, на какое-либо действие :blush:

Спс за статью, попробую на этой неделе.

Если библиотеки скомпилированы под АРМ7, то нет. Если разработчики сделали просто проверка на тип процессора, то может быть, но такого я не встречал.

Почему-то весь этот текст, не хочет прятаться под спойлер, по-этому постю его здесь, а не в шапке.

.method public onTouchEvent(Landroid/view/MotionEvent;)Z
.locals 11
.parameter «event»

.prologue
const/4 v10, 0x2

.line 1002
sget v6, Lcom/gameloft/android/GAND/GloftASCR/AssassinsCreed;->s_engineState:I

.line 1004
invoke-virtual , Lcom/gameloft/android/GAND/GloftASCR/AssassinsCreed;->StateIntroVideo_onTouchEvent(Landroid/view/MotionEvent;)Z

.line 1050
:goto_0
return v6

.line 1010
:cond_0
invoke-virtual , Landroid/view/MotionEvent;->getAction()I

.line 1011
.local v0, action:I
and-int/lit16 v4, v0, 0xff

.line 1013
.local v4, mask:I
invoke-virtual , Landroid/view/MotionEvent;->getPointerCount()I

.line 1014
.local v1, count:I
const/4 v5, 0x0

.line 1015
.local v5, pointerId:I
const v6, 0xff00

shr-int/lit8 v5, v6, 0x8

.line 1017
if-nez v0, :cond_1

.line 1019
invoke-virtual , Landroid/view/MotionEvent;->getX(I)F

.line 1022
:cond_1
const/4 v6, 0x5

.line 1024
invoke-virtual , Landroid/view/MotionEvent;->getX(I)F

.line 1027
:cond_2
if-ne v0, v10, :cond_3

.line 1029
const/4 v2, 0x0

.local v2, i:I
:goto_1
if-ge v2, v1, :cond_3

.line 1031
invoke-virtual , Landroid/view/MotionEvent;->getPointerId(I)I

.line 1032
.local v3, id:I
invoke-virtual , Landroid/view/MotionEvent;->getX(I)F

.line 1029
add-int/lit8 v2, v2, 0x1

.line 1038
.end local v2 #i:I
.end local v3 #id:I
:cond_3
if-ne v0, v9, :cond_4

.line 1040
const/4 v2, 0x0

.restart local v2 #i:I
:goto_2
if-ge v2, v1, :cond_5

.line 1042
invoke-virtual , Landroid/view/MotionEvent;->getPointerId(I)I

.line 1043
.restart local v3 #id:I
invoke-virtual , Landroid/view/MotionEvent;->getX(I)F

.line 1040
add-int/lit8 v2, v2, 0x1

.line 1046
.end local v2 #i:I
.end local v3 #id:I
:cond_4
const/4 v6, 0x6

.line 1048
invoke-virtual , Landroid/view/MotionEvent;->getX(I)F

.line 1050
goto :goto_0
.end method

Источник

Читайте также:  какой знак зодиака относится к стихии воздуха
Сказочный портал