Lua чем открыть на андроид

Обновлено: 02.07.2024

Я пытаюсь перепроектировать игру Android, чтобы узнать логику их расчета.

После извлечения файла.apk есть сценарий lua в папке /assets/lua, и все они имеют расширение.lua. Однако, если они открыты с помощью редактора Text/HEX, они не читаются человеком.

Содержимое всех файлов заканчивается сигнатурой "droi.lua", заставило меня подумать, что это не сценарий LUA, а какой-то сжатый LUA-скрипт для Android. И у Android есть механизм сжатия файла для публикации.

Кто-нибудь испытал это раньше? Есть ли способ сделать такой файл доступным для чтения?

Есть ли какой-либо метод/программа для распаковки файлов, добавленных из.apk-активов (например, png, lua и т.д.)?

Энтропия данных в этом файле очень велика (энтропия Шеннона около 7,98, где 8 - теоретический максимум). Я сравнивал это с энтропией текстового файла с zipped или 7zipped и получил энтропии более 6-7.

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

Если бы я был вами, я бы искал симметричный ключ шифрования, встроенный в приложение.

Если вам интересно, здесь сценарий python, который я использовал для вычисления энтропии:

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

Раньше я не пытался делать подобные вещи на Android, но я сделал это успешно в Windows с такими инструментами, как Cheat Engine.
Поскольку существует версия Cheat Engine для Android, это должно быть относительно просто.

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

Прежде всего, какие задачи должен был решить новый фремворк?
Во-первых, проблемы с фрагментацией экранов. А во-вторых (та-дам), хотелось иметь какой-то, пусть и простейший, графический редактор интерфейсов. В третьих, фреймворк должен был определить архитектуру и файловую структуру приложения в целом. Хочу сказать, что кода получилось немного (менее 600 строк), поэтому, даже если фреймворк вам не подойдет, как есть, будет несложно разобраться с его работай и заточить его под свои нужды.
Warning: фреймворк заточен под landscape приложения, поэтому если вам нужен портретный режим, то скорее всего придется потратить некоторое время на доработку.

  • Разные размеры экранов
  • Разные разрешения
  • Разные пропорции

Спрайтовый графический редактор

Графический редактор был написан при помощи PyQt. Он довольно прост и умеет манипулировать только спрайтами, то бишь картинками.
MOAI поддерживает отображение текста, но ни графический редактор, ни Terevaka не могут его показывать. На практике это означает, что если поверх кнопки нужно нанести текст, то это нужно сделать программно после загрузки спрайта кнопки (либо нанести текст прямо на спрайт кнопки, лол).
Тем не менее, графический редактор — это мощный инструмент, т. к. позволяет не только разместить элементы графически, но и отделить вид от логики программы.
Графический редактор хранит файл проекта в JSON файле и экспортирует слой во внутреннее представление Terevaka (Lua файл) по принципу один файл — один слой.

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

Iphone 3.5 Inch:

Iphone 4 inch:

Ipad:

Scalable слой — это другой тип слоя, который масштабируется пропорционально, наподобие letterbox. К примеру, главное меню имеет смысл делать именно при помощи scalable слоя, но фон, однако, лучше сделать на весь экран.
Пример, слой в редакторе:

Iphone 3.5 Inch:

Iphone 4 Inch:

Ipad:

В редакторе, пропорции scalable слоя указаны фиксировано 427x320. Это пропорции айпада, уменьшенные до размера iphone. Вы можете выбрать более удобные для себя параметры, однако нужно помнить о разрешении графики, которая будет использоваться в дизайнере и непосредственно в приложении. Для себя я использую 853х640 (изменять параметр нужно прямо в исходниках графического редактора) и заливаю в редакторе retina графику. В самом приложении, как правило, использую текстуры еще более высокого разрешения, чтобы графика соотвествовала большим ретина экранам, а во время загрузки слоя указываю параметр dpiMultiplier, чтобы спрайты загрузились нужного размера.
Причина по которой я захардкодил 427х320 попорции — с размерами/разрешениями легко запутаться, поэтому кто понимает что к чему, разберется, как адаптировать это под свой случай.

Так, комбинируя подходы, можно довольно быстро создавать гибкую графику.
Файлы со слоями хранятся в директории ./res/layout/ по аналогии с Android.

Фрагментация разрешений экранов

Разные разрешения экрана поддерживаются двойным набором графики.
Набор графики с обычным разрешением хранится в ./res/drawable-mdpi/, а ретина — в ./res/drawable-xhdpi/. Если разрешение экрана не совпадает с одним из этих, то будет взят наиболее подходящий набор и смасштабирован. Директории ./res/drawable-ldpi и ./res/drawable-hdpi пока не поддерживаются движком.
Важный момент — при загрузке слоя желательно использовать упакованные спрайты в одну текстуру для того, чтобы оптимизировать объем расходуемой памяти. В фрейворке поддерживается MOAI формат, в который умеет конвертировать платный TexturePacker.
Warning: не используйте в TexturePacker упаковку текстур с удалением пустых областей, т. к. в экспортере в формат MOAI есть баг и графика в итоге поплывет.

