Как обеспечить, чтобы приложения 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 для распространения программы?
- ???
Могут ли мои дорогие читатели понять меня?
Спасибо,
Джером.
Ответы
Ответ 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.
Ответ 4
Обновленный ответ за 2014 год: Android 4.4 и более поздние версии браузера Chrome по умолчанию. Это в настоящее время основано на Chrome версии 30.
Ответ 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);