Подтвердить что ты не робот

Как обеспечить, чтобы приложения Android phonegap/cordova использовали веб-просмотр Chrome?

Я пишу приложение для игры, которое искажает графику SVG, пока они не кричат ​​ "Дядя!". Программа работает нормально на iPad (safari/webkit) при размещении с веб-сервера, о котором больше не нужно говорить здесь. Он также работает нормально на планшете Android при размещении с веб-сервера, если используется последняя версия Chrome (например, v.25 или новее).

Программа не имеет доступа к Интернету вообще, но играет со своей графикой SVG, запускает Javascript и сохраняет статус в HTML5 localStorage().

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

Я только что создал APK для своего приложения и обнаружил, что он не использует браузер Chrome, когда я устанавливаю его на своем действительно новом Android-планшете. Скорее, он использует браузер, встроенный в APK, или, по крайней мере, вызванный из APK, для которого существуют остаточные библиотеки в планшете.

Моя цель с APK заключается в том, чтобы сделать мой запуск кода отображаемым последним браузером webkit, который, похоже, работает в среде Chrome.

По моему вопросу, мне нужно что-то изменить. Но что?

  • встроить браузер Chrome в мой APK?
  • сообщите APK, чтобы использовать браузер Chrome для браузера?
  • отказаться от использования APK для распространения программы?
  • ???

Могут ли мои дорогие читатели понять меня?

Спасибо,
Джером.

4b9b3361

Ответ 1

Я бы порекомендовал Crosswalk, однако с 19 марта 2017 года он был объявлен EOL (подробнее см. ниже). Тем не менее, это, безусловно, самое стабильное решение, наша команда в настоящее время использует его в производственном приложении. Проще говоря, он упаковывает веб-обзор на основе Chromium внутри вашего apk, и он поддерживается Intel. Вы можете использовать его, начиная с Android 4.X.

Официальный шаг продаж:

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

Для Cordova 4.0.0 и выше имеется официальный плагин Crosswalk, что позволяет легко запускать и запускать: https://github.com/crosswalk-project/cordova-plugin-crosswalk-webview

Если у вас запущен проект в Кордове, все, что вам нужно сделать, это

cordova plugin add cordova-plugin-crosswalk-webview --save

добавить плагин веб-просмотра Crosswalk. Следующая сборка будет извлекать все зависимости и упаковывать все красиво.

Android 4.4.x

В Android 4.4 ваше гибридное приложение будет работать на веб-браузере на базе Chromium, однако оно будет зависеть от той же версии навсегда (если я не ошибаюсь, это Chromium 33). По-моему, лучше было бы использовать Crosswalk.

Android 5.0 +

Если вы код для Android 5.0 и выше, Chromium WebView будет обновляться через Google Play. Подробнее здесь: http://developer.android.com/about/versions/lollipop.html#WebView

CrossWalk версии 20 и выше

CrossWalk откажется от поддержки Android 4.0.X, начиная с версии 20. Если вам действительно нужно сохранить 4.0.X в своей матрице поддержки, не обновляйте ее. Я бы рекомендовал построить еще один APK для Android 5.X и выше, который больше не включает CrossWalk. Дополнительная информация об этом

Crosswalk v23 - последняя версия (EOL)

Crosswalk решила выпустить одну последнюю стабильную версию в январе 2017 года, версия 23. Это завершает официальную поддержку Crosswalk и оставляет исправления и тому подобное для сообщества. Дополнительная информация в blogpost

Обратите внимание!

Я обнаружил, что запуск моего мобильного гибридного приложения имел лучшую графическую производительность на Crosswalk, чем когда я полагался на веб-просмотр системы (тестировался на Sony Xperia ZL, который находится на Android 5.x, поэтому веб-просмотр обновляется через магазин воспроизведения). Почему это так, я пока не знаю, может быть, Crosswalk определенным образом настраивает Webview? Это требует дальнейшего изучения.

Ответ 2

попробуйте https://github.com/thedracle/cordova-android-chromeview его новый проект и требует больше работы, но сочетает в себе проект chromeview с кордорой для встраивания хрома в приложение для андроида cordova.

Ответ 3

Это выглядит как перспективный вариант: Crosswalk + Cordova.

Преимущества:

  • Использовать API Кордовы
  • Использовать API Crosswalk
  • Кордова будет использовать Crosswalk в качестве своего веб-сайта
  • Crosswalk не использует веб-просмотр Android, основанный на Chromium

Github repo: https://github.com/crosswalk-project/crosswalk-cordova-android.

Ответ 5

Один из вариантов - запустить браузер Chrome со ссылкой на соответствующий сайт.

Это не отличный пользовательский интерфейс, но может помочь вам в этом.

Вы можете проверить и запустить браузер Chrome с помощью чего-то вроде:

    String url = "http://www.totallyawesomeurl.com";
    String packageName = "com.android.chrome";

    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    browserIntent.setPackage(packageName);
    browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    List<ResolveInfo> activitiesList = context.getPackageManager().queryIntentActivities(
            browserIntent, -1);
    if(activitiesList.size() > 0) {
        // Found the browser on the device, launch it
        context.startActivity(browserIntent);
    } else {
        // The browser isn't installed, so we should prompt the user to get
        Intent playStoreIntent = new Intent(Intent.ACTION_VIEW);
        playStoreIntent.setData(Uri.parse("market://details?id="+packageName));
        playStoreIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(playStoreIntent);
    }

Стоит отметить, что Chrome для Android доступен только для устройств ICS и выше, поэтому вам может потребоваться установить минимальныйTargetSDK на 14 и, возможно, переключиться на использование Opera для более старой версии Android, если сайт работает в Opera, имя пакета "com.opera.browser"

Ответ 6

Оказывается, мой Javascript был неправильным. Когда я избегаю определенной ошибки, все работает нормально в старых браузерах. Я нашел его, имея возможность загружать старую версию Safari для Windows.

Моя проблема была примерно такой:

var newValue = parseInt("030");

Это вернуло 24, потому что "030" является базой 8, правильно?

Я изменил вещи, чтобы заставить базу, и теперь все в порядке:

var newValue = parseInt("030", 10);