- Android-приложения на JPHP
- О языке JPHP
- Как всё началось
- Как это работает
- Небольшой пример
- Заключение
- Build Your First PHP for Android Application
- Android — PHP / MYSQL
- PHP — MYSQL
- Создание базы данных
- Создание таблиц
- Вставка значений в таблицы
- PHP — методы GET и POST
- Android — Подключение MYSQL
- Подключение через метод Get
- Подключение через почтовый метод
- пример
- PHP — часть MYSQL
- Android часть
Android-приложения на JPHP
Люди которые пишут код на PHP сделают всё чтобы не переходить на другие языки. Да, я в курсе что раньше на Хабре уже был способ писать Android-приложения на PHP, но было принято решение адаптировать его под более быстрый и совместимый с Java JPHP.
О языке JPHP
Я предполагаю, что у вас может возникнуть вопрос. А что за JPHP? Ответ есть тут-же, на Хабре:
Ну, а мы продолжим. За те 4 года которые прошли с момента написания этих постов о JPHP этот язык поменялся в лучшую сторону. К примеру появился собственный пакетный менеджер jppm про который нам тоже сегодня придётся поговорить.
Как всё началось
Всё началось с того, что моему другу пришла идея создавать приложения для Android на JPHP. Я дал почитать ему тот пост, про который мы говорили в начале, но ему этот способ не понравился так как там используется обычный PHP. Ну, а мы разработчики, которые пишут на никому не известном языке JPHP решили сделать всё сами.
Полистав интернет, мы тогда не нашли другого выхода, кроме как использовать JavaFXPorts. Да и сам создатель этого языка хотел использовать именно его в качестве GUI движка для JPHP за 2 года, так ничего и не сделав.
Как говорится — «Кто кроме тебя». Я бросился глобально изучать работу языка JPHP.
Первые несколько недель были неудачными. Я уже написал автоматическую генерацию build скрипта для gradle и всё бы хорошо, apk собирался, но при запуске выдавалась неизвестная мне на то время ошибка. Я сразу понял что она из-за JPHP но не видел я прежде такую. Сейчас я могу сказать точно что эта ошибка была из за сгенерированного байт-кода. DalvikVM банально не мог запустить байт-код сгенерированный для JVM. Именно это стало огромным препятствием. Так как PHP файлы в JPHP приложениях не компилируются вовсе. Был вариант с файлами phb, но это не решало нашу задачу вовсе. Единственным способом стало написание собственного компилятора, что действительно сработало, но принесло ряд ограничений связанных с include и eval, спасибо, Dalvik.
После многих проб и ошибок я всё же сумел сделать самую первую версию. Её исходники находятся тут. Эта версия была не очень быстрая. Да и использовать JavaFX на Android это мазахизм.
По этому я принял решение переписать всё с чистого листа. Принял я это решение относительно недавно. По этому библиотека для JPHP немного сыровата. Но работает.
Как это работает
Всё начинается с того что jppm собирает все ваши исходники и зависимости в один jar файл. После чего компилируя в них все файлы php в class файлы. После чего полученный jar файл добавляется в зависимости к gradle. А он уже в свою очередь компилирует эти class файлы в dex. В этом весь секрет.
С запуском приложения всё сложней. В AndroidManifest.xml изначально всего один BootstrapActivity который загружает весь JPHP. После загрузки этот BootstrapActivity можно будет изменять из JPHP. Для Activity я создал одноимённые классы.
С помощью этого кода можно получить тот самый BootstrapActivity из которого был загружен JPHP.
Я думаю вам уже стало понятно о работе загрузчика JPHP.
Небольшой пример
К примеру для того чтобы создать самый примитивный кликер нужно использовать вот этот код :
В итоге мы получили простое приложение с кнопкой:
Заключение
Я не думаю что мой проект кому либо будет интересен. Так как он не описывает пока что и 10% Android API. Да и написание приложений для Android на PHP не канон. Но думаю проект найдёт свою аудиторию.
Источник
Build Your First PHP for Android Application
Операционная система Android повергла рынок сматрфонов в шок :). В отличии от компании Apple, которая предъявляет достаточно строгие требования к разработчикам, которые хотят выставлять свои приложения в iPhone App Store, Google создал платформу Android открытой (в оригинале wide open). В настоящее время вы можете писать приложения PHP. Парни из Irontech создали необходимое, и используя Scripting Layer для Android (SL4A), вы можете создавать на PHP приложения для Android.
Нет!
В этой статье я расскажу как установить, настроить и использовать PHP для Android и SL4A, также мы увидим демо приложения и вы получите первый опыт разработки приложений для Android на PHP.
Установка PHP для Android
Для установки PHP для Android, у вас должен быть телефон или эмулятор поддерживающий Android версии 1.5 или больше, также в настройках установки приложений, должна стоять галочка на установке приложений из неизвестных источников. После всего этого, просто установите два пакета SL4A environment и PHP for Android APK.
Установка SL4A достаточно проста, однако после установки пакета PHP for Android application, необходимо запустить его и нажать «install» для полной установки(В процессе установки программа скачивает где-то около 2 МБ). Если у вас появились проблемы с установкой, то есть видео-демонстрация на Vimeo((или здесь)).
Настройка среды разработки PHP для Android
Если вы установили PHP для Android, теоретически, вы можете писать приложения на своем телефоне. Но с практической точки зрения, это не будет хорошей идеей. То что вы должны сделать это скачать Android SDK, установить эмулятор и начать писать код, используя ваш любимый редактор.
После скачивания SDK, разархивируйте содержимое, запустите приложение Android, находящееся в каталоге tools, и установите эмулятор. В меню Android SDK and AVD Manager, выберите Virtual Devices и нажмите на кнопку New. Назовите ваш эмулятор (например «Droid2») и выберите Android 2.2. Введите 10 МБ в качестве размера SD Card и нажмите Create AVD.
Теперь у вас есть настроенный эмулятор, нажмите кнопочку Start. Здесь возникает некоторая сложность, вы не можете просто скопировать файлы на виртуальное устройство, которое только что создали. Вам необходимо настроить форвардинг портов (port forwarding) и поместить ваш PHP-скрипт на виртуальное устройство, используя программу под названием adb, которая является частью Android SDK. Она также находится в каталоге tools.
Далее вы запустите сервер на вашем виртуальном устройстве, соединитесь с сервером для передачи вашего скрипта. Следующие шаги помогут вам запустить все на столько быстро на сколько это возможно. (Вы можете прочитать полную документацию по этому процессу здесь).
На вашем запущенном виртуальном устройстве перейдите на экран Applications и нажмите SL4A.
# на экране SL4A, нажмите кнопочку Menu, выберите View и выберите Interpreters.
# Нажмите Menu снова, выберите Start Server и выберите Private.
# Опустите область уведомлений (Android notification bar) вниз и вы увидите Службу SL4A. (Нажмите на службу и запишите номер порта, который прослушивает ваш сервер, например 47000.)
# Откройте командную строку и установите форвардинг портов, используя команду adb. Например, введите команду «adb forward tcp:9999 tcp:47000» (замените 47000 на номер вашего порта).
# Установите переменную окружения AP_PORT. На UNIX или Mac, запустите «export AP_PORT=9999». На Windows «set AP_PORT=9999».
# Для теста работы эмулятора запустите «run adb push my_script.php /sdcard/sl4a/scripts» (замените my_script.php на название вашего скрипта).
Вы также можете работать с реальным телефоном. Следуйте теми же шагами, что и с эмулятором. Чтобы облегчить процесс установите переменную окружения ANDROID_HOME, которая будет указывать на расположение вашего Android SDK и добавьте путь к каталогу tools в список путей (что-то я не особо понял как это сделать на телефоне, если читатели знают, то пусть напишут в комментариях)
Создание Android приложений на PHP
Написание приложений на PHP очень легкий процесс после того как вы настроили все что описано выше. Единственно что стоит отметить, что версия PHP для Android очень урезана. В вашем распоряжении будут основные функции PHP и поддержка JSON. А если же вы являетесь разработчиком Android, который хорошо знаком с Java фреймворком для Android, вы заметите что Scripting Layer для Android не обеспечивает доступ ко всем компонентам, которые бы вы получили, используя для разработки Java (будем надеятся что это только пока).
То что обеспечивает SL4A — это только фасад к подмножеству Android API. (Полный список методов, обеспечиваемых SL4A, доступен тут ) В чем же прикол PHP для Android — вы можете легко разрабатывать приложени е и видеть его работу, написав всего лишь несколько строк кода. Давайте рассмотрим приложение, которое работает с котировками, которое занимает меньше 60 строк кода.
- ‘QUOTE_SERVER’ , ‘http://quoter.take88.com/?ticker=%s’ );
- require_once( «Android.php» );
- $droid = new Android();
- $action = ‘get_tickers’ ;
- $tickers = » ;
- while (TRUE) <
- switch ($action) <
- case ‘quote’ :
- $droid->dialogCreateSpinnerProgress( «Querying stock information server . » , «Please wait» );
- $droid->dialogShow();
- $quotes = @array_slice(json_decode(file_get_contents(sprintf(QUOTE_SERVER, $tickers))), 0, 3);
- $droid->vibrate();
- $droid->dialogDismiss();
- // Possible data points.
- // «SYMBOL»,»NAME»,»LAST_TRADE»,»MORE_INFO»,»LAST_TRADE_DATE»,»LAST_TRADE_TIME»,»OPEN»,»DAYS_HIGH»,»DAYS_LOW»,»DIVIDEND_SHARE»,»PE_RATIO»,»52_WEEK_LOW»,»52_WEEK_HIGH»,»VOLUME»
- $output = » ;
- for ($i = 0, $cnt = count($quotes); $i «Company: » . $quotes[$i]->NAME . «\n» ;
- $output .= «Ticker: » . $quotes[$i]->SYMBOL . «\n» ;
- $output .= «Last trade: $» . $quotes[$i]->LAST_TRADE . «\n» ;
- $output .= «\n» ;
- >
- $output = html_entity_decode($output, ENT_QUOTES, «UTF-8» );
- // Something is wrong with ‘
- $output = str_replace( «‘» , «‘» , $output);
- $droid->dialogCreateAlert( «Your stock quotes» , $output);
- $droid->dialogSetPositiveButtonText( «Get new quote» );
- $droid->dialogSetNegativeButtonText( «Exit» );
- $droid->dialogShow();
- $response = $droid->dialogGetResponse();
- if ($response[ ‘result’ ]->which == ‘negative’ ) <
- $action = «exit» ;
- > else <
- $action = ‘get_tickers’ ;
- >
- break ;
- case ‘get_tickers’ :
- $response = $droid->getInput( «Stock Tickers (max. 3)» , «Enter Tickers.\nSeparate with spaces.» );
- $tickers = str_replace( ‘ ‘ , ‘+’ , $response[ ‘result’ ]);
- $droid->vibrate();
- $action = ‘quote’ ;
- break ;
- case ‘exit’ :
- $droid->exit();
- exit();
- break ;
- >
- >
- ?>
* This source code was highlighted with Source Code Highlighter .
Скопируйте и поместите этот код в редактор, сохраните под именем quoter4android.php и загрузите его в эмуляторе. Если эмулятор не запущен, запустите его, настройте форвардинг портови загрузите quoter4android.php, используя adb.
Для запуска приложения в вашем эмуляторе, перейдите на экран приложения, нажмите иконку SL4A и нажмите quoter4android.php.
Для установки quoter4android.php на ваш телефон, вы можете настроить форвардинг портов, но легче соединить телефон с компьютером через USB и скопировать скрипт в каталог sl4a/scripts. Однако для запуска скрипта, необходимо отсоединить его от компьютера, иначе вы не увидите установленные скрипты, а зщатем кликните иконку SL4A.
Заключение
С SL4A и PHP for Android можно сделать много интересных вещей; эта статья всего лишь маленькая демонстрация возможностей. Все эти приложения очень молоды — новая версия SL4A вышла когда я писал эту статью — и в будущем мы будем получать все новые и новые возможности.
Источник
Android — PHP / MYSQL
В этой главе мы собираемся объяснить, как вы можете интегрировать PHP и MYSQL с вашим Android-приложением. Это очень полезно, если у вас есть веб-сервер, и вы хотите получить доступ к его данным в приложении для Android.
MYSQL используется в качестве базы данных на веб-сервере, а PHP используется для извлечения данных из базы данных. Наше приложение свяжется со страницей PHP с необходимыми параметрами, а PHP свяжется с базой данных MYSQL, получит результат и вернет его нам.
PHP — MYSQL
Создание базы данных
База данных MYSQL может быть легко создана с помощью этого простого скрипта. Оператор CREATE DATABASE создает базу данных.
Создание таблиц
Как только база данных создана, пришло время создать несколько таблиц в базе данных. Оператор CREATE TABLE создает базу данных.
Вставка значений в таблицы
Когда база данных и таблицы созданы. Теперь пришло время вставить некоторые данные в таблицы. Оператор Insert Into создает базу данных.
PHP — методы GET и POST
PHP также используется для извлечения записи из базы данных mysql после ее создания. Чтобы получить запись, на страницу PHP необходимо передать некоторую информацию о том, какую запись нужно извлечь.
Первый способ передачи информации — это метод GET, в котором используется команда $ _GET . Переменные передаются в URL, и запись извлекается. Его синтаксис приведен ниже —
Второй метод заключается в использовании метода POST. Единственное изменение в приведенном выше сценарии — заменить $ _GET на $ _POST . В методе Post переменные не передаются через URL.
Android — Подключение MYSQL
Подключение через метод Get
Существует два способа подключения к MYSQL через страницу PHP. Первый называется методом Get . Мы будем использовать классы HttpGet и HttpClient для подключения. Их синтаксис приведен ниже —
После этого вам нужно вызвать метод execute класса HttpClient и получить его в объекте HttpResponse. После этого вам нужно открыть потоки для получения данных.
Подключение через почтовый метод
В методе Post будет использоваться URLEncoder , класс URLConnection . Urlencoder закодирует информацию о передаваемых переменных. Это синтаксис приведен ниже —
Последнее, что вам нужно сделать, это записать эти данные по ссылке. После записи вам необходимо открыть поток, чтобы получить ответные данные.
пример
Приведенный ниже пример является полным примером подключения вашего приложения для Android к базе данных MYSQL через страницу PHP. Он создает базовое приложение, которое позволяет войти в систему, используя метод GET и POST.
PHP — часть MYSQL
В этом примере база данных с именем temp была создана на 000webhost.com. В этой базе данных была создана таблица с именем table1. Эта таблица имеет три поля. (Имя пользователя, Пароль, Роль). В таблице есть только одна запись («admin», «admin», «administrator»).
Ниже приведена страница php, которая принимает параметры методом post.
Android часть
Чтобы поэкспериментировать с этим примером, вам нужно запустить его на реальном устройстве, к которому подключен интернет Wi-Fi.
меры | Описание |
---|---|
1 | Вы будете использовать IDE Android Studio для создания приложения Android и назовите его PHPMYSQL в пакете com.example.phpmysql. |
2 | Измените файл src / MainActivity.java, чтобы добавить код активности. |
3 | Создайте файл src / SiginActivity.java, чтобы добавить код PHPMYSQL. |
4 | Измените XML-файл макета. Res / layout / activity_main.xml добавьте любой компонент GUI, если это необходимо. |
5 | Измените файл res / values / string.xml и добавьте необходимые строковые компоненты. |
6 | Измените AndroidManifest.xml, чтобы добавить необходимые разрешения. |
7 | Запустите приложение и выберите работающее устройство Android, установите на него приложение и проверьте результаты. |
Вот содержимое src / com.example.phpmysql / MainActivity.java .
Вот содержимое файла src / com.example.phpmysql / SigninActivity.java .
Добавьте следующий контент в build.gradle и пересоберите весь проект.
Вот содержание activity_main.xml .
Вот содержимое Strings.xml .
Вот содержимое AndroidManifest.xml .
Давайте попробуем запустить ваше приложение PHPMYSQL. Я предполагаю, что вы подключили свое фактическое мобильное устройство Android к компьютеру. Чтобы запустить приложение из студии Android, откройте один из файлов деятельности вашего проекта и нажмите «Выполнить». значок из панели инструментов. Перед запуском приложения Android Studio отобразит следующее окно, чтобы выбрать опцию, в которой вы хотите запустить приложение Android.
Выберите мобильное устройство в качестве опции, а затем проверьте свое мобильное устройство, которое отобразит следующий экран —
Теперь просто введите свое имя пользователя и пароль. В моем случае я набираю admin как имя пользователя и пароль. Это показано на рисунке —
Теперь нажмите кнопку Get и подождите несколько секунд, и ответ будет загружен и будет показан вам. В этом случае ответом является РОЛЬ, которая выбирается в случае администратора как имя пользователя и пароль. Это показано на рисунке ниже —
Теперь снова нажмите кнопку POST и появится тот же результат. Это показано на рисунке ниже —
Источник