Разное

Для получения спрайта из слоя используйте функцию findPropById (опять-таки аналогия с Android)
Для обработки нажатия на спрайт, достаточно приаттачить специальный callback (см. пример в terevaka-samples).
Другие различные примеры использования смотрите в проекте terevaka-samples. Чтобы запустить пример, скопируйте tereavaka в папку примера, а еще лучше — сделайте в нее симлинк.
Чтобы протестировать приложение под разными экранами, вовсе не нужно много разных устройств — используйте профили запуска. Готовые профили лежат в каталоге ./terevaka/profiles.
Для запуска с профилем, используйте команду moai ./terevaka/profiles/ipad.lua main.lua, где ipad.lua — профиль айпада. В профиле как правило 3-4 строки, вы можете с легкостью создать свои профили.
Спрайты для ui builder нужно сохранять в разрешении mdpi.

Резюме

Изначально проект начинался, как выделение некого общего кода из кода моей новой игры. В попытке структурировать, как сам код, так и требования к нему, привели к появлению фреймворка, а затем, используя мои старые наработки, и графического дизайнера к нему. Помимо этого, пришлось дорабатывать и сам MOAI, однако благодаря быстрому отклику его разработчиков, все изменения уже внесены в основной репозиторий.
Также — это показательный опыт, что не нужно боятся писать свои библиотеки, если четко понимаете требования к ним, а также если пишете на скриптовом языке :)

Итак, я прочитала эта статья о мобильном Orchard и, поскольку я планирую сделать первые шаги в разработке Android, это заставило меня задуматься: возможно ли разработать для Android только в Lua? Я погуглил тему, но не нашел окончательного ответа. Я знаю, что Java - это "базовый стиль" для Android, но для новичка в кодировании, которым я являюсь (элементарный Python, базовый C++), Lua кажется каким-то более ясным и дружелюбным. Тогда вот мой вопрос: Можно ли разработать приложение для Android используя только Луа? Если да, не могли бы вы показать мне, как отсюда двигаться?

вопрос, какое приложение вы хотите построить и какие навыки у вас есть. Если вы уже знакомы с JavaScript, есть Phonegap / Cordova. Если вы строите игры, есть несколько фреймворков для 2D и 3D, которые используют Lua. Некоторые из них бесплатны, другие имеют лицензионные сборы, но стоят того, если это обеспечивает решение вашей проблемы. У всех есть свои плюсы и минусы. Например, я не уверен, что хотел бы создать RSS-ридер в игровой структуре. Java-это просто другой язык, я рекомендовал бы просто изучать Java и Android framework, чтобы начать и знать, что там, прежде чем добавлять другой уровень фреймворка приложения сверху.

Я разрабатываю мобильное приложение в Lua для удаленного управления роботами с телефонов iOS и Android. Приложение находится в чистом Lua и работает поверх платформа Mosync используя MobileLua. Там все еще требуется сантехника, но это не слишком сложно.

У меня тоже отладчик и Lua IDE (ZeroBraneStudio), которые поддерживают отладку сценариев Lua, работающих удаленно (включая сценарии MobileLua, работающие на Android или устройства с iOS). Я предоставляю демо приложения вы можете использовать в качестве клиента для запуска простых сценариев и проверки удаленной отладки в действии.

[Update] если вы заинтересованы в более ориентированных на игру вариантах, есть несколько доступных: (1) уже упоминалось Corona SDK, (2) Моаи и (3) Или Gideros Мобильного. Существует также Быстрая Мармелад и привязки Cocos2d-x Lua (например,quick-cocos2d-x). Все эти наборы инструментов / фреймворки позволяют развиваться в Lua.

вот подробное сравнение моаи и Corona.

и в ответ на исходный вопрос, изучение Java может позволить вам писать приложения для Android, но если вы также хотите настроить iOS, у вас нет отличных вариантов. Выбрав что-то кросс-платформенное с самого начала, вы можете нацелиться на Android или iOS или оба. Lua (в любом из уже упомянутых вкусов) - отличный базовый язык для изучения для мобильной разработки.

экспортер может помочь вам сделать отдельное приложение на перечисленных выше платформах.

Это может быть не полезно для OP, однако для других людей, заинтересованных в использовании lua для написания своих приложений, я бы поделился своими мыслями. Итак, чтобы ответить на вопрос:

Да, вы can используйте только lua для написания приложений для android, используя LuaJava из проекта kepler (хотя я больше не верю, что он поддерживается). Вы можете создавать и манипулировать объектами Java кажущимся образом и взаимодействовать с API Android через lua. Вы даже можете создавать элементы UI динамически, используя только Луа. Однако для запуска Lua VM из вашего приложения требуется небольшое количество кода начальной загрузки java. The AndroLua проект является отличным местом для начала для Android. Создатель проделал большую работу, заставляя lua работать с Android и упаковывая все это в приложение. По опыту могу сказать, что работает отлично! Однако я бы ни в коем случае не рекомендовал это новичку, так как это требует много знаний о java и lua, чтобы заставить вещи работать, то есть больше работы не меньше.

для AndroLua просто клонируйте РЕПО и используйте его в качестве базы для своего собственного приложения. В прошлый раз, когда я использовал его, я просто импортировал его в android-studio, и после исправления нескольких проблем с моей собственной настройкой, он компилировался и работал на моем устройстве.

Если только чистый Lua, то ответ нет.. если вы не хотите использовать много библиотек

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

Файл с расширением .LUA содержит исходный код расширения программы или приложения , обычно игры, написанный на языке сценариев Lua. Исходный код представляет собой набор команд, инструкций и определений переменных, написанных с использованием определенного синтаксиса. LUA - это текстовый файл, который можно открывать и редактировать любым текстовым редактором; однако рекомендуется открывать такие файлы в инструментах редактирования, которые поддерживают подсветку синтаксиса. Файл LUA может содержать ряд коротких команд , а также полный программный код расширения или приложения. Язык Lua использует синтаксис, аналогичный синтаксису языка программирования Pascal, и использует ассоциативные массивы и расширяемую семантику. Язык Lua описывается его разработчиками как:

  • Надежный и проверенный - язык используется многими известными разработчиками программного обеспечения, например, он использует инструмент Photoshop Lightroom или веб-сайт Википедии, используется в системах видеонаблюдения, для программирования компьютерных игр (WoW или Angry Birds),
  • Быстрый - считается самым быстрым интерпретируемым языком сценариев,
  • Кроссплатформенный - код Lua распространяется в виде независимых от платформы пакетов C, которые могут работать на Linux, Windows Android, iOS, встроенных системах или компьютерах мэйнфреймов,
  • Встраиваемый - хорошо документированный, легко интегрируемый с кодом, написанным на других языках, классических или скриптовых,
  • Простой и мощный - предлагает поддержку мета-функций, которые могут быть расширены при необходимости,
  • Легкий и бесплатный - добавление кода Lua в приложение без ущерба для его производительности и языка с открытым исходным кодом.

Lua была создана в 1993 году компьютерными инженерами Роберто Иерусалимши, Вальдемара Селес и Луизой Энрике де Фигейредо в Папском университете Рио-де-Жанейро. Он поддерживается исследовательской лабораторией LabLua , которая является частью факультета компьютерных наук в указанном университете . Lua означает «луна» на португальском языке. С момента его создания было разработано несколько версий языка - последняя стабильная версия, Lua 5, была выпущена в 2018 году.

Программы, которые поддерживают LUA расширение файла

Ниже вы найдете указатель программ, которые можно использовать для открытия файлов LUA, разделенных на категории 3 в соответствии с поддерживаемой системной платформой. Файлы с расширением LUA, как и любые другие форматы файлов, можно найти в любой операционной системе. Указанные файлы могут быть переданы на другие устройства, будь то мобильные или стационарные, но не все системы могут быть способны правильно обрабатывать такие файлы.

Notepad Plus Plus 7.5.8

Многие пользователи MS Windows давно успели заметить, что стандартный блокнот - это довольно неудобная в своем использовании программа. Заменой ей может стать данный бесплатный редактор текстовых файлов, обеспечивающий поддержку синтаксиса большого количества языков программирования. Программа содержит в себе довольно широкий набор опций и отличается минимальным потреблением ресурсов процессора. Программа делает возможным одновременный просмотр нескольких документов сразу и редактирование их, без закрытия лишних окон. Доступной стала и такая опция, как редактирование одного и того же документа в разных местах, что очень удобно.

Notepad2 4.2.25

Notepad2 4.2.25

Notepad2 – простое приложение, позволяющее печатать и редактировать текст. Она поможет в создании HTML-страниц, программировании на различных языках (CSS, Java, JavaScript, Python, SQL, Perl, PHP) так как способна подсвечивать код. Программа построена по принципу простого блокнота, она маловесна и компактна. Этот текстовый редактор проверяет все скобки на наличие пары, поддерживает авто отступы. Программа Notepad2 не только поддерживает кодировки ASCII и UTF-8, но и умеет их конвертировать. Позволяет откатывать нежелательные операции на много уровней назад. Поддерживает блочное выделение элементов текста и имеет нумерованные ст.

Komodo Edit 9.0.1

Komodo Edit 9.0.1

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

SynWrite 6.23

SynWrite 6.23

В интернете очень много программ, позволяющих редактировать исходный код другой программы, файла и др. Однако большинство из подобных программ являются всего лишь текстовым редактором наподобие блокнота. Отличаются они от вышеуказанного редактора лишь тем, что имеют подсветку синтаксиса. Однако в некоторых случаях, такого функционала программы оказывается недостаточно. Программисту бывает необходимо быстро находить различные части документа. И вот, наконец-то, в появилась программа, позволяющая решить эту проблему. Программа называется SynWrite. Её отличительная особенность – наличие навигационной панели с деревом, котор.

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