#javascript#cheerp#cheerpx#cpp#lwip#repl#tailscale#vm#wasm#webassembly#webvm#xterm_js
WebVM lets you run a full Linux system directly in your web browser without needing a server. It uses a special engine called CheerpX to safely run unmodified Linux programs by converting x86 code to WebAssembly. You get a real Debian Linux environment with many tools, and it supports networking through Tailscale VPN, so your browser VM can connect securely to the internet. You can also customize and deploy your own WebVM easily using GitHub, making it great for development, testing, or learning Linux without installing anything. This means you can have a powerful, private Linux machine anytime, anywhere, just in your browser[1][2][3].
https://github.com/leaningtech/webvm
🚀Обновление для WebView с упором на производительность и контроль
Вышла версия 1.15.0 библиотеки AndroidX WebKit (WebView). Главное изменение — повышение minSdk с API 21 до API 23 😁
🎯 Ключевые новые возможности:
⚡️ Ускорение загрузки
👉prerenderUrlAsync() — предварительная загрузка (prerender) страниц для мгновенного открытия.
👉Profile.preconnect()— предварительное установление соединения с origin.
👉Profile.addQuicHints() — подсказка WebView использовать протокол QUIC/HTTP3 для ускорения.
🔧 Больше контроля
👉setHyperlinkContextMenuItems() — кастомизация контекстного меню для ссылок.
👉 setBackForwardCacheSettings() — настройка Back/Forward кэша (таймауты, лимиты).
👉Profile.addCustomHeader() — установка кастомных HTTP-заголовков для запросов.
🔒 Безопасность и отладка
👉 Новый WebViewBuilder API для создания WebView с неизменяемой конфигурацией, что повышает безопасность при использовании addJavascriptInterface.
👉 Улучшенные API для отладки асинхронной инициализации WebView.
👉 Также возвращена отправка заголовка X-Requested-With, а старый API для его исключения помечен как deprecated.
#WebView#AndroidDev#Jetpack
🚀Вышел AndroidX WebKit 1.16.0. Забирай в работу интеграции
👉 minSdk поднят до 24 (Android 7.0) — учитывайте при апгрейде.
👉 Async-старт WebView вышел из experimental. startUpWebView вместе с ProcessGlobalConfig позволяют прогреть WebView в фоне до того как он понадобится UI. Эту штуку давно ждали в стабильной версии — для меня самое ценное обновление этого релиза.
👉 Navigation API тоже стабильный. Больше не надо @OptIn — addNavigationListener даёт колбэки на разных стадиях навигации, ошибку загрузки через Navigation.webResourceError, URL текущей страницы через Page. Главное — теперь FCP и LCP метрики прилетают напрямую из WebView без инъекции JS:
// Перед использованием проверь
// WebViewFeature.isFeatureSupported(WebViewFeature.NAVIGATION_LISTENER)
WebViewCompat.addNavigationListener(webView, object : NavigationListener {
override fun onFirstContentfulPaintMillis(page: Page, millisFromNavStart: Long) {
analytics.report("FCP", millisFromNavStart, page.url)
}
override fun onLargestContentfulPaintMillis(page: Page, millisFromNavStart: Long) {
analytics.report("LCP", millisFromNavStart, page.url)
}
override fun onNavigationCompleted(navigation: Navigation) {
navigation.webResourceError?.let { err ->
Log.w("WV", "load failed: ${err.errorCode}")
}
}
})
На один WebView можно вешать несколько листенеров и прокидывать свой Executor если нужны колбэки в фоновом потоке.
👉WebViewCompat.saveState теперь умеет ограничивать размер state. Если ловили TransactionTooLarge при сохранении состояния — это для вас.
👉 Подвезли addJavaScriptOnEvent для инъекции JS на загрузку документа и инъекцию скриптов в isolated worlds без конфликтов со страницей. Гибридным приложениям пригодится.
👉 [EXPERIMENTAL] BackForwardCacheSettings полностью переписали. Если использовали старый Builder через WebSettingsCompat.setBackForwardCacheSettings — ловите ошибку компиляции при апгрейде. Теперь так:
val settings = WebSettingsCompat.getBackForwardCacheSettings(webView.settings)
settings.setMaxPagesInCache(5)
👉Profile.setSpeculativeLoadingConfig депрекейтнут, замена через Profile.setMaxPrerenders плюс PrefetchCache.setMaxPrefetches и setPrefetchTtlSeconds (тоже experimental).
#Android#Webview#Web#AndroidDev
🤖Как использовать WebView с Edge-to-edge (EN,6м)
Разбор как встроить WebView в интерфейс приложения с поддержкой отображения на весь экран (Edge-to-edge). Рассматриваются варианты когда вы отображаете сторонние сайты и свой web контент, когда вы можете на уровне CSS добавить отступы
🔗Ссылка без VPN
#android#edgetoedge#android16#webview#compose