Я столкнулся с этой проблемой, когда вручную переименовал папку домена моего приложения. Чтобы решить эту проблему, мне пришлось
package
структуру папок <manifest>
в AndroidManifest.xml
. android:name
из <activity>
в AndroidManifest.xml
. Меню «Файл» -> «Недействительные кэши / перезапуск ...»
Проблема исчезнет, как только Android-студия перезапустится и создаст новый индекс.
Вот документ с веб-сайта Python для встраивания Python 2.6 ...
Некоторые полезные ссылки :
Я знаком с Python. Python - очень богатый язык с огромным количеством доступных библиотек.
Lua разработан именно для этой цели, и с ним довольно легко работать.
Еще одна вещь, на которую стоит обратить внимание, - это QtScript , который основан на Javascript, хотя это потребует некоторой работы по "qt-ify" вашему приложению.
Большинство языков сценариев допускают встраивание в C и обычно позволяют предоставлять сценарию определенные объекты или даже функции из кода C, чтобы он мог манипулировать объектами и вызывать функции.
Как сказал Lua, предназначенный для этой цели встраивания, используя интерпретатор, вы можете открывать объекты для сценария и вызывать функции lua из C, искать , встраивать lua в C , и вы должны найти много информации, также не Не пропустите раздел руководства lua «Интерфейс прикладного программирования»
Хотя Python более подходит для автономного использования, его также можно встраивать, это может быть полезно в случае, если ваши сценарии используют огромное количество библиотек, поставляемых с Python.
Lua. Он занимает очень мало места, довольно быстр, и я обнаружил (субъективно), что у него самый приятный API для взаимодействия с C.
Если вы хотите прикоснуться к объектам Lua из C - это довольно просто, используя встроенный в API. Если вы хотите прикоснуться к данным C из Lua - это немного больше работы, обычно вам нужно создать методы оболочки, чтобы раскрыть то, что вы хотите разрешить Lua изменять.
Небольшая база кода и жесткий контроль над количеством Библиотеки по умолчанию, введенные в ваш встроенный интерпретатор, также означают, что вы можете делать разумные предположения по поводу безопасности.
Единственная странная часть - это нумерация массивов на основе 1, однако это не было таким уж большим делом по сравнению с тем, что я думал, учитывая существование итераторов.
Как интегрироваться с C: в архиве дистрибутива для Lua есть каталог "
Вы также можете ознакомиться с SWIG , упрощенной оболочкой и генератором интерфейсов. Как можно догадаться, он генерирует большую часть стандартного кода для взаимодействия вашего кода C / C ++ с механизмом написания сценариев (что может быть довольно громоздким для выполнения вручную).
Он поддерживает Python и Lua (ваши предпочтения) и многие другие языков. Сгенерировать модуль, расширяющий язык сценариев, довольно просто. Расширение встраивания и , которое вы желаете, требует немного больше усилий.
Вы можете взглянуть на Game Scripting Mastery . Поскольку я интересуюсь аспектом компьютерных игр высокого уровня, мне очень часто рекомендуют эту книгу.
К сожалению, книга, похоже, больше не издается (по крайней мере, в Европе).
Lua полностью оптимизирован для такого встраивания. Хорошей отправной точкой является книга Роберто Иерусалимши Программирование на Lua ; предыдущее издание можно бесплатно получить в Интернете .
Как ваш сценарий узнает о свойствах вашего объекта C?
Представьте на мгновение, что ваш объект определен следующим образом:
typedef struct my_object *Object;
Object some_object;
Что означает ваш код C знает о свойствах этого объекта? Почти ничего, вот что. Все, что вы можете сделать, это
передавать указатели на объект, помещать их в структуры данных и т. Д.
Вызывать функции, которые действительно знают, что находится внутри struct my_object
.
Lua получает доступ к Объекты C точно так же: косвенно через функции:
Вы делаете вызовы API, чтобы поместить указатель на объект в стеке Lua, из которых он может перейти в структуры данных Lua, переменные или где-нибудь еще во вселенной Lua.
Вы определяете функции, которые знают о внутреннем устройстве объекта, и экспортируете эти функции в Lua.
Здесь много всего. во «вспомогательной библиотеке» вам в помощь. Не упускайте из виду!
Все это с кристальной ясностью объясняется в третьей части книги Роберто, которая включает примеры. Один из замечательных моментов:
Последнее замечание: хотя можно использовать SWIG, toLua или другие инструменты, чтобы попытаться сгенерировать код для соединения C и Lua, я призываю вас написать код самостоятельно, вручную. На самом деле это довольно легко понять, и это единственный способ понять, что происходит на самом деле.