1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wildish-HybridFramework

Клонировать/Скачать
README.md 10 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 07:48 934d246

Разработка гибридного приложения: HTML-контейнер для гибридных приложений, основанный на частном протоколе

Разработка гибридных приложений на основе HTML-контейнера для гибридных приложений с использованием частного протокола. Совместимо с существующей средой разработки NodeWeb (http://git.oschina.net/wildish/NodeWeb).

Предварительные замечания

Автор не претендует на создание фреймворка, который мог бы конкурировать с Cordova. Если бы разработка начиналась с нуля, автор предпочёл бы использовать Cordova сразу. Автор надеется создать небольшую рабочую версию фреймворка для собственного использования, которая позволит быстро разрабатывать и тестировать проекты.

Основные принципы

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

Использование

Версия V0.2:

Просто импортируйте проект в AS, чтобы начать работу.

Версия V0.1:

Конфигурирование Gradle: Если вы работаете совместно с NodeWeb, необходимо выполнить следующие шаги:

  1. Откройте файл app/build.gradle и найдите три задачи copyWeb, zipWeb и cleanWeb, а также параметр nodePath.
  2. Настройте nodePath на корневой каталог локального проекта NodeWeb/web.
  3. Раскомментируйте задачи copyWeb, zipWeb и cleanWeb. Это действие копирует содержимое каталога NodeWeb/web в каталог assets и сжимает его в файл web.data, удаляя каталог assets/web. Если вы предпочитаете писать HTML-файлы непосредственно в Android Studio и запускать их для отладки, оставьте конфигурацию Gradle без изменений. Теперь вы можете запускать приложение и использовать эмулятор или реальное устройство для просмотра результатов.

Задачи

  • Управление версиями и обновление автономных ресурсов (2016-11-18).
  • Использование управляемой системы автономных ресурсов для оптимизации доступа к веб-страницам (2016-11-18).
  • Взаимодействие между веб-страницами и внутренними страницами, а также управление междоменными запросами (2016-11-18).
  • Поддержка интеграционного тестирования (2016-11-18).
  • Модификация фреймворка (2016-11-18):
    • Использовать em вместо px для стилей, учитывая различия между Android и iOS (2016-11-18).
    • На основе существующих функций initDom, initData и initEvent добавить поддержку состояний паузы и возобновления, а также реализовать соответствующие методы в плагинах (2016-11-29).
    • Реализовать интернационализацию контента с помощью jquery.i18n.properties (2016-11-30).

История изменений

2017-02-06: После отпуска и праздников в этом году планируется переписать NodeWeb с использованием Vue и постепенно реализовать задачи из списка TODO. Также есть некоторые идеи, которые будут оформлены позже.

2016-11-18: Сегодня увидел обсуждение гибридных подходов на форуме (https://github.com/chemdemo/chemdemo.github.io/issues/12), где были сделаны хорошие выводы о гибридных подходах и ресурсах офлайн-кэширования. Основной сценарий использования — доступ к онлайн-ресурсам через веб-просмотр, что позволяет использовать локальные ресурсы и экономить трафик. В контексте текущего фреймворка этот подход не является основным, поэтому работа над ним была отложена. Также упоминается открытый фреймворк Kerkee (http://www.kerkee.com/), который стоит изучить. Однако Kerkee использует лицензию GPLv3, что может быть не очень удобно для коммерческого использования. Кроме того, обсуждаются вопросы автоматизации тестирования гибридных приложений. Хотя автор не знает, как интегрировать тестирование в гибридные приложения, он видит потенциал в использовании Kerkee для изучения этой темы. В настоящее время тестирование проводится в рамках NodeWeb на основе NodeJS, предоставляя HttpServer для имитации запросов данных и обеспечивая возможность тестирования на ПК.

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

2016-11-17: Обновление до версии V0.2. Эта версия представляет собой стабильную версию с модульной структурой и примерами кода. Основное изменение по сравнению с версией V0.1 заключается в замене встроенного HttpHandler на прокси для взаимодействия между передним JavaScript и локальным кодом. Фреймворк предоставляет интерфейс для настройки прокси, облегчая расширение функциональности. Остались две проблемы: динамическое обновление содержимого без обновления приложения и динамическое обновление активов. Динамическое обновление прокси: автор не нашёл хорошего решения, но рассматривает возможность обновления программы как наиболее эффективный способ. Динамическое обновление файлов в активах: это должно быть реализовано путём сохранения файла пакета и версии в активах, распаковки пакета в файловую систему при запуске приложения и сохранения корневого каталога веб-файлов. Затем можно загрузить файлы из файловой системы при загрузке страницы. Для этого потребуется предоставить методы для получения/обновления текущей версии веб-файла, обновления файловой системы и реализации интерфейса для обновления состояния и проверки обновлений. Cordova решает эту проблему с помощью плагина cordova-app-loader (https://github.com/markmarijnissen/cordova-app-loader), который использует более подробный manifest.json для управления версиями файлов.

2016-11-09: Обновление до версии V0.1. Первая версия фреймворка после начального рефакторинга, обеспечивающая основные функции гибридных приложений.

2016-11-04: Синхронизация кода с NodeWeb. Добавление журнала с буферизацией и оптимизация вывода. Для отслеживания исключений в официальных приложениях рекомендуется использовать Bugly от Tencent.

2016-11-09: Инициализация загрузки. Пока нет документации, она будет добавлена позже. Автор планирует провести рефакторинг и разделить модули, а также улучшить динамическую загрузку.

Примечание: в тексте запроса могут быть неточности или ошибки перевода.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/wildish-HybridFramework.git
git@api.gitlife.ru:oschina-mirror/wildish-HybridFramework.git
oschina-mirror
wildish-HybridFramework
wildish-HybridFramework
master