Я могу работать, запускает приложение андроида как автономное настольное приложение без эмулятора?

Действительно ли возможно разработать приложение андроида, нацеленное на мобильные устройства и также использовать тот же код для выполнения на окнах, Linux или osx как автономное настольное приложение Java, не используя эмулятор? Т.е. иметь стиль стандартного JAVA-приложения, работающего автономный?

5
задан tchrist 22 May 2015 в 11:57
поделиться

4 ответа

Android использует фреймворк пользовательского интерфейса, который не работает на рабочем столе. Таким образом, короткий ответ - нет.

Более длинный ответ:

Несмотря на вышесказанное, вы все равно сможете повторно использовать некоторый не пользовательский код между ними. Любой код, который не вызывает android.*, вероятно, портируется.

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

Наконец, есть также несколько сторонних фреймворков разработки приложений, которые работают на нескольких платформах. Тот, который сразу приходит на ум, это Appcelerator's Titanium, но есть и другие. Возможно, вам повезёт с ними.

.
3
ответ дан 14 December 2019 в 08:52
поделиться

Приложения для Android работают на Виртуальной машине Dalvik, которая представляет собой пользовательскую виртуальную машину (ВМ), не совместимую напрямую со стандартной ВМ Java.

Насколько мне известно, единственными реализациями ВМ Dalvik являются Android-устройства и Эмулятор.

Очевидно, что приложения для Android написаны на Java, так что ничто не мешает вам обмениваться некоторым кодом между приложением для Android и приложением для Java Desktop, но это, вероятно, должно быть частью "бизнес-логики". Будет сложно заставить их выглядеть так же, как классы Android не были портированы на Java VM и нет реализации AWT или Swing для Android.

Так что, возможно, вы сможете создать свой собственный ListModel класс, содержащий данные, а затем вывести их на экран, используя ListView на Android и JList на рабочем столе, так что у вас будут данные, но дисплеи будут выглядеть по-другому.

.
2
ответ дан 14 December 2019 в 08:52
поделиться

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

Это не должно быть очень большой проблемой, так как есть такое большое пересечение между Android SDK и JDK.

Кроме того, для таких вещей, как парсинг XML, в сети можно просто использовать классы, которые работают над обоими.

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

.
1
ответ дан 14 December 2019 в 08:52
поделиться

Проект Skorpios позволяет запускать OpenGL приложения как на рабочем столе, так и на Android, используя единую кодовую базу.

Есть несколько минимальных примеров. Здесь - общий код для них.

Чтобы запустить общий код на рабочем столе, передайте экземпляр Game на DesktopGLView. Я использую этот класс для выполнения тестов, в качестве аргумента командной строки передаю простое имя класса. Eg, "FontTest".

Чтобы запустить общий код на Android, передайте экземпляр Game на AndroidGLView, который является android.view.SurfaceView, который вы можете поместить в свой android.app.Activity. Часто вам нужна Действия, которая просто отображает вашу игру, и в этом случае вы можете просто передать экземпляр игры в GameActivity вместо AndroidGLView. Если вы просто хотите запустить тестовые приложения на телефоне Android, вы можете просто развернуть skorpios-android-тестовый проект на вашем телефоне.

Skorpios довольно ловкий и он работает хорошо. Скорость разработки значительно увеличивается за счет использования Java HotSwap на рабочем столе, так как время развертывания Android часто составляет 60+ секунд. Разрабатывайте на рабочем столе и после того, как вы сделаете некоторый реальный прогресс, запустите ваше приложение на Android, и оно просто работает. FWIW, у меня есть несколько смежных проектов, которые также поддерживают как рабочий стол, так и Android для сети клиент/сервер с TCP/UDP и еще один с HTTP/сервлетами/Google App Engine.

Тем не менее, Skorpios все еще находится на ранних стадиях своей жизни. Я автор и в последнее время отвлекаюсь на другие вещи. Пока что в нем есть много основных функций OpenGL. Поддержка новых функций очень проста (просто добавьте их в GL, DesktopGL и AndroidGL), и я добавляю их по мере необходимости.

Я намереваюсь, что проект будет действовать как абстрактный слой для OpenGL, но также и для не-OpenGL настольных/Андроидных функций, обычно используемых в играх. Вот несколько примеров, которые в настоящее время реализованы:

  • Preferences сохраняет HashMap на диск на рабочем столе и использует android.content.SharedPreferences on Android.

  • Database предоставляет простой доступ к SQLite на Android и в настоящее время является не-оп для рабочего стола.

  • Устройство предоставляет доступ к вибрации Android и в настоящее время не работает на рабочем столе.

  • ResourceLoader предоставляет доступ к файлам, предпочтениям и базам данных на каждой платформе.

1
ответ дан 14 December 2019 в 08:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: