Розробка розширення для Chrome (Android)
Chrome для Android підтримує розширення починаючи з Chrome 128 (серпень 2024)—тільки на планшетах та ChromeOS. На смартфонах підтримки поки немає. Це перше, що потрібно зрозуміти перед тим, як браться за завдання: цільова аудиторія та пристрої обмежені.
Що реально доступно та що ні
Розширення для Chrome Android—це той же WebExtension (Manifest V3), що й для desktop Chrome. Більшість API працює, але з обмеженнями платформи.
Працює: content_scripts, browser_action (toolbar popup), storage.local, tabs (активна вкладка), runtime.sendMessage, declarativeNetRequest для блокування контенту.
Не працює або працює інакше: background.js—тільки Service Worker. Постійний фоновий скрипт, як у MV2, недоступний. windows API—одне вікно. contextMenus—контекстне меню на touch відрізняється від desktop.
Manifest V3—обов'язково
{
"manifest_version": 3,
"name": "My Extension",
"version": "1.0",
"permissions": ["storage", "activeTab"],
"background": {
"service_worker": "background.js"
},
"action": {
"default_popup": "popup.html",
"default_icon": "icon.png"
},
"content_scripts": [{
"matches": ["https://*/*"],
"js": ["content.js"]
}]
}
MV2 розширення вже відключені в desktop Chrome та не підтримуються в Chrome Android взагалі.
Service Worker замість background page
Головне архітектурне відхилення від desktop MV2: Service Worker не живе постійно. Chrome може його вивантажити в будь-який момент. Стан не можна зберігати в змінних—тільки в chrome.storage.
Типичний баг: розробник зберігає об'єкт з даними в глобальній змінній Service Worker. При першому відкритті розширення все працює. При другому (Service Worker перезапустився)—дані втрачені, undefined.
// Неправильно
let userData = {};
// Правильно
chrome.storage.local.get(['userData'], (result) => {
const userData = result.userData || {};
// працюємо з userData
});
Touch-специфіка у popup та content scripts
Popup розширення відкривається при натисканні на іконку в toolbar. На Android планшеті іконка в адресній стрічці справа. Popup—це звичайний HTML, але з обмеженою шириною: близько 300–400px. На touch потрібно збільшити розміри інтерактивних елементів до мінімум 44px за висотою.
Content scripts на touch-сторінках: события mouseover, mouseenter не срабатывают. Якщо desktop-версія розширення використовує hover для показу tooltip або preview—на Android це потрібно переробити під touchstart/click.
Розповсюдження
Розширення для Chrome Android публікуються в Chrome Web Store—жодного окремого магазину. Вимоги ті ж, що й для desktop. Але Google окремо тестує поведінку на Android-пристроях, якщо в описі заявлена підтримка Android.
На момент написання Chrome Android Extensions доступні в експериментальному режимі через chrome://flags/#extension-mime-request-handling для розробки. В production—через Chrome Web Store.
Тривалість розробки залежить від обсягу: просте розширення з popup та content script—3–5 днів, складна логіка з Service Worker, storage та nativeMessaging—2–3 тижні. Вартість розраховується індивідуально.







