Навигация по сайту

Популярные статьи

Вдихаємо нове життя в старий андроідофон - «Хакер»

  1. Вдихаємо нове життя в старий андроідофон Мобільні технології розвиваються так швидко, що ми вже не...
  2. Вдихаємо нове життя в старий андроідофон
  3. Вдихаємо нове життя в старий андроідофон
  4. Вдихаємо нове життя в старий андроідофон
  5. Вдихаємо нове життя в старий андроідофон
  6. Вдихаємо нове життя в старий андроідофон
  7. Вдихаємо нове життя в старий андроідофон
  8. Вдихаємо нове життя в старий андроідофон

Вдихаємо нове життя в старий андроідофон

Мобільні технології розвиваються так швидко, що ми вже не встигаємо міняти смартфони. Начебто тільки купив новий девайс, а на ринку вже з'явилися більш просунуті моделі з великою кількістю пам'яті, процесорних ядер і підтримкою NFC. І чорт би з ними, з ядрами, два, чотири, вісім, хоч шістнадцять. Нова версія ОС гальмує! Ось це справжня проблема.

Цю статтю я адресую всім тим, хто до сих пір користується смартфонами, що вийшли до появи версії Android 4.0, всім тим, кому «пощастило» купити девайс з 512 Мб оперативної пам'яті, а через місяць вийшов Ice Cream Sandwich, і довелося залишитися на 2.3 або миритися з гальмами. Загалом, для володарів доісторичних, але улюблених HTC Desire, Motorola Defy і Samsung Galaxy S.

Володарем одного з таких девайсів є і я сам. Близько трьох років тому за сьогоднішню ціну Nexus 4 я придбав смартфон Motorola Defy. Це така цегла з екраном на 3,7 дюйма, процесором 1 ГГц, 512 Мб оперативної пам'яті і захистом від бруду і води. З ним я проходив близько року і згодом замінив на Galaxy Nexus, однак віддати або продати побиту, кілька разів жінку, яка тонула і минулий зі мною через все, що тільки можна, моторолу не наважився. Смартфон дійсно був хороший, зручний, легко поміщався в кишені і витримував будь-які випробування.

Проблема була лише в тому, що за замовчуванням на Defy ставили Android 2.2, який згодом можна було оновити тільки до 2.3. Жадібна і лінива моторола обірвала всі надії власників, сказавши, що 4.0 на смартфоні не буде - замало пам'яті в звірку.

На щастя, перенести Android 4.0 на Defy почали майже відразу після відкриття початкових кодів, і на час, коли необхідність в 4.X назріла, розробники викотили хороший повноцінний порт (розповідь про те, через що вони пройшли, щоб зробити це в умовах неломающіеся залоченним завантажувача , гідний окремої статті). Але навіть вже вилизаний Android 4.X (в особі CyanogenMod 10.2) працював на старому девайсе з рук геть погано. Мізерний як на теперішній час обсяг пам'яті просто душив систему, і вона постійно трималась на межі можливостей. У порівнянні з 2.3, нова версія була просто неймовірною гальмом, користуватися яким не було ніякого бажання. Почалися пошуки будь-яких шляхів оптимізації.

По суті, все подальше оповідання і є розповідь про те, як змусити працювати Android 4.3 (CyanogenMod 10.2) на Motorola Defy або будь-якому іншому застарілому пристрої схожою конфігурації (зокрема, точно така ж начинка була у Motorola Droid і схожа у Samsung Galaxy S) . Втім, все сказане буде справедливо взагалі для будь-якого девайса на Android 4.X, починаючи від Samsung Galaxy Nexus і закінчуючи HTC One.

Отже, у нас є смартфон під управлінням Android 4.X, і він безбожно гальмує. Програми запускаються довго, Промотка відбувається із затримками, загальний FPS близько 5-10 кадрів. Проблеми тут, як і належить, дві: процесор і пам'ять.

Офіційні системні вимоги Android 4.X - це процесор на 1 ГГц і 1 Гб оперативної пам'яті. Тільки такий смартфон може пройти сертифікацію і отримати можливість продажу з передвстановленим Google Play. Все, що нижче, - немає. І ніякого запасу по пам'яті або частотам тут немає, це край, нижче якого починаються гальма. Чи не через кривизни чиїх би то не було рук, а через функціональності ОС, яка з виходом Ice Cream Sandwitch дійсно серйозно зросла (ну або можна все звалити на Java).

Скільки пам'яті споживає Android 4.X? Багато. Тільки що завантажена операційна система займає близько 350 Мб, за вирахуванням коду ядра і невивантажуваного компонентів на девайсі з 512 Мб пам'яті вільними залишаються близько 120 Мб. Середнє сучасне додаток на зразок Twitter або Instagram під час своєї роботи може зжерти до 50 Мб. Тобто оперативна пам'ять буде вичерпана вже після включення апарату і запуску пари-трійки додатків.

Так, тобі не потрібна одночасна робота декількох програм, однак Android - це не Windows, він не завершує роботу програми при його закритті, а всього лише згортає, в результаті чого софт продовжує жерти пам'ять, навіть коли ти їм не користуєшся. Щоб вісь НЕ здохла від нестачі пам'яті, в критичні моменти прокидається процес, названий Low Memory Killer, і нещадно вбиває фонові програми.

Сучасний Android-софт дуже ненажерливий

Для нас Low Memory Killer дуже важливий інструмент. Це не просто незграбна прібівалка софта, а інтелектуальний механізм, який можна переналаштувати під будь-які потреби. Алгоритм роботи цього внутрішньоядерної процесу заснований на значеннях «важливості», які присвоюються кожному працюючому в системі з додатком і можуть змінюватися у часі. Всього таких значень шість:

  • FOREGROUND_APP - видиме на екрані додаток, його вбивати не можна ні в якому разі;
  • VISIBLE_APP - працює в фоні процес, який відповідає за виведення тієї чи іншої інформації на екран (іконка в рядку стану, висувна панель, віджет і так далі), його краще теж не вбивати;
  • SECONDARY_SERVER - фоновий сервіс, такий як музичний програвач, будильник, синхронізація даних, зазвичай може бути убитий без серйозних наслідків для системи в цілому, але з втратою функціональності;
  • HIDDEN_APP - працює в тлі додаток, може бути вбито в будь-який момент, але це позначиться на його функціональності;
  • CONTENT_PROVIDER - фоновий сервіс, який відповідає за зберігання та надання будь-якої інформації (настройки, фотографії, що завгодно), але в даний момент простоює (клієнтів немає), може бути безболісно убитий;
  • EMPTY_APP - будь-який фоновий процес (додаток), який нічого не робить, перший кандидат на вбивство.

Важливість додатків кожної групи зростає від низу до верху. Тобто при нестачі пам'яті Low Memory Killer почне вбивство з останньої групи і, якщо пам'яті знову буде не вистачати, буде просуватися вище. Саме поняття «дефіцит пам'яті» у Low Memory Killer визначається шістьма порогами, по одному на кожну групу процесів. На всіх смартфонах (і прошивках) значення цих порогів різні, наприклад, на Motorola Defy з CM-10.2 на борту вони такі:

FOREGROUND_APP: 25 Мб VISIBLE_APP: 30 Мб SECONDARY_SERVER: 40 Мб HIDDEN_APP: 50 Мб CONTENT_PROVIDER: 55 Мб EMPTY_APP: 70 Мб

Вільної пам'яті менше 70 Мб - вбиваються безробітні фонові програми, менше 55 Мб - в витрата підуть Content Porovider'и і так далі. Коли пам'яті залишиться всього 25 Мб, буде вбито використовується в даний момент додаток, але ймовірність такого результату вкрай мала; після вбивства всіх інших додатків пам'ять займати буде просто нікому.

Краса всього цього механізму в тому, що він може бути переналаштувати в будь-який момент. В Android є файл / sys / module / lowmemorykiller / parameters / minfree, який можна прочитати, щоб отримати поточні значення порогів або записати в нього нові значення (через кому в 4-кілобайтних блоках), які вступлять в силу відразу після запису. Те ж саме можна зробити, використовуючи додаток Auto Memory Manager, MinFree і аналоги.

Які значення будуть придатними? Тут все залежить від способу використання смартфона. Якщо апарат тобі потрібен тільки для того, щоб дзвонити, читати пошту і твіттер, значення краще або залишити як є, або зменшити (але не рекомендую ставити нижче 50 Мб). Тоді система буде звільняти пам'ять тільки в крайньому випадку, і всі програми, якими ти часто користуєшся, залишаться в пам'яті і будуть запускатися миттєво.

Якщо ти звик використовувати смартфон для запуску великої кількості самих різних додатків та ігор, то значення краще підвищити (в Auto Memory Manager це можна зробити за один тап, натиснувши кнопку Aggressive). Тоді в системі завжди буде залишатися досить пам'яті для запуску відразу декількох важких додатків, і вона не буде витрачати час на звільнення оперативки.

Ще один радикальний варіант - це підвищити ліміти двох останніх груп до максимуму, в результаті чого Android фактично перетвориться в однозадачних систему, якою до недавнього часу була iOS і до сих пір залишається Windows Phone (умовно, звичайно). Іншими словами, система буде автоматично вбивати додатки відразу після їх закриття, але тільки в тому випадку, якщо софтіна не буде в цей момент нічого робити. Системні компоненти при цьому залишаться висіти в пам'яті.

Незалежно від того, який з варіантів ти вибереш, варто пограти з можливими значеннями, щоб знайти оптимальні.

Всі наші маніпуляції з Low Memory Killer не принесуть особливого приросту продуктивності, якщо пам'ять системи буде забита різними клієнтами Facebook, VKontakte, Hangouts Google+ та іншими. Зазвичай такий софт стартує відразу після завантаження системи і потрапляє або в групу SECONDARY SERVER, або в HIDDEN APP (іноді в CONTENT_PROVIDER), так що до нього механізм очищення пам'яті добирається тільки в останню чергу, а навіть якщо добирається, через деякий час софтіна перезапускается ( зазвичай це пов'язано з яким-небудь системним подією).

Тому другим пунктом в нашому плані поліпшення швидкості роботи буде позбавлення від всіх подібних додатків. Ні, реально потрібні, звичайно, краще залишити, а ті, які стоять для галочки, - видалити. Якщо ти використовуєш сторонню прошивку, типу CyanogenMod, стандартний архів Gapps (той, який прошивається після самої прошивки) краще замінити на мінімальний (goo.im/gapps/minimal). З гугловських додатків в ньому тільки сам маркет і Gmail, а Hangouts, карти і купа інших сервісів вирізані, тому вони теж не будуть стартувати під час завантаження і жерти пам'ять (будь-який з них можна встановити з маркету).

Крім Google-сервісів, досить багато пам'яті можуть от'есть сервіси і автоматично запускаються самого Android. Дивно, але в пам'яті працює Android-системи можна легко виявити купу софта, яким ти взагалі не користуєшся. Це може бути диктофон, калькулятор, «Чорна діра» (на жаль, це всього лише живі шпалери), а також сервіси голосового набору (набору номера, не пошуку), календаря і синтезатора мови. Причому якщо перші просто були запущені під час завантаження і досить швидко витісняються Low Memory Killer, то другі - це повноцінні сервіси, які висять в пам'яті протягом усього життя смартфона.

Багато з цих сервісів можна відключити через стандартний диспетчер додатків, навіть не маючи root. Досить перейти в «Налаштування -> Додатки -> Все», тапнуть по потрібної софтина і натиснути кнопку «Відключити» (ну або «Видалити», а потім «Відключити», якщо були встановлені оновлення). Ось список програм, які, з точки зору інженерів Google, можна безболісно відключати:

  • Голосовий набір (com.android.voicedialer)
  • Диктофон (com.android.soundrecorder)
  • Календар (com.android.calendar)
  • Калькулятор (com.android.calculator)
  • Оновлення CyanogenMod (com.cyanogenmod.updater)
  • Пам'ять календаря (com.android.providers.calendar)
  • Синхронізація закладок (com.google.android.syncupdaters.bookmarks)
  • Синхронізація календаря (com.google.android.syncupdaters.calendar)
  • Стандартні заставки (com.android.dreams.basic)
  • Фонові малюнки (com.android.musicvis і com.android.magicsmoke)
  • Чорна діра (com.android.galaxy4)
  • com.android.wallpaper.holospiral
  • Email (com.android.email)
  • Picasa Uploader (com.google.android.apps.uploader)
  • Pico TTS (com.svox.pico)

В дужках я привів системне ім'я додатка так, щоб у разі потреби ти міг не просто відключити, але і видалити його (а навіщо даремно витрачати місце?). Всі системні програми зберігаються в каталозі / system / app і можуть бути видалені за допомогою будь-якого файлового менеджера з підтримкою root.

За замовчуванням система не дозволить відключити деякі вельми ненажерливі, але тим не менш важливі сервіси. До таких відносяться, наприклад, «Телефон» (це додаток входить в групу FOREGROUND_APP і тому завжди висить в пам'яті), «Еквалайзер» (тільки в CyanogenMod і похідних), Google Backup Transport (~ 45 Мб), відповідальний за бекап встановленого софта в хмарі Google (відновлюється після переустановлення прошивки, наприклад), «Меню SIM-карти» і Fused Location (~ 45 Мб), сервіс, який збирає дані про місцезнаходження з усіх можливих джерел (мережа, IP-адреса, барометр, GPS, компас) і на їх основі обчислює точне положення смартфона на карті. Додатки типу навігаторів працюватимуть і без нього, але з меншою точністю.

Позбутися від усіх цих процесів допоможе root-додаток Bloat Freezer . Воно дозволяє відключити не тільки додатки, дозволені до відключення самою системою, а й взагалі будь-які, в тому числі головний системний процес android.process.acore. Крім наведених вище пожирачів пам'яті, безболісно можна прибити ще таку кількість системних додатків, що мені буде простіше привести список тих, які відключати не можна. Ось вони:

  • Apollo (CyanogenMod)
  • cLock (CyanogenMod)
  • Google Services Framework
  • Launcher (Trebuchet в CyanogenMod)
  • акаунти Google
  • браузер
  • Галерея
  • Графічний інтерфейс системи
  • Диспетчер завантаження
  • завантаження
  • клавіатура Google
  • Контакти
  • Майстер доступу до пакетів
  • Місцезнаходження мережі
  • налаштування
  • Пам'ять номерів / SMS / MMS
  • параметри розкладки
  • Програма установки пакета
  • Програма установки сертифіката
  • Синхронізація контактів Google
  • повідомлення
  • Засіб перегляду HTML
  • Телефон
  • Файли (CyanogenMod)
  • Ліхтарик (CyanogenMod)
  • сховище контактів
  • сховище мультимедіа
  • сховище налаштувань
  • Годинники

Все інше можна безболісно виключити (ну або залишити ті, які ще можуть стати в нагоді, наприклад FM-радіо). Коли все буде зроблено, відкриваємо будь-який менеджер процесів, прибиваємо всі призначені для користувача процеси і дивимося, скільки пам'яті зайнято. У моєму випадку 200 Мб. Дуже навіть непогано в порівнянні з початковими 350 Мб.

Дуже навіть непогано в порівнянні з початковими 350 Мб

Відключаємо даремний голосовий набір Відключаємо даремний голосовий набір   Відключивши Fused Location і Google Backup Transport, ми звільнимо 90 Мб пам'яті   Відключаємо системні сервіси за допомогою Bloat Freezer Відключивши Fused Location і Google Backup Transport, ми звільнимо 90 Мб пам'яті Відключаємо системні сервіси за допомогою Bloat Freezer

Після чищення система займає менше 200 Мб!

Видаляти або відключати всі додатки нам, звичайно, не можна, однак про найбільш ненажерливих з них подбати потрібно. Зазвичай софт для Android (та й для будь-яких інших ОС) страждає від двох основних проблем ожиріння: він або з'їдає неймовірні кількості оперативної пам'яті під час своєї роботи (наприклад, твіттер-клієнт може продовжувати зберігати в пам'яті вже давно прочитані повідомлення і переглянуті зображення), або постійно щось робить у фоновому режимі, через що смартфон стає менш чуйним, а час його роботи від батареї падає. В особливо тяжких випадках обидві хвороби комбінуються в одній софтина.

Що ми можемо зробити? Звичайно ж, видалити подібний софт, ну або як мінімум замінити його аналогом. Якщо зробити це неможливо, можна вдатися ще до двох хитрощів. Перше - це примусове вбивство додатки. Зазвичай програма починає товстіти під час роботи, а відразу після запуску займає не дуже багато пам'яті. Вбивати софт не дуже правильна ідея, але якщо вже ти зібрався це робити, то краще скористатися для цього вбудованою функцією CyanogenMod і похідних: вбивство довгим утриманням кнопки «Назад» ( «Налаштування -> Для розробників -> Закриття програми»).

Друге, що ми можемо, - це відучити ненажерливі додатки що-небудь робити в тлі. Для цього є чудовий додаток Greenify (вимагає root), яке дозволяє заморозити вибрані додатки так, щоб вони взагалі не могли працювати, поки не видно на екрані. Запускаємо Greenify, натискаємо «+» і бачимо список працюючого софта, розсортоване за ступенем ненажерливості, Тапа по потрібного додатка і усе, відтепер в тлі воно завжди буде спати.

Деякі програми нема чого працювати в фоні

Що ще можна зробити для прискорення роботи смартфона і очищення його пам'яті? В цілому більше нічого. Є, звичайно, ще такі зовсім радикальні методи, як заміна важкого софта на прості легкі аналоги, хакинг софта з метою вирізання ресурсів, але все це погано узгоджується з ідеєю мати повнофункціональний смартфон. Простіше тоді поставити Android 2.3 (CyanogenMod 7) і взагалі забути про проблеми продуктивності.

Проте є ще два дієвих ради. Перший - це активація технології zRam, яка дозволяє виділити невеликий фрагмент оперативної пам'яті і створити з нього віртуальний своп-розділ із стисненням даних. В результаті загальний обсяг оперативної пам'яті віртуально збільшиться, вивільнивши зайвих 50-100 Мб.

Проблема з активацією zRam тільки в тому, що сама технологія є далеко не в кожному ядрі. Більшість кастомних ядер, а також ядра прошивок CyanogenMod, Paranoid Android і AOKP зазвичай включає підтримку zRam, але це не завжди вірно. Стічні прошивки зазвичай поставляються з ядрами без zRam. У CyanogenMod і похідних активувати Z-RAM можна через меню «Налаштування -> Продуктивність -> Управління пам'яттю -> Використовувати zRam». За замовчуванням система виділяє під стислий своп 18% пам'яті, але при необхідності значення можна збільшити до 26%. В інших прошивках zRam активується за допомогою програми Trickster Mod (Вкладка «Специфічні функції»), проте так можна виділити тільки 10% пам'яті.

Другий дієвий рада - це перенесення всіх додатків у внутрішню пам'ять замість установки на карту пам'яті. Тут виграш полягає в тому, що вбудована NAND-пам'ять смартфона за визначенням набагато швидше пам'яті SD-карти, тому запуск програми з внутрішньої пам'яті буде відбуватися швидше. Більш того, сам по собі механізм запуску додатків з SD-карти в Android реалізований з використанням шифрованих контейнерів, що також вносить додаткові витрати.

Перенісши всі додатки у внутрішню пам'ять, ми доб'ємося прискорення їх запуску. Уже встановлений на карту пам'яті софт можна легко повернути назад через настройки: «Додатки -> Сторонні -> Як вибрати програму -> Перенести на смартфон». Щоб взагалі відключити функцію встановлення нових програм на карту пам'яті, потрібні права root і емулятор терміналу. Запускаємо термінал і набираємо дві команди:

$ Su # pm setInstallLocation 1

Тепер за замовчуванням весь софт буде встановлюватися у внутрішню пам'ять. Щоб настройка зберігалася між перезавантаженнями, беремо будь-який файловий менеджер з підтримкою root, переходимо в каталог /system/etc/init.d/ і створюємо такий файл99disable-app2sd.sh:

#! / System / bin / sh / system / bin / pm setInstallLocation 1

І за допомогою все того ж файлового менеджера ставимо на нього біт виконання. Це рецепт для CyanogenMod і похідних. На стічних прошивках спочатку необхідно встановити додаток Universal Init.d, запустити його і включити перемикач на головному вікні.

Активуємо zRam в CyanogenMod Активуємо zRam в CyanogenMod   Активуємо zRam за допомогою TricksterMod   За замовчуванням Android воліє встановлювати софт на SD-карту Активуємо zRam за допомогою TricksterMod За замовчуванням Android воліє встановлювати софт на SD-карту

Застосовуючи всі описані в статті прийоми, мені вдалося істотно підняти швидкість роботи при використанні Motorola Defy з CyanogenMod 10.2 на борту. Смартфон, звичайно, не наблизився до швидкості Nexus 4 і інших сучасних девайсів, але в порівнянні з настройками за замовчуванням комфорт від використання підвищився в рази і наблизився до такого при використанні стокового Android 2.3.


Вдихаємо нове життя в старий андроідофон

Мобільні технології розвиваються так швидко, що ми вже не встигаємо міняти смартфони. Начебто тільки купив новий девайс, а на ринку вже з'явилися більш просунуті моделі з великою кількістю пам'яті, процесорних ядер і підтримкою NFC. І чорт би з ними, з ядрами, два, чотири, вісім, хоч шістнадцять. Нова версія ОС гальмує! Ось це справжня проблема.

Цю статтю я адресую всім тим, хто до сих пір користується смартфонами, що вийшли до появи версії Android 4.0, всім тим, кому «пощастило» купити девайс з 512 Мб оперативної пам'яті, а через місяць вийшов Ice Cream Sandwich, і довелося залишитися на 2.3 або миритися з гальмами. Загалом, для володарів доісторичних, але улюблених HTC Desire, Motorola Defy і Samsung Galaxy S.

Володарем одного з таких девайсів є і я сам. Близько трьох років тому за сьогоднішню ціну Nexus 4 я придбав смартфон Motorola Defy. Це така цегла з екраном на 3,7 дюйма, процесором 1 ГГц, 512 Мб оперативної пам'яті і захистом від бруду і води. З ним я проходив близько року і згодом замінив на Galaxy Nexus, однак віддати або продати побиту, кілька разів жінку, яка тонула і минулий зі мною через все, що тільки можна, моторолу не наважився. Смартфон дійсно був хороший, зручний, легко поміщався в кишені і витримував будь-які випробування.

Проблема була лише в тому, що за замовчуванням на Defy ставили Android 2.2, який згодом можна було оновити тільки до 2.3. Жадібна і лінива моторола обірвала всі надії власників, сказавши, що 4.0 на смартфоні не буде - замало пам'яті в звірку.

На щастя, перенести Android 4.0 на Defy почали майже відразу після відкриття початкових кодів, і на час, коли необхідність в 4.X назріла, розробники викотили хороший повноцінний порт (розповідь про те, через що вони пройшли, щоб зробити це в умовах неломающіеся залоченним завантажувача , гідний окремої статті). Але навіть вже вилизаний Android 4.X (в особі CyanogenMod 10.2) працював на старому девайсе з рук геть погано. Мізерний як на теперішній час обсяг пам'яті просто душив систему, і вона постійно трималась на межі можливостей. У порівнянні з 2.3, нова версія була просто неймовірною гальмом, користуватися яким не було ніякого бажання. Почалися пошуки будь-яких шляхів оптимізації.

По суті, все подальше оповідання і є розповідь про те, як змусити працювати Android 4.3 (CyanogenMod 10.2) на Motorola Defy або будь-якому іншому застарілому пристрої схожою конфігурації (зокрема, точно така ж начинка була у Motorola Droid і схожа у Samsung Galaxy S) . Втім, все сказане буде справедливо взагалі для будь-якого девайса на Android 4.X, починаючи від Samsung Galaxy Nexus і закінчуючи HTC One.

Отже, у нас є смартфон під управлінням Android 4.X, і він безбожно гальмує. Програми запускаються довго, Промотка відбувається із затримками, загальний FPS близько 5-10 кадрів. Проблеми тут, як і належить, дві: процесор і пам'ять.

Офіційні системні вимоги Android 4.X - це процесор на 1 ГГц і 1 Гб оперативної пам'яті. Тільки такий смартфон може пройти сертифікацію і отримати можливість продажу з передвстановленим Google Play. Все, що нижче, - немає. І ніякого запасу по пам'яті або частотам тут немає, це край, нижче якого починаються гальма. Чи не через кривизни чиїх би то не було рук, а через функціональності ОС, яка з виходом Ice Cream Sandwitch дійсно серйозно зросла (ну або можна все звалити на Java).

Скільки пам'яті споживає Android 4.X? Багато. Тільки що завантажена операційна система займає близько 350 Мб, за вирахуванням коду ядра і невивантажуваного компонентів на девайсі з 512 Мб пам'яті вільними залишаються близько 120 Мб. Середнє сучасне додаток на зразок Twitter або Instagram під час своєї роботи може зжерти до 50 Мб. Тобто оперативна пам'ять буде вичерпана вже після включення апарату і запуску пари-трійки додатків.

Так, тобі не потрібна одночасна робота декількох програм, однак Android - це не Windows, він не завершує роботу програми при його закритті, а всього лише згортає, в результаті чого софт продовжує жерти пам'ять, навіть коли ти їм не користуєшся. Щоб вісь НЕ здохла від нестачі пам'яті, в критичні моменти прокидається процес, названий Low Memory Killer, і нещадно вбиває фонові програми.

Сучасний Android-софт дуже ненажерливий

Для нас Low Memory Killer дуже важливий інструмент. Це не просто незграбна прібівалка софта, а інтелектуальний механізм, який можна переналаштувати під будь-які потреби. Алгоритм роботи цього внутрішньоядерної процесу заснований на значеннях «важливості», які присвоюються кожному працюючому в системі з додатком і можуть змінюватися у часі. Всього таких значень шість:

  • FOREGROUND_APP - видиме на екрані додаток, його вбивати не можна ні в якому разі;
  • VISIBLE_APP - працює в фоні процес, який відповідає за виведення тієї чи іншої інформації на екран (іконка в рядку стану, висувна панель, віджет і так далі), його краще теж не вбивати;
  • SECONDARY_SERVER - фоновий сервіс, такий як музичний програвач, будильник, синхронізація даних, зазвичай може бути убитий без серйозних наслідків для системи в цілому, але з втратою функціональності;
  • HIDDEN_APP - працює в тлі додаток, може бути вбито в будь-який момент, але це позначиться на його функціональності;
  • CONTENT_PROVIDER - фоновий сервіс, який відповідає за зберігання та надання будь-якої інформації (настройки, фотографії, що завгодно), але в даний момент простоює (клієнтів немає), може бути безболісно убитий;
  • EMPTY_APP - будь-який фоновий процес (додаток), який нічого не робить, перший кандидат на вбивство.

Важливість додатків кожної групи зростає від низу до верху. Тобто при нестачі пам'яті Low Memory Killer почне вбивство з останньої групи і, якщо пам'яті знову буде не вистачати, буде просуватися вище. Саме поняття «дефіцит пам'яті» у Low Memory Killer визначається шістьма порогами, по одному на кожну групу процесів. На всіх смартфонах (і прошивках) значення цих порогів різні, наприклад, на Motorola Defy з CM-10.2 на борту вони такі:

FOREGROUND_APP: 25 Мб VISIBLE_APP: 30 Мб SECONDARY_SERVER: 40 Мб HIDDEN_APP: 50 Мб CONTENT_PROVIDER: 55 Мб EMPTY_APP: 70 Мб

Вільної пам'яті менше 70 Мб - вбиваються безробітні фонові програми, менше 55 Мб - в витрата підуть Content Porovider'и і так далі. Коли пам'яті залишиться всього 25 Мб, буде вбито використовується в даний момент додаток, але ймовірність такого результату вкрай мала; після вбивства всіх інших додатків пам'ять займати буде просто нікому.

Краса всього цього механізму в тому, що він може бути переналаштувати в будь-який момент. В Android є файл / sys / module / lowmemorykiller / parameters / minfree, який можна прочитати, щоб отримати поточні значення порогів або записати в нього нові значення (через кому в 4-кілобайтних блоках), які вступлять в силу відразу після запису. Те ж саме можна зробити, використовуючи додаток Auto Memory Manager, MinFree і аналоги.

Які значення будуть придатними? Тут все залежить від способу використання смартфона. Якщо апарат тобі потрібен тільки для того, щоб дзвонити, читати пошту і твіттер, значення краще або залишити як є, або зменшити (але не рекомендую ставити нижче 50 Мб). Тоді система буде звільняти пам'ять тільки в крайньому випадку, і всі програми, якими ти часто користуєшся, залишаться в пам'яті і будуть запускатися миттєво.

Якщо ж ти звик використовувати смартфон для запуску великої кількості самих різних додатків та ігор, то значення краще підвищити (в Auto Memory Manager це можна зробити за один тап, натиснувши кнопку Aggressive). Тоді в системі завжди буде залишатися досить пам'яті для запуску відразу декількох важких додатків, і вона не буде витрачати час на звільнення оперативки.

Ще один радикальний варіант - це підвищити ліміти двох останніх груп до максимуму, в результаті чого Android фактично перетвориться в однозадачних систему, якою до недавнього часу була iOS і до сих пір залишається Windows Phone (умовно, звичайно). Іншими словами, система буде автоматично вбивати додатки відразу після їх закриття, але тільки в тому випадку, якщо софтіна не буде в цей момент нічого робити. Системні компоненти при цьому залишаться висіти в пам'яті.

Незалежно від того, який з варіантів ти вибереш, варто пограти з можливими значеннями, щоб знайти оптимальні.

Всі наші маніпуляції з Low Memory Killer не принесуть особливого приросту продуктивності, якщо пам'ять системи буде забита різними клієнтами Facebook, VKontakte, Hangouts Google+ та іншими. Зазвичай такий софт стартує відразу після завантаження системи і потрапляє або в групу SECONDARY SERVER, або в HIDDEN APP (іноді в CONTENT_PROVIDER), так що до нього механізм очищення пам'яті добирається тільки в останню чергу, а навіть якщо добирається, через деякий час софтіна перезапускается ( зазвичай це пов'язано з яким-небудь системним подією).

Тому другим пунктом в нашому плані поліпшення швидкості роботи буде позбавлення від всіх подібних додатків. Ні, реально потрібні, звичайно, краще залишити, а ті, які стоять для галочки, - видалити. Якщо ти використовуєш сторонню прошивку, типу CyanogenMod, стандартний архів Gapps (той, який прошивається після самої прошивки) краще замінити на мінімальний (goo.im/gapps/minimal). З гугловських додатків в ньому тільки сам маркет і Gmail, а Hangouts, карти і купа інших сервісів вирізані, тому вони теж не будуть стартувати під час завантаження і жерти пам'ять (будь-який з них можна встановити з маркету).

Крім Google-сервісів, досить багато пам'яті можуть от'есть сервіси і автоматично запускаються самого Android. Дивно, але в пам'яті працює Android-системи можна легко виявити купу софта, яким ти взагалі не користуєшся. Це може бути диктофон, калькулятор, «Чорна діра» (на жаль, це всього лише живі шпалери), а також сервіси голосового набору (набору номера, не пошуку), календаря і синтезатора мови. Причому якщо перші просто були запущені під час завантаження і досить швидко витісняються Low Memory Killer, то другі - це повноцінні сервіси, які висять в пам'яті протягом усього життя смартфона.

Багато з цих сервісів можна відключити через стандартний диспетчер додатків, навіть не маючи root. Досить перейти в «Налаштування -> Додатки -> Все», тапнуть по потрібної софтина і натиснути кнопку «Відключити» (ну або «Видалити», а потім «Відключити», якщо були встановлені оновлення). Ось список програм, які, з точки зору інженерів Google, можна безболісно відключати:

  • Голосовий набір (com.android.voicedialer)
  • Диктофон (com.android.soundrecorder)
  • Календар (com.android.calendar)
  • Калькулятор (com.android.calculator)
  • Оновлення CyanogenMod (com.cyanogenmod.updater)
  • Пам'ять календаря (com.android.providers.calendar)
  • Синхронізація закладок (com.google.android.syncupdaters.bookmarks)
  • Синхронізація календаря (com.google.android.syncupdaters.calendar)
  • Стандартні заставки (com.android.dreams.basic)
  • Фонові малюнки (com.android.musicvis і com.android.magicsmoke)
  • Чорна діра (com.android.galaxy4)
  • com.android.wallpaper.holospiral
  • Email (com.android.email)
  • Picasa Uploader (com.google.android.apps.uploader)
  • Pico TTS (com.svox.pico)

В дужках я привів системне ім'я додатка так, щоб у разі потреби ти міг не просто відключити, але і видалити його (а навіщо даремно витрачати місце?). Всі системні програми зберігаються в каталозі / system / app і можуть бути видалені за допомогою будь-якого файлового менеджера з підтримкою root.

За замовчуванням система не дозволить відключити деякі вельми ненажерливі, але тим не менш важливі сервіси. До таких відносяться, наприклад, «Телефон» (це додаток входить в групу FOREGROUND_APP і тому завжди висить в пам'яті), «Еквалайзер» (тільки в CyanogenMod і похідних), Google Backup Transport (~ 45 Мб), відповідальний за бекап встановленого софта в хмарі Google (відновлюється після переустановлення прошивки, наприклад), «Меню SIM-карти» і Fused Location (~ 45 Мб), сервіс, який збирає дані про місцезнаходження з усіх можливих джерел (мережа, IP-адреса, барометр, GPS, компас) і на їх основі обчислює точне положення смартфона на карті. Додатки типу навігаторів працюватимуть і без нього, але з меншою точністю.

Позбутися від усіх цих процесів допоможе root-додаток Bloat Freezer . Воно дозволяє відключити не тільки додатки, дозволені до відключення самою системою, а й взагалі будь-які, в тому числі головний системний процес android.process.acore. Крім наведених вище пожирачів пам'яті, безболісно можна прибити ще таку кількість системних додатків, що мені буде простіше привести список тих, які відключати не можна. Ось вони:

  • Apollo (CyanogenMod)
  • cLock (CyanogenMod)
  • Google Services Framework
  • Launcher (Trebuchet в CyanogenMod)
  • акаунти Google
  • браузер
  • Галерея
  • Графічний інтерфейс системи
  • Диспетчер завантаження
  • завантаження
  • клавіатура Google
  • Контакти
  • Майстер доступу до пакетів
  • Місцезнаходження мережі
  • налаштування
  • Пам'ять номерів / SMS / MMS
  • параметри розкладки
  • Програма установки пакета
  • Програма установки сертифіката
  • Синхронізація контактів Google
  • повідомлення
  • Засіб перегляду HTML
  • Телефон
  • Файли (CyanogenMod)
  • Ліхтарик (CyanogenMod)
  • сховище контактів
  • сховище мультимедіа
  • сховище налаштувань
  • Годинники

Все інше можна безболісно виключити (ну або залишити ті, які ще можуть стати в нагоді, наприклад FM-радіо). Коли все буде зроблено, відкриваємо будь-який менеджер процесів, прибиваємо всі призначені для користувача процеси і дивимося, скільки пам'яті зайнято. У моєму випадку 200 Мб. Дуже навіть непогано в порівнянні з початковими 350 Мб.

Дуже навіть непогано в порівнянні з початковими 350 Мб

Відключаємо даремний голосовий набір Відключаємо даремний голосовий набір   Відключивши Fused Location і Google Backup Transport, ми звільнимо 90 Мб пам'яті   Відключаємо системні сервіси за допомогою Bloat Freezer Відключивши Fused Location і Google Backup Transport, ми звільнимо 90 Мб пам'яті Відключаємо системні сервіси за допомогою Bloat Freezer

Після чищення система займає менше 200 Мб!

Видаляти або відключати всі додатки нам, звичайно, не можна, однак про найбільш ненажерливих з них подбати потрібно. Зазвичай софт для Android (та й для будь-яких інших ОС) страждає від двох основних проблем ожиріння: він або з'їдає неймовірні кількості оперативної пам'яті під час своєї роботи (наприклад, твіттер-клієнт може продовжувати зберігати в пам'яті вже давно прочитані повідомлення і переглянуті зображення), або постійно щось робить у фоновому режимі, через що смартфон стає менш чуйним, а час його роботи від батареї падає. В особливо тяжких випадках обидві хвороби комбінуються в одній софтина.

Що ми можемо вдіяти? Звичайно ж, видалити подібний софт, ну або як мінімум замінити його аналогом. Якщо зробити це неможливо, можна вдатися ще до двох хитрощів. Перше - це примусове вбивство додатки. Зазвичай програма починає товстіти під час роботи, а відразу після запуску займає не дуже багато пам'яті. Вбивати софт не дуже правильна ідея, але якщо вже ти зібрався це робити, то краще скористатися для цього вбудованою функцією CyanogenMod і похідних: вбивство довгим утриманням кнопки «Назад» ( «Налаштування -> Для розробників -> Закриття програми»).

Друге, що ми можемо, - це відучити ненажерливі додатки що-небудь робити в тлі. Для цього є чудовий додаток Greenify (вимагає root), яке дозволяє заморозити вибрані додатки так, щоб вони взагалі не могли працювати, поки не видно на екрані. Запускаємо Greenify, натискаємо «+» і бачимо список працюючого софта, розсортоване за ступенем ненажерливості, Тапа по потрібного додатка і все, відтепер в тлі воно завжди буде спати.

Деякі програми нема чого працювати в фоні

Що ще можна зробити для прискорення роботи смартфона і очищення його пам'яті? В цілому більше нічого. Є, звичайно, ще такі зовсім радикальні методи, як заміна важкого софта на прості легкі аналоги, хакинг софта з метою вирізання ресурсів, але все це погано узгоджується з ідеєю мати повнофункціональний смартфон. Простіше тоді поставити Android 2.3 (CyanogenMod 7) і взагалі забути про проблеми продуктивності.

Проте є ще два дієвих ради. Перший - це активація технології zRam, яка дозволяє виділити невеликий фрагмент оперативної пам'яті і створити з нього віртуальний своп-розділ із стисненням даних. В результаті загальний обсяг оперативної пам'яті віртуально збільшиться, вивільнивши зайвих 50-100 Мб.

Проблема з активацією zRam тільки в тому, що сама технологія є далеко не в кожному ядрі. Більшість кастомних ядер, а також ядра прошивок CyanogenMod, Paranoid Android і AOKP зазвичай включає підтримку zRam, але це не завжди вірно. Стічні прошивки зазвичай поставляються з ядрами без zRam. У CyanogenMod і похідних активувати Z-RAM можна через меню «Налаштування -> Продуктивність -> Управління пам'яттю -> Використовувати zRam». За замовчуванням система виділяє під стислий своп 18% пам'яті, але при необхідності значення можна збільшити до 26%. В інших прошивках zRam активується за допомогою програми Trickster Mod (Вкладка «Специфічні функції»), проте так можна виділити тільки 10% пам'яті.

Другий дієвий рада - це перенесення всіх додатків у внутрішню пам'ять замість установки на карту пам'яті. Тут виграш полягає в тому, що вбудована NAND-пам'ять смартфона за визначенням набагато швидше пам'яті SD-карти, тому запуск програми з внутрішньої пам'яті буде відбуватися швидше. Більш того, сам по собі механізм запуску додатків з SD-карти в Android реалізований з використанням шифрованих контейнерів, що також вносить додаткові витрати.

Перенісши всі додатки у внутрішню пам'ять, ми доб'ємося прискорення їх запуску. Уже встановлений на карту пам'яті софт можна легко повернути назад через настройки: «Додатки -> Сторонні -> Як вибрати програму -> Перенести на смартфон». Щоб взагалі відключити функцію встановлення нових програм на карту пам'яті, потрібні права root і емулятор терміналу. Запускаємо термінал і набираємо дві команди:

$ Su # pm setInstallLocation 1

Тепер за замовчуванням весь софт буде встановлюватися у внутрішню пам'ять. Щоб настройка зберігалася між перезавантаженнями, беремо будь-який файловий менеджер з підтримкою root, переходимо в каталог /system/etc/init.d/ і створюємо такий файл99disable-app2sd.sh:

Вдихаємо нове життя в старий андроідофон

Мобільні технології розвиваються так швидко, що ми вже не встигаємо міняти смартфони. Начебто тільки купив новий девайс, а на ринку вже з'явилися більш просунуті моделі з великою кількістю пам'яті, процесорних ядер і підтримкою NFC. І чорт би з ними, з ядрами, два, чотири, вісім, хоч шістнадцять. Нова версія ОС гальмує! Ось це справжня проблема.

Цю статтю я адресую всім тим, хто до сих пір користується смартфонами, що вийшли до появи версії Android 4.0, всім тим, кому «пощастило» купити девайс з 512 Мб оперативної пам'яті, а через місяць вийшов Ice Cream Sandwich, і довелося залишитися на 2.3 або миритися з гальмами. Загалом, для володарів доісторичних, але улюблених HTC Desire, Motorola Defy і Samsung Galaxy S.

Володарем одного з таких девайсів є і я сам. Близько трьох років тому за сьогоднішню ціну Nexus 4 я придбав смартфон Motorola Defy. Це така цегла з екраном на 3,7 дюйма, процесором 1 ГГц, 512 Мб оперативної пам'яті і захистом від бруду і води. З ним я проходив близько року і згодом замінив на Galaxy Nexus, однак віддати або продати побиту, кілька разів жінку, яка тонула і минулий зі мною через все, що тільки можна, моторолу не наважився. Смартфон дійсно був хороший, зручний, легко поміщався в кишені і витримував будь-які випробування.

Проблема була лише в тому, що за замовчуванням на Defy ставили Android 2.2, який згодом можна було оновити тільки до 2.3. Жадібна і лінива моторола обірвала всі надії власників, сказавши, що 4.0 на смартфоні не буде - замало пам'яті в звірку.

На щастя, перенести Android 4.0 на Defy почали майже відразу після відкриття початкових кодів, і на час, коли необхідність в 4.X назріла, розробники викотили хороший повноцінний порт (розповідь про те, через що вони пройшли, щоб зробити це в умовах неломающіеся залоченним завантажувача , гідний окремої статті). Але навіть вже вилизаний Android 4.X (в особі CyanogenMod 10.2) працював на старому девайсе з рук геть погано. Мізерний як на теперішній час обсяг пам'яті просто душив систему, і вона постійно трималась на межі можливостей. У порівнянні з 2.3, нова версія була просто неймовірною гальмом, користуватися яким не було ніякого бажання. Почалися пошуки будь-яких шляхів оптимізації.

По суті, все подальше оповідання і є розповідь про те, як змусити працювати Android 4.3 (CyanogenMod 10.2) на Motorola Defy або будь-якому іншому застарілому пристрої схожою конфігурації (зокрема, точно така ж начинка була у Motorola Droid і схожа у Samsung Galaxy S) . Втім, все сказане буде справедливо взагалі для будь-якого девайса на Android 4.X, починаючи від Samsung Galaxy Nexus і закінчуючи HTC One.

Отже, у нас є смартфон під управлінням Android 4.X, і він безбожно гальмує. Програми запускаються довго, Промотка відбувається із затримками, загальний FPS близько 5-10 кадрів. Проблеми тут, як і належить, дві: процесор і пам'ять.

Офіційні системні вимоги Android 4.X - це процесор на 1 ГГц і 1 Гб оперативної пам'яті. Тільки такий смартфон може пройти сертифікацію і отримати можливість продажу з передвстановленим Google Play. Все, що нижче, - немає. І ніякого запасу по пам'яті або частотам тут немає, це край, нижче якого починаються гальма. Чи не через кривизни чиїх би то не було рук, а через функціональності ОС, яка з виходом Ice Cream Sandwitch дійсно серйозно зросла (ну або можна все звалити на Java).

Скільки пам'яті споживає Android 4.X? Багато. Тільки що завантажена операційна система займає близько 350 Мб, за вирахуванням коду ядра і невивантажуваного компонентів на девайсі з 512 Мб пам'яті вільними залишаються близько 120 Мб. Середнє сучасне додаток на зразок Twitter або Instagram під час своєї роботи може зжерти до 50 Мб. Тобто оперативна пам'ять буде вичерпана вже після включення апарату і запуску пари-трійки додатків.

Так, тобі не потрібна одночасна робота декількох програм, однак Android - це не Windows, він не завершує роботу програми при його закритті, а всього лише згортає, в результаті чого софт продовжує жерти пам'ять, навіть коли ти їм не користуєшся. Щоб вісь НЕ здохла від нестачі пам'яті, в критичні моменти прокидається процес, названий Low Memory Killer, і нещадно вбиває фонові програми.

Сучасний Android-софт дуже ненажерливий

Для нас Low Memory Killer дуже важливий інструмент. Це не просто незграбна прібівалка софта, а інтелектуальний механізм, який можна переналаштувати під будь-які потреби. Алгоритм роботи цього внутрішньоядерної процесу заснований на значеннях «важливості», які присвоюються кожному працюючому в системі з додатком і можуть змінюватися у часі. Всього таких значень шість:

  • FOREGROUND_APP - видиме на екрані додаток, його вбивати не можна ні в якому разі;
  • VISIBLE_APP - працює в фоні процес, який відповідає за виведення тієї чи іншої інформації на екран (іконка в рядку стану, висувна панель, віджет і так далі), його краще теж не вбивати;
  • SECONDARY_SERVER - фоновий сервіс, такий як музичний програвач, будильник, синхронізація даних, зазвичай може бути убитий без серйозних наслідків для системи в цілому, але з втратою функціональності;
  • HIDDEN_APP - працює в тлі додаток, може бути вбито в будь-який момент, але це позначиться на його функціональності;
  • CONTENT_PROVIDER - фоновий сервіс, який відповідає за зберігання та надання будь-якої інформації (настройки, фотографії, що завгодно), але в даний момент простоює (клієнтів немає), може бути безболісно убитий;
  • EMPTY_APP - будь-який фоновий процес (додаток), який нічого не робить, перший кандидат на вбивство.

Важливість додатків кожної групи зростає від низу до верху. Тобто при нестачі пам'яті Low Memory Killer почне вбивство з останньої групи і, якщо пам'яті знову буде не вистачати, буде просуватися вище. Саме поняття «дефіцит пам'яті» у Low Memory Killer визначається шістьма порогами, по одному на кожну групу процесів. На всіх смартфонах (і прошивках) значення цих порогів різні, наприклад, на Motorola Defy з CM-10.2 на борту вони такі:

FOREGROUND_APP: 25 Мб VISIBLE_APP: 30 Мб SECONDARY_SERVER: 40 Мб HIDDEN_APP: 50 Мб CONTENT_PROVIDER: 55 Мб EMPTY_APP: 70 Мб

Вільної пам'яті менше 70 Мб - вбиваються безробітні фонові програми, менше 55 Мб - в витрата підуть Content Porovider'и і так далі. Коли пам'яті залишиться всього 25 Мб, буде вбито використовується в даний момент додаток, але ймовірність такого результату вкрай мала; після вбивства всіх інших додатків пам'ять займати буде просто нікому.

Краса всього цього механізму в тому, що він може бути переналаштувати в будь-який момент. В Android є файл / sys / module / lowmemorykiller / parameters / minfree, який можна прочитати, щоб отримати поточні значення порогів або записати в нього нові значення (через кому в 4-кілобайтних блоках), які вступлять в силу відразу після запису. Те ж саме можна зробити, використовуючи додаток Auto Memory Manager, MinFree і аналоги.

Які значення будуть придатними? Тут все залежить від способу використання смартфона. Якщо апарат тобі потрібен тільки для того, щоб дзвонити, читати пошту і твіттер, значення краще або залишити як є, або зменшити (але не рекомендую ставити нижче 50 Мб). Тоді система буде звільняти пам'ять тільки в крайньому випадку, і всі програми, якими ти часто користуєшся, залишаться в пам'яті і будуть запускатися миттєво.

Якщо ж ти звик використовувати смартфон для запуску великої кількості самих різних додатків та ігор, то значення краще підвищити (в Auto Memory Manager це можна зробити за один тап, натиснувши кнопку Aggressive). Тоді в системі завжди буде залишатися досить пам'яті для запуску відразу декількох важких додатків, і вона не буде витрачати час на звільнення оперативки.

Ще один радикальний варіант - це підвищити ліміти двох останніх груп до максимуму, в результаті чого Android фактично перетвориться в однозадачних систему, якою до недавнього часу була iOS і до сих пір залишається Windows Phone (умовно, звичайно). Іншими словами, система буде автоматично вбивати додатки відразу після їх закриття, але тільки в тому випадку, якщо софтіна не буде в цей момент нічого робити. Системні компоненти при цьому залишаться висіти в пам'яті.

Незалежно від того, який з варіантів ти вибереш, варто пограти з можливими значеннями, щоб знайти оптимальні.

Всі наші маніпуляції з Low Memory Killer не принесуть особливого приросту продуктивності, якщо пам'ять системи буде забита різними клієнтами Facebook, VKontakte, Hangouts Google+ та іншими. Зазвичай такий софт стартує відразу після завантаження системи і потрапляє або в групу SECONDARY SERVER, або в HIDDEN APP (іноді в CONTENT_PROVIDER), так що до нього механізм очищення пам'яті добирається тільки в останню чергу, а навіть якщо добирається, через деякий час софтіна перезапускается ( зазвичай це пов'язано з яким-небудь системним подією).

Тому другим пунктом в нашому плані поліпшення швидкості роботи буде позбавлення від всіх подібних додатків. Ні, реально потрібні, звичайно, краще залишити, а ті, які стоять для галочки, - видалити. Якщо ти використовуєш сторонню прошивку, типу CyanogenMod, стандартний архів Gapps (той, який прошивається після самої прошивки) краще замінити на мінімальний (goo.im/gapps/minimal). З гугловських додатків в ньому тільки сам маркет і Gmail, а Hangouts, карти і купа інших сервісів вирізані, тому вони теж не будуть стартувати під час завантаження і жерти пам'ять (будь-який з них можна встановити з маркету).

Крім Google-сервісів, досить багато пам'яті можуть от'есть сервіси і автоматично запускаються самого Android. Дивно, але в пам'яті працює Android-системи можна легко виявити купу софта, яким ти взагалі не користуєшся. Це може бути диктофон, калькулятор, «Чорна діра» (на жаль, це всього лише живі шпалери), а також сервіси голосового набору (набору номера, не пошуку), календаря і синтезатора мови. Причому якщо перші просто були запущені під час завантаження і досить швидко витісняються Low Memory Killer, то другі - це повноцінні сервіси, які висять в пам'яті протягом усього життя смартфона.

Багато з цих сервісів можна відключити через стандартний диспетчер додатків, навіть не маючи root. Досить перейти в «Налаштування -> Додатки -> Все», тапнуть по потрібної софтина і натиснути кнопку «Відключити» (ну або «Видалити», а потім «Відключити», якщо були встановлені оновлення). Ось список програм, які, з точки зору інженерів Google, можна безболісно відключати:

  • Голосовий набір (com.android.voicedialer)
  • Диктофон (com.android.soundrecorder)
  • Календар (com.android.calendar)
  • Калькулятор (com.android.calculator)
  • Оновлення CyanogenMod (com.cyanogenmod.updater)
  • Пам'ять календаря (com.android.providers.calendar)
  • Синхронізація закладок (com.google.android.syncupdaters.bookmarks)
  • Синхронізація календаря (com.google.android.syncupdaters.calendar)
  • Стандартні заставки (com.android.dreams.basic)
  • Фонові малюнки (com.android.musicvis і com.android.magicsmoke)
  • Чорна діра (com.android.galaxy4)
  • com.android.wallpaper.holospiral
  • Email (com.android.email)
  • Picasa Uploader (com.google.android.apps.uploader)
  • Pico TTS (com.svox.pico)

В дужках я привів системне ім'я додатка так, щоб у разі потреби ти міг не просто відключити, але і видалити його (а навіщо даремно витрачати місце?). Всі системні програми зберігаються в каталозі / system / app і можуть бути видалені за допомогою будь-якого файлового менеджера з підтримкою root.

За замовчуванням система не дозволить відключити деякі вельми ненажерливі, але тим не менш важливі сервіси. До таких відносяться, наприклад, «Телефон» (це додаток входить в групу FOREGROUND_APP і тому завжди висить в пам'яті), «Еквалайзер» (тільки в CyanogenMod і похідних), Google Backup Transport (~ 45 Мб), відповідальний за бекап встановленого софта в хмарі Google (відновлюється після переустановлення прошивки, наприклад), «Меню SIM-карти» і Fused Location (~ 45 Мб), сервіс, який збирає дані про місцезнаходження з усіх можливих джерел (мережа, IP-адреса, барометр, GPS, компас) і на їх основі обчислює точне положення смартфона на карті. Додатки типу навігаторів працюватимуть і без нього, але з меншою точністю.

Позбутися від усіх цих процесів допоможе root-додаток Bloat Freezer . Воно дозволяє відключити не тільки додатки, дозволені до відключення самою системою, а й взагалі будь-які, в тому числі головний системний процес android.process.acore. Крім наведених вище пожирачів пам'яті, безболісно можна прибити ще таку кількість системних додатків, що мені буде простіше привести список тих, які відключати не можна. Ось вони:

  • Apollo (CyanogenMod)
  • cLock (CyanogenMod)
  • Google Services Framework
  • Launcher (Trebuchet в CyanogenMod)
  • акаунти Google
  • браузер
  • Галерея
  • Графічний інтерфейс системи
  • Диспетчер завантаження
  • завантаження
  • клавіатура Google
  • Контакти
  • Майстер доступу до пакетів
  • Місцезнаходження мережі
  • налаштування
  • Пам'ять номерів / SMS / MMS
  • параметри розкладки
  • Програма установки пакета
  • Програма установки сертифіката
  • Синхронізація контактів Google
  • повідомлення
  • Засіб перегляду HTML
  • Телефон
  • Файли (CyanogenMod)
  • Ліхтарик (CyanogenMod)
  • сховище контактів
  • сховище мультимедіа
  • сховище налаштувань
  • Годинники

Все інше можна безболісно виключити (ну або залишити ті, які ще можуть стати в нагоді, наприклад FM-радіо). Коли все буде зроблено, відкриваємо будь-який менеджер процесів, прибиваємо всі призначені для користувача процеси і дивимося, скільки пам'яті зайнято. У моєму випадку 200 Мб. Дуже навіть непогано в порівнянні з початковими 350 Мб.

Дуже навіть непогано в порівнянні з початковими 350 Мб

Відключаємо даремний голосовий набір Відключаємо даремний голосовий набір   Відключивши Fused Location і Google Backup Transport, ми звільнимо 90 Мб пам'яті   Відключаємо системні сервіси за допомогою Bloat Freezer Відключивши Fused Location і Google Backup Transport, ми звільнимо 90 Мб пам'яті Відключаємо системні сервіси за допомогою Bloat Freezer

Після чищення система займає менше 200 Мб!

Видаляти або відключати всі додатки нам, звичайно, не можна, однак про найбільш ненажерливих з них подбати потрібно. Зазвичай софт для Android (та й для будь-яких інших ОС) страждає від двох основних проблем ожиріння: він або з'їдає неймовірні кількості оперативної пам'яті під час своєї роботи (наприклад, твіттер-клієнт може продовжувати зберігати в пам'яті вже давно прочитані повідомлення і переглянуті зображення), або постійно щось робить у фоновому режимі, через що смартфон стає менш чуйним, а час його роботи від батареї падає. В особливо тяжких випадках обидві хвороби комбінуються в одній софтина.

Що ми можемо вдіяти? Звичайно ж, видалити подібний софт, ну або як мінімум замінити його аналогом. Якщо зробити це неможливо, можна вдатися ще до двох хитрощів. Перше - це примусове вбивство додатки. Зазвичай програма починає товстіти під час роботи, а відразу після запуску займає не дуже багато пам'яті. Вбивати софт не дуже правильна ідея, але якщо вже ти зібрався це робити, то краще скористатися для цього вбудованою функцією CyanogenMod і похідних: вбивство довгим утриманням кнопки «Назад» ( «Налаштування -> Для розробників -> Закриття програми»).

Друге, що ми можемо, - це відучити ненажерливі додатки що-небудь робити в тлі. Для цього є чудовий додаток Greenify (вимагає root), яке дозволяє заморозити вибрані додатки так, щоб вони взагалі не могли працювати, поки не видно на екрані. Запускаємо Greenify, натискаємо «+» і бачимо список працюючого софта, розсортоване за ступенем ненажерливості, Тапа по потрібного додатка і все, відтепер в тлі воно завжди буде спати.

Деякі програми нема чого працювати в фоні

Що ще можна зробити для прискорення роботи смартфона і очищення його пам'яті? В цілому більше нічого. Є, звичайно, ще такі зовсім радикальні методи, як заміна важкого софта на прості легкі аналоги, хакинг софта з метою вирізання ресурсів, але все це погано узгоджується з ідеєю мати повнофункціональний смартфон. Простіше тоді поставити Android 2.3 (CyanogenMod 7) і взагалі забути про проблеми продуктивності.

Проте є ще два дієвих ради. Перший - це активація технології zRam, яка дозволяє виділити невеликий фрагмент оперативної пам'яті і створити з нього віртуальний своп-розділ із стисненням даних. В результаті загальний обсяг оперативної пам'яті віртуально збільшиться, вивільнивши зайвих 50-100 Мб.

Проблема з активацією zRam тільки в тому, що сама технологія є далеко не в кожному ядрі. Більшість кастомних ядер, а також ядра прошивок CyanogenMod, Paranoid Android і AOKP зазвичай включає підтримку zRam, але це не завжди вірно. Стічні прошивки зазвичай поставляються з ядрами без zRam. У CyanogenMod і похідних активувати Z-RAM можна через меню «Налаштування -> Продуктивність -> Управління пам'яттю -> Використовувати zRam». За замовчуванням система виділяє під стислий своп 18% пам'яті, але при необхідності значення можна збільшити до 26%. В інших прошивках zRam активується за допомогою програми Trickster Mod (Вкладка «Специфічні функції»), проте так можна виділити тільки 10% пам'яті.

Другий дієвий рада - це перенесення всіх додатків у внутрішню пам'ять замість установки на карту пам'яті. Тут виграш полягає в тому, що вбудована NAND-пам'ять смартфона за визначенням набагато швидше пам'яті SD-карти, тому запуск програми з внутрішньої пам'яті буде відбуватися швидше. Більш того, сам по собі механізм запуску додатків з SD-карти в Android реалізований з використанням шифрованих контейнерів, що також вносить додаткові витрати.

Перенісши всі додатки у внутрішню пам'ять, ми доб'ємося прискорення їх запуску. Уже встановлений на карту пам'яті софт можна легко повернути назад через настройки: «Додатки -> Сторонні -> Як вибрати програму -> Перенести на смартфон». Щоб взагалі відключити функцію встановлення нових програм на карту пам'яті, потрібні права root і емулятор терміналу. Запускаємо термінал і набираємо дві команди:

$ Su # pm setInstallLocation 1

Тепер за замовчуванням весь софт буде встановлюватися у внутрішню пам'ять. Щоб настройка зберігалася між перезавантаженнями, беремо будь-який файловий менеджер з підтримкою root, переходимо в каталог /system/etc/init.d/ і створюємо такий файл99disable-app2sd.sh:

Вдихаємо нове життя в старий андроідофон

Мобільні технології розвиваються так швидко, що ми вже не встигаємо міняти смартфони. Начебто тільки купив новий девайс, а на ринку вже з'явилися більш просунуті моделі з великою кількістю пам'яті, процесорних ядер і підтримкою NFC. І чорт би з ними, з ядрами, два, чотири, вісім, хоч шістнадцять. Нова версія ОС гальмує! Ось це справжня проблема.

Цю статтю я адресую всім тим, хто до сих пір користується смартфонами, що вийшли до появи версії Android 4.0, всім тим, кому «пощастило» купити девайс з 512 Мб оперативної пам'яті, а через місяць вийшов Ice Cream Sandwich, і довелося залишитися на 2.3 або миритися з гальмами. Загалом, для володарів доісторичних, але улюблених HTC Desire, Motorola Defy і Samsung Galaxy S.

Володарем одного з таких девайсів є і я сам. Близько трьох років тому за сьогоднішню ціну Nexus 4 я придбав смартфон Motorola Defy. Це така цегла з екраном на 3,7 дюйма, процесором 1 ГГц, 512 Мб оперативної пам'яті і захистом від бруду і води. З ним я проходив близько року і згодом замінив на Galaxy Nexus, однак віддати або продати побиту, кілька разів жінку, яка тонула і минулий зі мною через все, що тільки можна, моторолу не наважився. Смартфон дійсно був хороший, зручний, легко поміщався в кишені і витримував будь-які випробування.

Проблема була лише в тому, що за замовчуванням на Defy ставили Android 2.2, який згодом можна було оновити тільки до 2.3. Жадібна і лінива моторола обірвала всі надії власників, сказавши, що 4.0 на смартфоні не буде - замало пам'яті в звірку.

На щастя, перенести Android 4.0 на Defy почали майже відразу після відкриття початкових кодів, і на час, коли необхідність в 4.X назріла, розробники викотили хороший повноцінний порт (розповідь про те, через що вони пройшли, щоб зробити це в умовах неломающіеся залоченним завантажувача , гідний окремої статті). Але навіть вже вилизаний Android 4.X (в особі CyanogenMod 10.2) працював на старому девайсе з рук геть погано. Мізерний як на теперішній час обсяг пам'яті просто душив систему, і вона постійно трималась на межі можливостей. У порівнянні з 2.3, нова версія була просто неймовірною гальмом, користуватися яким не було ніякого бажання. Почалися пошуки будь-яких шляхів оптимізації.

По суті, все подальше оповідання і є розповідь про те, як змусити працювати Android 4.3 (CyanogenMod 10.2) на Motorola Defy або будь-якому іншому застарілому пристрої схожою конфігурації (зокрема, точно така ж начинка була у Motorola Droid і схожа у Samsung Galaxy S) . Втім, все сказане буде справедливо взагалі для будь-якого девайса на Android 4.X, починаючи від Samsung Galaxy Nexus і закінчуючи HTC One.

Отже, у нас є смартфон під управлінням Android 4.X, і він безбожно гальмує. Програми запускаються довго, Промотка відбувається із затримками, загальний FPS близько 5-10 кадрів. Проблеми тут, як і належить, дві: процесор і пам'ять.

Офіційні системні вимоги Android 4.X - це процесор на 1 ГГц і 1 Гб оперативної пам'яті. Тільки такий смартфон може пройти сертифікацію і отримати можливість продажу з передвстановленим Google Play. Все, що нижче, - немає. І ніякого запасу по пам'яті або частотам тут немає, це край, нижче якого починаються гальма. Чи не через кривизни чиїх би то не було рук, а через функціональності ОС, яка з виходом Ice Cream Sandwitch дійсно серйозно зросла (ну або можна все звалити на Java).

Скільки пам'яті споживає Android 4.X? Багато. Тільки що завантажена операційна система займає близько 350 Мб, за вирахуванням коду ядра і невивантажуваного компонентів на девайсі з 512 Мб пам'яті вільними залишаються близько 120 Мб. Середнє сучасне додаток на зразок Twitter або Instagram під час своєї роботи може зжерти до 50 Мб. Тобто оперативна пам'ять буде вичерпана вже після включення апарату і запуску пари-трійки додатків.

Так, тобі не потрібна одночасна робота декількох програм, однак Android - це не Windows, він не завершує роботу програми при його закритті, а всього лише згортає, в результаті чого софт продовжує жерти пам'ять, навіть коли ти їм не користуєшся. Щоб вісь НЕ здохла від нестачі пам'яті, в критичні моменти прокидається процес, названий Low Memory Killer, і нещадно вбиває фонові програми.

Сучасний Android-софт дуже ненажерливий

Для нас Low Memory Killer дуже важливий інструмент. Це не просто незграбна прібівалка софта, а інтелектуальний механізм, який можна переналаштувати під будь-які потреби. Алгоритм роботи цього внутрішньоядерної процесу заснований на значеннях «важливості», які присвоюються кожному працюючому в системі з додатком і можуть змінюватися у часі. Всього таких значень шість:

  • FOREGROUND_APP - видиме на екрані додаток, його вбивати не можна ні в якому разі;
  • VISIBLE_APP - працює в фоні процес, який відповідає за виведення тієї чи іншої інформації на екран (іконка в рядку стану, висувна панель, віджет і так далі), його краще теж не вбивати;
  • SECONDARY_SERVER - фоновий сервіс, такий як музичний програвач, будильник, синхронізація даних, зазвичай може бути убитий без серйозних наслідків для системи в цілому, але з втратою функціональності;
  • HIDDEN_APP - працює в тлі додаток, може бути вбито в будь-який момент, але це позначиться на його функціональності;
  • CONTENT_PROVIDER - фоновий сервіс, який відповідає за зберігання та надання будь-якої інформації (настройки, фотографії, що завгодно), але в даний момент простоює (клієнтів немає), може бути безболісно убитий;
  • EMPTY_APP - будь-який фоновий процес (додаток), який нічого не робить, перший кандидат на вбивство.

Важливість додатків кожної групи зростає від низу до верху. Тобто при нестачі пам'яті Low Memory Killer почне вбивство з останньої групи і, якщо пам'яті знову буде не вистачати, буде просуватися вище. Саме поняття «дефіцит пам'яті» у Low Memory Killer визначається шістьма порогами, по одному на кожну групу процесів. На всіх смартфонах (і прошивках) значення цих порогів різні, наприклад, на Motorola Defy з CM-10.2 на борту вони такі:

FOREGROUND_APP: 25 Мб VISIBLE_APP: 30 Мб SECONDARY_SERVER: 40 Мб HIDDEN_APP: 50 Мб CONTENT_PROVIDER: 55 Мб EMPTY_APP: 70 Мб

Вільної пам'яті менше 70 Мб - вбиваються безробітні фонові програми, менше 55 Мб - в витрата підуть Content Porovider'и і так далі. Коли пам'яті залишиться всього 25 Мб, буде вбито використовується в даний момент додаток, але ймовірність такого результату вкрай мала; після вбивства всіх інших додатків пам'ять займати буде просто нікому.

Краса всього цього механізму в тому, що він може бути переналаштувати в будь-який момент. В Android є файл / sys / module / lowmemorykiller / parameters / minfree, який можна прочитати, щоб отримати поточні значення порогів або записати в нього нові значення (через кому в 4-кілобайтних блоках), які вступлять в силу відразу після запису. Те ж саме можна зробити, використовуючи додаток Auto Memory Manager, MinFree і аналоги.

Які значення будуть придатними? Тут все залежить від способу використання смартфона. Якщо апарат тобі потрібен тільки для того, щоб дзвонити, читати пошту і твіттер, значення краще або залишити як є, або зменшити (але не рекомендую ставити нижче 50 Мб). Тоді система буде звільняти пам'ять тільки в крайньому випадку, і всі програми, якими ти часто користуєшся, залишаться в пам'яті і будуть запускатися миттєво.

Якщо ж ти звик використовувати смартфон для запуску великої кількості самих різних додатків та ігор, то значення краще підвищити (в Auto Memory Manager це можна зробити за один тап, натиснувши кнопку Aggressive). Тоді в системі завжди буде залишатися досить пам'яті для запуску відразу декількох важких додатків, і вона не буде витрачати час на звільнення оперативки.

Ще один радикальний варіант - це підвищити ліміти двох останніх груп до максимуму, в результаті чого Android фактично перетвориться в однозадачних систему, якою до недавнього часу була iOS і до сих пір залишається Windows Phone (умовно, звичайно). Іншими словами, система буде автоматично вбивати додатки відразу після їх закриття, але тільки в тому випадку, якщо софтіна не буде в цей момент нічого робити. Системні компоненти при цьому залишаться висіти в пам'яті.

Незалежно від того, який з варіантів ти вибереш, варто пограти з можливими значеннями, щоб знайти оптимальні.

Всі наші маніпуляції з Low Memory Killer не принесуть особливого приросту продуктивності, якщо пам'ять системи буде забита різними клієнтами Facebook, VKontakte, Hangouts Google+ та іншими. Зазвичай такий софт стартує відразу після завантаження системи і потрапляє або в групу SECONDARY SERVER, або в HIDDEN APP (іноді в CONTENT_PROVIDER), так що до нього механізм очищення пам'яті добирається тільки в останню чергу, а навіть якщо добирається, через деякий час софтіна перезапускается ( зазвичай це пов'язано з яким-небудь системним подією).

Тому другим пунктом в нашому плані поліпшення швидкості роботи буде позбавлення від всіх подібних додатків. Ні, реально потрібні, звичайно, краще залишити, а ті, які стоять для галочки, - видалити. Якщо ти використовуєш сторонню прошивку, типу CyanogenMod, стандартний архів Gapps (той, який прошивається після самої прошивки) краще замінити на мінімальний (goo.im/gapps/minimal). З гугловських додатків в ньому тільки сам маркет і Gmail, а Hangouts, карти і купа інших сервісів вирізані, тому вони теж не будуть стартувати під час завантаження і жерти пам'ять (будь-який з них можна встановити з маркету).

Крім Google-сервісів, досить багато пам'яті можуть от'есть сервіси і автоматично запускаються самого Android. Дивно, але в пам'яті працює Android-системи можна легко виявити купу софта, яким ти взагалі не користуєшся. Це може бути диктофон, калькулятор, «Чорна діра» (на жаль, це всього лише живі шпалери), а також сервіси голосового набору (набору номера, не пошуку), календаря і синтезатора мови. Причому якщо перші просто були запущені під час завантаження і досить швидко витісняються Low Memory Killer, то другі - це повноцінні сервіси, які висять в пам'яті протягом усього життя смартфона.

Багато з цих сервісів можна відключити через стандартний диспетчер додатків, навіть не маючи root. Досить перейти в «Налаштування -> Додатки -> Все», тапнуть по потрібної софтина і натиснути кнопку «Відключити» (ну або «Видалити», а потім «Відключити», якщо були встановлені оновлення). Ось список програм, які, з точки зору інженерів Google, можна безболісно відключати:

  • Голосовий набір (com.android.voicedialer)
  • Диктофон (com.android.soundrecorder)
  • Календар (com.android.calendar)
  • Калькулятор (com.android.calculator)
  • Оновлення CyanogenMod (com.cyanogenmod.updater)
  • Пам'ять календаря (com.android.providers.calendar)
  • Синхронізація закладок (com.google.android.syncupdaters.bookmarks)
  • Синхронізація календаря (com.google.android.syncupdaters.calendar)
  • Стандартні заставки (com.android.dreams.basic)
  • Фонові малюнки (com.android.musicvis і com.android.magicsmoke)
  • Чорна діра (com.android.galaxy4)
  • com.android.wallpaper.holospiral
  • Email (com.android.email)
  • Picasa Uploader (com.google.android.apps.uploader)
  • Pico TTS (com.svox.pico)

В дужках я привів системне ім'я додатка так, щоб у разі потреби ти міг не просто відключити, але і видалити його (а навіщо даремно витрачати місце?). Всі системні програми зберігаються в каталозі / system / app і можуть бути видалені за допомогою будь-якого файлового менеджера з підтримкою root.

За замовчуванням система не дозволить відключити деякі вельми ненажерливі, але тим не менш важливі сервіси. До таких відносяться, наприклад, «Телефон» (це додаток входить в групу FOREGROUND_APP і тому завжди висить в пам'яті), «Еквалайзер» (тільки в CyanogenMod і похідних), Google Backup Transport (~ 45 Мб), відповідальний за бекап встановленого софта в хмарі Google (відновлюється після переустановлення прошивки, наприклад), «Меню SIM-карти» і Fused Location (~ 45 Мб), сервіс, який збирає дані про місцезнаходження з усіх можливих джерел (мережа, IP-адреса, барометр, GPS, компас) і на їх основі обчислює точне положення смартфона на карті. Додатки типу навігаторів працюватимуть і без нього, але з меншою точністю.

Позбутися від усіх цих процесів допоможе root-додаток Bloat Freezer . Воно дозволяє відключити не тільки додатки, дозволені до відключення самою системою, а й взагалі будь-які, в тому числі головний системний процес android.process.acore. Крім наведених вище пожирачів пам'яті, безболісно можна прибити ще таку кількість системних додатків, що мені буде простіше привести список тих, які відключати не можна. Ось вони:

  • Apollo (CyanogenMod)
  • cLock (CyanogenMod)
  • Google Services Framework
  • Launcher (Trebuchet в CyanogenMod)
  • акаунти Google
  • браузер
  • Галерея
  • Графічний інтерфейс системи
  • Диспетчер завантаження
  • завантаження
  • клавіатура Google
  • Контакти
  • Майстер доступу до пакетів
  • Місцезнаходження мережі
  • налаштування
  • Пам'ять номерів / SMS / MMS
  • параметри розкладки
  • Програма установки пакета
  • Програма установки сертифіката
  • Синхронізація контактів Google
  • повідомлення
  • Засіб перегляду HTML
  • Телефон
  • Файли (CyanogenMod)
  • Ліхтарик (CyanogenMod)
  • сховище контактів
  • сховище мультимедіа
  • сховище налаштувань
  • Годинники

Все інше можна безболісно виключити (ну або залишити ті, які ще можуть стати в нагоді, наприклад FM-радіо). Коли все буде зроблено, відкриваємо будь-який менеджер процесів, прибиваємо всі призначені для користувача процеси і дивимося, скільки пам'яті зайнято. У моєму випадку 200 Мб. Дуже навіть непогано в порівнянні з початковими 350 Мб.

Дуже навіть непогано в порівнянні з початковими 350 Мб

Відключаємо даремний голосовий набір Відключаємо даремний голосовий набір   Відключивши Fused Location і Google Backup Transport, ми звільнимо 90 Мб пам'яті   Відключаємо системні сервіси за допомогою Bloat Freezer Відключивши Fused Location і Google Backup Transport, ми звільнимо 90 Мб пам'яті Відключаємо системні сервіси за допомогою Bloat Freezer

Після чищення система займає менше 200 Мб!

Видаляти або відключати всі додатки нам, звичайно, не можна, однак про найбільш ненажерливих з них подбати потрібно. Зазвичай софт для Android (та й для будь-яких інших ОС) страждає від двох основних проблем ожиріння: він або з'їдає неймовірні кількості оперативної пам'яті під час своєї роботи (наприклад, твіттер-клієнт може продовжувати зберігати в пам'яті вже давно прочитані повідомлення і переглянуті зображення), або постійно щось робить у фоновому режимі, через що смартфон стає менш чуйним, а час його роботи від батареї падає. В особливо тяжких випадках обидві хвороби комбінуються в одній софтина.

Що ми можемо вдіяти? Звичайно ж, видалити подібний софт, ну або як мінімум замінити його аналогом. Якщо зробити це неможливо, можна вдатися ще до двох хитрощів. Перше - це примусове вбивство додатки. Зазвичай програма починає товстіти під час роботи, а відразу після запуску займає не дуже багато пам'яті. Вбивати софт не дуже правильна ідея, але якщо вже ти зібрався це робити, то краще скористатися для цього вбудованою функцією CyanogenMod і похідних: вбивство довгим утриманням кнопки «Назад» ( «Налаштування -> Для розробників -> Закриття програми»).

Друге, що ми можемо, - це відучити ненажерливі додатки що-небудь робити в тлі. Для цього є чудовий додаток Greenify (вимагає root), яке дозволяє заморозити вибрані додатки так, щоб вони взагалі не могли працювати, поки не видно на екрані. Запускаємо Greenify, натискаємо «+» і бачимо список працюючого софта, розсортоване за ступенем ненажерливості, Тапа по потрібного додатка і все, відтепер в тлі воно завжди буде спати.

Деякі програми нема чого працювати в фоні

Що ще можна зробити для прискорення роботи смартфона і очищення його пам'яті? В цілому більше нічого. Є, звичайно, ще такі зовсім радикальні методи, як заміна важкого софта на прості легкі аналоги, хакинг софта з метою вирізання ресурсів, але все це погано узгоджується з ідеєю мати повнофункціональний смартфон. Простіше тоді поставити Android 2.3 (CyanogenMod 7) і взагалі забути про проблеми продуктивності.

Проте є ще два дієвих ради. Перший - це активація технології zRam, яка дозволяє виділити невеликий фрагмент оперативної пам'яті і створити з нього віртуальний своп-розділ із стисненням даних. В результаті загальний обсяг оперативної пам'яті віртуально збільшиться, вивільнивши зайвих 50-100 Мб.

Проблема з активацією zRam тільки в тому, що сама технологія є далеко не в кожному ядрі. Більшість кастомних ядер, а також ядра прошивок CyanogenMod, Paranoid Android і AOKP зазвичай включає підтримку zRam, але це не завжди вірно. Стічні прошивки зазвичай поставляються з ядрами без zRam. У CyanogenMod і похідних активувати Z-RAM можна через меню «Налаштування -> Продуктивність -> Управління пам'яттю -> Використовувати zRam». За замовчуванням система виділяє під стислий своп 18% пам'яті, але при необхідності значення можна збільшити до 26%. В інших прошивках zRam активується за допомогою програми Trickster Mod (Вкладка «Специфічні функції»), проте так можна виділити тільки 10% пам'яті.

Другий дієвий рада - це перенесення всіх додатків у внутрішню пам'ять замість установки на карту пам'яті. Тут виграш полягає в тому, що вбудована NAND-пам'ять смартфона за визначенням набагато швидше пам'яті SD-карти, тому запуск програми з внутрішньої пам'яті буде відбуватися швидше. Більш того, сам по собі механізм запуску додатків з SD-карти в Android реалізований з використанням шифрованих контейнерів, що також вносить додаткові витрати.

Перенісши всі додатки у внутрішню пам'ять, ми доб'ємося прискорення їх запуску. Уже встановлений на карту пам'яті софт можна легко повернути назад через настройки: «Додатки -> Сторонні -> Як вибрати програму -> Перенести на смартфон». Щоб взагалі відключити функцію встановлення нових програм на карту пам'яті, потрібні права root і емулятор терміналу. Запускаємо термінал і набираємо дві команди:

$ Su # pm setInstallLocation 1

Тепер за замовчуванням весь софт буде встановлюватися у внутрішню пам'ять. Щоб настройка зберігалася між перезавантаженнями, беремо будь-який файловий менеджер з підтримкою root, переходимо в каталог /system/etc/init.d/ і створюємо такий файл99disable-app2sd.sh:

Вдихаємо нове життя в старий андроідофон

Мобільні технології розвиваються так швидко, що ми вже не встигаємо міняти смартфони. Начебто тільки купив новий девайс, а на ринку вже з'явилися більш просунуті моделі з великою кількістю пам'яті, процесорних ядер і підтримкою NFC. І чорт би з ними, з ядрами, два, чотири, вісім, хоч шістнадцять. Нова версія ОС гальмує! Ось це справжня проблема.

Цю статтю я адресую всім тим, хто до сих пір користується смартфонами, що вийшли до появи версії Android 4.0, всім тим, кому «пощастило» купити девайс з 512 Мб оперативної пам'яті, а через місяць вийшов Ice Cream Sandwich, і довелося залишитися на 2.3 або миритися з гальмами. Загалом, для володарів доісторичних, але улюблених HTC Desire, Motorola Defy і Samsung Galaxy S.

Володарем одного з таких девайсів є і я сам. Близько трьох років тому за сьогоднішню ціну Nexus 4 я придбав смартфон Motorola Defy. Це така цегла з екраном на 3,7 дюйма, процесором 1 ГГц, 512 Мб оперативної пам'яті і захистом від бруду і води. З ним я проходив близько року і згодом замінив на Galaxy Nexus, однак віддати або продати побиту, кілька разів жінку, яка тонула і минулий зі мною через все, що тільки можна, моторолу не наважився. Смартфон дійсно був хороший, зручний, легко поміщався в кишені і витримував будь-які випробування.

Проблема була лише в тому, що за замовчуванням на Defy ставили Android 2.2, який згодом можна було оновити тільки до 2.3. Жадібна і лінива моторола обірвала всі надії власників, сказавши, що 4.0 на смартфоні не буде - замало пам'яті в звірку.

На щастя, перенести Android 4.0 на Defy почали майже відразу після відкриття початкових кодів, і на час, коли необхідність в 4.X назріла, розробники викотили хороший повноцінний порт (розповідь про те, через що вони пройшли, щоб зробити це в умовах неломающіеся залоченним завантажувача , гідний окремої статті). Але навіть вже вилизаний Android 4.X (в особі CyanogenMod 10.2) працював на старому девайсе з рук геть погано. Мізерний як на теперішній час обсяг пам'яті просто душив систему, і вона постійно трималась на межі можливостей. У порівнянні з 2.3, нова версія була просто неймовірною гальмом, користуватися яким не було ніякого бажання. Почалися пошуки будь-яких шляхів оптимізації.

По суті, все подальше оповідання і є розповідь про те, як змусити працювати Android 4.3 (CyanogenMod 10.2) на Motorola Defy або будь-якому іншому застарілому пристрої схожою конфігурації (зокрема, точно така ж начинка була у Motorola Droid і схожа у Samsung Galaxy S) . Втім, все сказане буде справедливо взагалі для будь-якого девайса на Android 4.X, починаючи від Samsung Galaxy Nexus і закінчуючи HTC One.

Отже, у нас є смартфон під управлінням Android 4.X, і він безбожно гальмує. Програми запускаються довго, Промотка відбувається із затримками, загальний FPS близько 5-10 кадрів. Проблеми тут, як і належить, дві: процесор і пам'ять.

Офіційні системні вимоги Android 4.X - це процесор на 1 ГГц і 1 Гб оперативної пам'яті. Тільки такий смартфон може пройти сертифікацію і отримати можливість продажу з передвстановленим Google Play. Все, що нижче, - немає. І ніякого запасу по пам'яті або частотам тут немає, це край, нижче якого починаються гальма. Чи не через кривизни чиїх би то не було рук, а через функціональності ОС, яка з виходом Ice Cream Sandwitch дійсно серйозно зросла (ну або можна все звалити на Java).

Скільки пам'яті споживає Android 4.X? Багато. Тільки що завантажена операційна система займає близько 350 Мб, за вирахуванням коду ядра і невивантажуваного компонентів на девайсі з 512 Мб пам'яті вільними залишаються близько 120 Мб. Середнє сучасне додаток на зразок Twitter або Instagram під час своєї роботи може зжерти до 50 Мб. Тобто оперативна пам'ять буде вичерпана вже після включення апарату і запуску пари-трійки додатків.

Так, тобі не потрібна одночасна робота декількох програм, однак Android - це не Windows, він не завершує роботу програми при його закритті, а всього лише згортає, в результаті чого софт продовжує жерти пам'ять, навіть коли ти їм не користуєшся. Щоб вісь НЕ здохла від нестачі пам'яті, в критичні моменти прокидається процес, названий Low Memory Killer, і нещадно вбиває фонові програми.

Сучасний Android-софт дуже ненажерливий

Для нас Low Memory Killer дуже важливий інструмент. Це не просто незграбна прібівалка софта, а інтелектуальний механізм, який можна переналаштувати під будь-які потреби. Алгоритм роботи цього внутрішньоядерної процесу заснований на значеннях «важливості», які присвоюються кожному працюючому в системі з додатком і можуть змінюватися у часі. Всього таких значень шість:

  • FOREGROUND_APP - видиме на екрані додаток, його вбивати не можна ні в якому разі;
  • VISIBLE_APP - працює в фоні процес, який відповідає за виведення тієї чи іншої інформації на екран (іконка в рядку стану, висувна панель, віджет і так далі), його краще теж не вбивати;
  • SECONDARY_SERVER - фоновий сервіс, такий як музичний програвач, будильник, синхронізація даних, зазвичай може бути убитий без серйозних наслідків для системи в цілому, але з втратою функціональності;
  • HIDDEN_APP - працює в тлі додаток, може бути вбито в будь-який момент, але це позначиться на його функціональності;
  • CONTENT_PROVIDER - фоновий сервіс, який відповідає за зберігання та надання будь-якої інформації (настройки, фотографії, що завгодно), але в даний момент простоює (клієнтів немає), може бути безболісно убитий;
  • EMPTY_APP - будь-який фоновий процес (додаток), який нічого не робить, перший кандидат на вбивство.

Важливість додатків кожної групи зростає від низу до верху. Тобто при нестачі пам'яті Low Memory Killer почне вбивство з останньої групи і, якщо пам'яті знову буде не вистачати, буде просуватися вище. Саме поняття «дефіцит пам'яті» у Low Memory Killer визначається шістьма порогами, по одному на кожну групу процесів. На всіх смартфонах (і прошивках) значення цих порогів різні, наприклад, на Motorola Defy з CM-10.2 на борту вони такі:

FOREGROUND_APP: 25 Мб VISIBLE_APP: 30 Мб SECONDARY_SERVER: 40 Мб HIDDEN_APP: 50 Мб CONTENT_PROVIDER: 55 Мб EMPTY_APP: 70 Мб

Вільної пам'яті менше 70 Мб - вбиваються безробітні фонові програми, менше 55 Мб - в витрата підуть Content Porovider'и і так далі. Коли пам'яті залишиться всього 25 Мб, буде вбито використовується в даний момент додаток, але ймовірність такого результату вкрай мала; після вбивства всіх інших додатків пам'ять займати буде просто нікому.

Краса всього цього механізму в тому, що він може бути переналаштувати в будь-який момент. В Android є файл / sys / module / lowmemorykiller / parameters / minfree, який можна прочитати, щоб отримати поточні значення порогів або записати в нього нові значення (через кому в 4-кілобайтних блоках), які вступлять в силу відразу після запису. Те ж саме можна зробити, використовуючи додаток Auto Memory Manager, MinFree і аналоги.

Які значення будуть придатними? Тут все залежить від способу використання смартфона. Якщо апарат тобі потрібен тільки для того, щоб дзвонити, читати пошту і твіттер, значення краще або залишити як є, або зменшити (але не рекомендую ставити нижче 50 Мб). Тоді система буде звільняти пам'ять тільки в крайньому випадку, і всі програми, якими ти часто користуєшся, залишаться в пам'яті і будуть запускатися миттєво.

Якщо ж ти звик використовувати смартфон для запуску великої кількості самих різних додатків та ігор, то значення краще підвищити (в Auto Memory Manager це можна зробити за один тап, натиснувши кнопку Aggressive). Тоді в системі завжди буде залишатися досить пам'яті для запуску відразу декількох важких додатків, і вона не буде витрачати час на звільнення оперативки.

Ще один радикальний варіант - це підвищити ліміти двох останніх груп до максимуму, в результаті чого Android фактично перетвориться в однозадачних систему, якою до недавнього часу була iOS і до сих пір залишається Windows Phone (умовно, звичайно). Іншими словами, система буде автоматично вбивати додатки відразу після їх закриття, але тільки в тому випадку, якщо софтіна не буде в цей момент нічого робити. Системні компоненти при цьому залишаться висіти в пам'яті.

Незалежно від того, який з варіантів ти вибереш, варто пограти з можливими значеннями, щоб знайти оптимальні.

Всі наші маніпуляції з Low Memory Killer не принесуть особливого приросту продуктивності, якщо пам'ять системи буде забита різними клієнтами Facebook, VKontakte, Hangouts Google+ та іншими. Зазвичай такий софт стартує відразу після завантаження системи і потрапляє або в групу SECONDARY SERVER, або в HIDDEN APP (іноді в CONTENT_PROVIDER), так що до нього механізм очищення пам'яті добирається тільки в останню чергу, а навіть якщо добирається, через деякий час софтіна перезапускается ( зазвичай це пов'язано з яким-небудь системним подією).

Тому другим пунктом в нашому плані поліпшення швидкості роботи буде позбавлення від всіх подібних додатків. Ні, реально потрібні, звичайно, краще залишити, а ті, які стоять для галочки, - видалити. Якщо ти використовуєш сторонню прошивку, типу CyanogenMod, стандартний архів Gapps (той, який прошивається після самої прошивки) краще замінити на мінімальний (goo.im/gapps/minimal). З гугловських додатків в ньому тільки сам маркет і Gmail, а Hangouts, карти і купа інших сервісів вирізані, тому вони теж не будуть стартувати під час завантаження і жерти пам'ять (будь-який з них можна встановити з маркету).

Крім Google-сервісів, досить багато пам'яті можуть от'есть сервіси і автоматично запускаються самого Android. Дивно, але в пам'яті працює Android-системи можна легко виявити купу софта, яким ти взагалі не користуєшся. Це може бути диктофон, калькулятор, «Чорна діра» (на жаль, це всього лише живі шпалери), а також сервіси голосового набору (набору номера, не пошуку), календаря і синтезатора мови. Причому якщо перші просто були запущені під час завантаження і досить швидко витісняються Low Memory Killer, то другі - це повноцінні сервіси, які висять в пам'яті протягом усього життя смартфона.

Багато з цих сервісів можна відключити через стандартний диспетчер додатків, навіть не маючи root. Досить перейти в «Налаштування -> Додатки -> Все», тапнуть по потрібної софтина і натиснути кнопку «Відключити» (ну або «Видалити», а потім «Відключити», якщо були встановлені оновлення). Ось список програм, які, з точки зору інженерів Google, можна безболісно відключати:

  • Голосовий набір (com.android.voicedialer)
  • Диктофон (com.android.soundrecorder)
  • Календар (com.android.calendar)
  • Калькулятор (com.android.calculator)
  • Оновлення CyanogenMod (com.cyanogenmod.updater)
  • Пам'ять календаря (com.android.providers.calendar)
  • Синхронізація закладок (com.google.android.syncupdaters.bookmarks)
  • Синхронізація календаря (com.google.android.syncupdaters.calendar)
  • Стандартні заставки (com.android.dreams.basic)
  • Фонові малюнки (com.android.musicvis і com.android.magicsmoke)
  • Чорна діра (com.android.galaxy4)
  • com.android.wallpaper.holospiral
  • Email (com.android.email)
  • Picasa Uploader (com.google.android.apps.uploader)
  • Pico TTS (com.svox.pico)

В дужках я привів системне ім'я додатка так, щоб у разі потреби ти міг не просто відключити, але і видалити його (а навіщо даремно витрачати місце?). Всі системні програми зберігаються в каталозі / system / app і можуть бути видалені за допомогою будь-якого файлового менеджера з підтримкою root.

За замовчуванням система не дозволить відключити деякі вельми ненажерливі, але тим не менш важливі сервіси. До таких відносяться, наприклад, «Телефон» (це додаток входить в групу FOREGROUND_APP і тому завжди висить в пам'яті), «Еквалайзер» (тільки в CyanogenMod і похідних), Google Backup Transport (~ 45 Мб), відповідальний за бекап встановленого софта в хмарі Google (відновлюється після переустановлення прошивки, наприклад), «Меню SIM-карти» і Fused Location (~ 45 Мб), сервіс, який збирає дані про місцезнаходження з усіх можливих джерел (мережа, IP-адреса, барометр, GPS, компас) і на їх основі обчислює точне положення смартфона на карті. Додатки типу навігаторів працюватимуть і без нього, але з меншою точністю.

Позбутися від усіх цих процесів допоможе root-додаток Bloat Freezer . Воно дозволяє відключити не тільки додатки, дозволені до відключення самою системою, а й взагалі будь-які, в тому числі головний системний процес android.process.acore. Крім наведених вище пожирачів пам'яті, безболісно можна прибити ще таку кількість системних додатків, що мені буде простіше привести список тих, які відключати не можна. Ось вони:

  • Apollo (CyanogenMod)
  • cLock (CyanogenMod)
  • Google Services Framework
  • Launcher (Trebuchet в CyanogenMod)
  • акаунти Google
  • браузер
  • Галерея
  • Графічний інтерфейс системи
  • Диспетчер завантаження
  • завантаження
  • клавіатура Google
  • Контакти
  • Майстер доступу до пакетів
  • Місцезнаходження мережі
  • налаштування
  • Пам'ять номерів / SMS / MMS
  • параметри розкладки
  • Програма установки пакета
  • Програма установки сертифіката
  • Синхронізація контактів Google
  • повідомлення
  • Засіб перегляду HTML
  • Телефон
  • Файли (CyanogenMod)
  • Ліхтарик (CyanogenMod)
  • сховище контактів
  • сховище мультимедіа
  • сховище налаштувань
  • Годинники

Все інше можна безболісно виключити (ну або залишити ті, які ще можуть стати в нагоді, наприклад FM-радіо). Коли все буде зроблено, відкриваємо будь-який менеджер процесів, прибиваємо всі призначені для користувача процеси і дивимося, скільки пам'яті зайнято. У моєму випадку 200 Мб. Дуже навіть непогано в порівнянні з початковими 350 Мб.

Дуже навіть непогано в порівнянні з початковими 350 Мб

Відключаємо даремний голосовий набір Відключаємо даремний голосовий набір   Відключивши Fused Location і Google Backup Transport, ми звільнимо 90 Мб пам'яті   Відключаємо системні сервіси за допомогою Bloat Freezer Відключивши Fused Location і Google Backup Transport, ми звільнимо 90 Мб пам'яті Відключаємо системні сервіси за допомогою Bloat Freezer

Після чищення система займає менше 200 Мб!

Видаляти або відключати всі додатки нам, звичайно, не можна, однак про найбільш ненажерливих з них подбати потрібно. Зазвичай софт для Android (та й для будь-яких інших ОС) страждає від двох основних проблем ожиріння: він або з'їдає неймовірні кількості оперативної пам'яті під час своєї роботи (наприклад, твіттер-клієнт може продовжувати зберігати в пам'яті вже давно прочитані повідомлення і переглянуті зображення), або постійно щось робить у фоновому режимі, через що смартфон стає менш чуйним, а час його роботи від батареї падає. В особливо тяжких випадках обидві хвороби комбінуються в одній софтина.

Що ми можемо вдіяти? Звичайно ж, видалити подібний софт, ну або як мінімум замінити його аналогом. Якщо зробити це неможливо, можна вдатися ще до двох хитрощів. Перше - це примусове вбивство додатки. Зазвичай програма починає товстіти під час роботи, а відразу після запуску займає не дуже багато пам'яті. Вбивати софт не дуже правильна ідея, але якщо вже ти зібрався це робити, то краще скористатися для цього вбудованою функцією CyanogenMod і похідних: вбивство довгим утриманням кнопки «Назад» ( «Налаштування -> Для розробників -> Закриття програми»).

Друге, що ми можемо, - це відучити ненажерливі додатки що-небудь робити в тлі. Для цього є чудовий додаток Greenify (вимагає root), яке дозволяє заморозити вибрані додатки так, щоб вони взагалі не могли працювати, поки не видно на екрані. Запускаємо Greenify, натискаємо «+» і бачимо список працюючого софта, розсортоване за ступенем ненажерливості, Тапа по потрібного додатка і все, відтепер в тлі воно завжди буде спати.

Деякі програми нема чого працювати в фоні

Що ще можна зробити для прискорення роботи смартфона і очищення його пам'яті? В цілому більше нічого. Є, звичайно, ще такі зовсім радикальні методи, як заміна важкого софта на прості легкі аналоги, хакинг софта з метою вирізання ресурсів, але все це погано узгоджується з ідеєю мати повнофункціональний смартфон. Простіше тоді поставити Android 2.3 (CyanogenMod 7) і взагалі забути про проблеми продуктивності.

Проте є ще два дієвих ради. Перший - це активація технології zRam, яка дозволяє виділити невеликий фрагмент оперативної пам'яті і створити з нього віртуальний своп-розділ із стисненням даних. В результаті загальний обсяг оперативної пам'яті віртуально збільшиться, вивільнивши зайвих 50-100 Мб.

Проблема з активацією zRam тільки в тому, що сама технологія є далеко не в кожному ядрі. Більшість кастомних ядер, а також ядра прошивок CyanogenMod, Paranoid Android і AOKP зазвичай включає підтримку zRam, але це не завжди вірно. Стічні прошивки зазвичай поставляються з ядрами без zRam. У CyanogenMod і похідних активувати Z-RAM можна через меню «Налаштування -> Продуктивність -> Управління пам'яттю -> Використовувати zRam». За замовчуванням система виділяє під стислий своп 18% пам'яті, але при необхідності значення можна збільшити до 26%. В інших прошивках zRam активується за допомогою програми Trickster Mod (Вкладка «Специфічні функції»), проте так можна виділити тільки 10% пам'яті.

Другий дієвий рада - це перенесення всіх додатків у внутрішню пам'ять замість установки на карту пам'яті. Тут виграш полягає в тому, що вбудована NAND-пам'ять смартфона за визначенням набагато швидше пам'яті SD-карти, тому запуск програми з внутрішньої пам'яті буде відбуватися швидше. Більш того, сам по собі механізм запуску додатків з SD-карти в Android реалізований з використанням шифрованих контейнерів, що також вносить додаткові витрати.

Перенісши всі додатки у внутрішню пам'ять, ми доб'ємося прискорення їх запуску. Уже встановлений на карту пам'яті софт можна легко повернути назад через настройки: «Додатки -> Сторонні -> Як вибрати програму -> Перенести на смартфон». Щоб взагалі відключити функцію встановлення нових програм на карту пам'яті, потрібні права root і емулятор терміналу. Запускаємо термінал і набираємо дві команди:

$ Su # pm setInstallLocation 1

Тепер за замовчуванням весь софт буде встановлюватися у внутрішню пам'ять. Щоб настройка зберігалася між перезавантаженнями, беремо будь-який файловий менеджер з підтримкою root, переходимо в каталог /system/etc/init.d/ і створюємо такий файл99disable-app2sd.sh:

Вдихаємо нове життя в старий андроідофон

Мобільні технології розвиваються так швидко, що ми вже не встигаємо міняти смартфони. Начебто тільки купив новий девайс, а на ринку вже з'явилися більш просунуті моделі з великою кількістю пам'яті, процесорних ядер і підтримкою NFC. І чорт би з ними, з ядрами, два, чотири, вісім, хоч шістнадцять. Нова версія ОС гальмує! Ось це справжня проблема.

Цю статтю я адресую всім тим, хто до сих пір користується смартфонами, що вийшли до появи версії Android 4.0, всім тим, кому «пощастило» купити девайс з 512 Мб оперативної пам'яті, а через місяць вийшов Ice Cream Sandwich, і довелося залишитися на 2.3 або миритися з гальмами. Загалом, для володарів доісторичних, але улюблених HTC Desire, Motorola Defy і Samsung Galaxy S.

Володарем одного з таких девайсів є і я сам. Близько трьох років тому за сьогоднішню ціну Nexus 4 я придбав смартфон Motorola Defy. Це така цегла з екраном на 3,7 дюйма, процесором 1 ГГц, 512 Мб оперативної пам'яті і захистом від бруду і води. З ним я проходив близько року і згодом замінив на Galaxy Nexus, однак віддати або продати побиту, кілька разів жінку, яка тонула і минулий зі мною через все, що тільки можна, моторолу не наважився. Смартфон дійсно був хороший, зручний, легко поміщався в кишені і витримував будь-які випробування.

Проблема була лише в тому, що за замовчуванням на Defy ставили Android 2.2, який згодом можна було оновити тільки до 2.3. Жадібна і лінива моторола обірвала всі надії власників, сказавши, що 4.0 на смартфоні не буде - замало пам'яті в звірку.

На щастя, перенести Android 4.0 на Defy почали майже відразу після відкриття початкових кодів, і на час, коли необхідність в 4.X назріла, розробники викотили хороший повноцінний порт (розповідь про те, через що вони пройшли, щоб зробити це в умовах неломающіеся залоченним завантажувача , гідний окремої статті). Але навіть вже вилизаний Android 4.X (в особі CyanogenMod 10.2) працював на старому девайсе з рук геть погано. Мізерний як на теперішній час обсяг пам'яті просто душив систему, і вона постійно трималась на межі можливостей. У порівнянні з 2.3, нова версія була просто неймовірною гальмом, користуватися яким не було ніякого бажання. Почалися пошуки будь-яких шляхів оптимізації.

По суті, все подальше оповідання і є розповідь про те, як змусити працювати Android 4.3 (CyanogenMod 10.2) на Motorola Defy або будь-якому іншому застарілому пристрої схожою конфігурації (зокрема, точно така ж начинка була у Motorola Droid і схожа у Samsung Galaxy S) . Втім, все сказане буде справедливо взагалі для будь-якого девайса на Android 4.X, починаючи від Samsung Galaxy Nexus і закінчуючи HTC One.

Отже, у нас є смартфон під управлінням Android 4.X, і він безбожно гальмує. Програми запускаються довго, Промотка відбувається із затримками, загальний FPS близько 5-10 кадрів. Проблеми тут, як і належить, дві: процесор і пам'ять.

Офіційні системні вимоги Android 4.X - це процесор на 1 ГГц і 1 Гб оперативної пам'яті. Тільки такий смартфон може пройти сертифікацію і отримати можливість продажу з передвстановленим Google Play. Все, що нижче, - немає. І ніякого запасу по пам'яті або частотам тут немає, це край, нижче якого починаються гальма. Чи не через кривизни чиїх би то не було рук, а через функціональності ОС, яка з виходом Ice Cream Sandwitch дійсно серйозно зросла (ну або можна все звалити на Java).

Скільки пам'яті споживає Android 4.X? Багато. Тільки що завантажена операційна система займає близько 350 Мб, за вирахуванням коду ядра і невивантажуваного компонентів на девайсі з 512 Мб пам'яті вільними залишаються близько 120 Мб. Середнє сучасне додаток на зразок Twitter або Instagram під час своєї роботи може зжерти до 50 Мб. Тобто оперативна пам'ять буде вичерпана вже після включення апарату і запуску пари-трійки додатків.

Так, тобі не потрібна одночасна робота декількох програм, однак Android - це не Windows, він не завершує роботу програми при його закритті, а всього лише згортає, в результаті чого софт продовжує жерти пам'ять, навіть коли ти їм не користуєшся. Щоб вісь НЕ здохла від нестачі пам'яті, в критичні моменти прокидається процес, названий Low Memory Killer, і нещадно вбиває фонові програми.

Сучасний Android-софт дуже ненажерливий

Для нас Low Memory Killer дуже важливий інструмент. Це не просто незграбна прібівалка софта, а інтелектуальний механізм, який можна переналаштувати під будь-які потреби. Алгоритм роботи цього внутрішньоядерної процесу заснований на значеннях «важливості», які присвоюються кожному працюючому в системі з додатком і можуть змінюватися у часі. Всього таких значень шість:

  • FOREGROUND_APP - видиме на екрані додаток, його вбивати не можна ні в якому разі;
  • VISIBLE_APP - працює в фоні процес, який відповідає за виведення тієї чи іншої інформації на екран (іконка в рядку стану, висувна панель, віджет і так далі), його краще теж не вбивати;
  • SECONDARY_SERVER - фоновий сервіс, такий як музичний програвач, будильник, синхронізація даних, зазвичай може бути убитий без серйозних наслідків для системи в цілому, але з втратою функціональності;
  • HIDDEN_APP - працює в тлі додаток, може бути вбито в будь-який момент, але це позначиться на його функціональності;
  • CONTENT_PROVIDER - фоновий сервіс, який відповідає за зберігання та надання будь-якої інформації (настройки, фотографії, що завгодно), але в даний момент простоює (клієнтів немає), може бути безболісно убитий;
  • EMPTY_APP - будь-який фоновий процес (додаток), який нічого не робить, перший кандидат на вбивство.

Важливість додатків кожної групи зростає від низу до верху. Тобто при нестачі пам'яті Low Memory Killer почне вбивство з останньої групи і, якщо пам'яті знову буде не вистачати, буде просуватися вище. Саме поняття «дефіцит пам'яті» у Low Memory Killer визначається шістьма порогами, по одному на кожну групу процесів. На всіх смартфонах (і прошивках) значення цих порогів різні, наприклад, на Motorola Defy з CM-10.2 на борту вони такі:

FOREGROUND_APP: 25 Мб VISIBLE_APP: 30 Мб SECONDARY_SERVER: 40 Мб HIDDEN_APP: 50 Мб CONTENT_PROVIDER: 55 Мб EMPTY_APP: 70 Мб

Вільної пам'яті менше 70 Мб - вбиваються безробітні фонові програми, менше 55 Мб - в витрата підуть Content Porovider'и і так далі. Коли пам'яті залишиться всього 25 Мб, буде вбито використовується в даний момент додаток, але ймовірність такого результату вкрай мала; після вбивства всіх інших додатків пам'ять займати буде просто нікому.

Краса всього цього механізму в тому, що він може бути переналаштувати в будь-який момент. В Android є файл / sys / module / lowmemorykiller / parameters / minfree, який можна прочитати, щоб отримати поточні значення порогів або записати в нього нові значення (через кому в 4-кілобайтних блоках), які вступлять в силу відразу після запису. Те ж саме можна зробити, використовуючи додаток Auto Memory Manager, MinFree і аналоги.

Які значення будуть придатними? Тут все залежить від способу використання смартфона. Якщо апарат тобі потрібен тільки для того, щоб дзвонити, читати пошту і твіттер, значення краще або залишити як є, або зменшити (але не рекомендую ставити нижче 50 Мб). Тоді система буде звільняти пам'ять тільки в крайньому випадку, і всі програми, якими ти часто користуєшся, залишаться в пам'яті і будуть запускатися миттєво.

Якщо ж ти звик використовувати смартфон для запуску великої кількості самих різних додатків та ігор, то значення краще підвищити (в Auto Memory Manager це можна зробити за один тап, натиснувши кнопку Aggressive). Тоді в системі завжди буде залишатися досить пам'яті для запуску відразу декількох важких додатків, і вона не буде витрачати час на звільнення оперативки.

Ще один радикальний варіант - це підвищити ліміти двох останніх груп до максимуму, в результаті чого Android фактично перетвориться в однозадачних систему, якою до недавнього часу була iOS і до сих пір залишається Windows Phone (умовно, звичайно). Іншими словами, система буде автоматично вбивати додатки відразу після їх закриття, але тільки в тому випадку, якщо софтіна не буде в цей момент нічого робити. Системні компоненти при цьому залишаться висіти в пам'яті.

Незалежно від того, який з варіантів ти вибереш, варто пограти з можливими значеннями, щоб знайти оптимальні.

Всі наші маніпуляції з Low Memory Killer не принесуть особливого приросту продуктивності, якщо пам'ять системи буде забита різними клієнтами Facebook, VKontakte, Hangouts Google+ та іншими. Зазвичай такий софт стартує відразу після завантаження системи і потрапляє або в групу SECONDARY SERVER, або в HIDDEN APP (іноді в CONTENT_PROVIDER), так що до нього механізм очищення пам'яті добирається тільки в останню чергу, а навіть якщо добирається, через деякий час софтіна перезапускается ( зазвичай це пов'язано з яким-небудь системним подією).

Тому другим пунктом в нашому плані поліпшення швидкості роботи буде позбавлення від всіх подібних додатків. Ні, реально потрібні, звичайно, краще залишити, а ті, які стоять для галочки, - видалити. Якщо ти використовуєш сторонню прошивку, типу CyanogenMod, стандартний архів Gapps (той, який прошивається після самої прошивки) краще замінити на мінімальний (goo.im/gapps/minimal). З гугловських додатків в ньому тільки сам маркет і Gmail, а Hangouts, карти і купа інших сервісів вирізані, тому вони теж не будуть стартувати під час завантаження і жерти пам'ять (будь-який з них можна встановити з маркету).

Крім Google-сервісів, досить багато пам'яті можуть от'есть сервіси і автоматично запускаються самого Android. Дивно, але в пам'яті працює Android-системи можна легко виявити купу софта, яким ти взагалі не користуєшся. Це може бути диктофон, калькулятор, «Чорна діра» (на жаль, це всього лише живі шпалери), а також сервіси голосового набору (набору номера, не пошуку), календаря і синтезатора мови. Причому якщо перші просто були запущені під час завантаження і досить швидко витісняються Low Memory Killer, то другі - це повноцінні сервіси, які висять в пам'яті протягом усього життя смартфона.

Багато з цих сервісів можна відключити через стандартний диспетчер додатків, навіть не маючи root. Досить перейти в «Налаштування -> Додатки -> Все», тапнуть по потрібної софтина і натиснути кнопку «Відключити» (ну або «Видалити», а потім «Відключити», якщо були встановлені оновлення). Ось список програм, які, з точки зору інженерів Google, можна безболісно відключати:

  • Голосовий набір (com.android.voicedialer)
  • Диктофон (com.android.soundrecorder)
  • Календар (com.android.calendar)
  • Калькулятор (com.android.calculator)
  • Оновлення CyanogenMod (com.cyanogenmod.updater)
  • Пам'ять календаря (com.android.providers.calendar)
  • Синхронізація закладок (com.google.android.syncupdaters.bookmarks)
  • Синхронізація календаря (com.google.android.syncupdaters.calendar)
  • Стандартні заставки (com.android.dreams.basic)
  • Фонові малюнки (com.android.musicvis і com.android.magicsmoke)
  • Чорна діра (com.android.galaxy4)
  • com.android.wallpaper.holospiral
  • Email (com.android.email)
  • Picasa Uploader (com.google.android.apps.uploader)
  • Pico TTS (com.svox.pico)

В дужках я привів системне ім'я додатка так, щоб у разі потреби ти міг не просто відключити, але і видалити його (а навіщо даремно витрачати місце?). Всі системні програми зберігаються в каталозі / system / app і можуть бути видалені за допомогою будь-якого файлового менеджера з підтримкою root.

За замовчуванням система не дозволить відключити деякі вельми ненажерливі, але тим не менш важливі сервіси. До таких відносяться, наприклад, «Телефон» (це додаток входить в групу FOREGROUND_APP і тому завжди висить в пам'яті), «Еквалайзер» (тільки в CyanogenMod і похідних), Google Backup Transport (~ 45 Мб), відповідальний за бекап встановленого софта в хмарі Google (відновлюється після переустановлення прошивки, наприклад), «Меню SIM-карти» і Fused Location (~ 45 Мб), сервіс, який збирає дані про місцезнаходження з усіх можливих джерел (мережа, IP-адреса, барометр, GPS, компас) і на їх основі обчислює точне положення смартфона на карті. Додатки типу навігаторів працюватимуть і без нього, але з меншою точністю.

Позбутися від усіх цих процесів допоможе root-додаток Bloat Freezer . Воно дозволяє відключити не тільки додатки, дозволені до відключення самою системою, а й взагалі будь-які, в тому числі головний системний процес android.process.acore. Крім наведених вище пожирачів пам'яті, безболісно можна прибити ще таку кількість системних додатків, що мені буде простіше привести список тих, які відключати не можна. Ось вони:

  • Apollo (CyanogenMod)
  • cLock (CyanogenMod)
  • Google Services Framework
  • Launcher (Trebuchet в CyanogenMod)
  • акаунти Google
  • браузер
  • Галерея
  • Графічний інтерфейс системи
  • Диспетчер завантаження
  • завантаження
  • клавіатура Google
  • Контакти
  • Майстер доступу до пакетів
  • Місцезнаходження мережі
  • налаштування
  • Пам'ять номерів / SMS / MMS
  • параметри розкладки
  • Програма установки пакета
  • Програма установки сертифіката
  • Синхронізація контактів Google
  • повідомлення
  • Засіб перегляду HTML
  • Телефон
  • Файли (CyanogenMod)
  • Ліхтарик (CyanogenMod)
  • сховище контактів
  • сховище мультимедіа
  • сховище налаштувань
  • Годинники

Все інше можна безболісно виключити (ну або залишити ті, які ще можуть стати в нагоді, наприклад FM-радіо). Коли все буде зроблено, відкриваємо будь-який менеджер процесів, прибиваємо всі призначені для користувача процеси і дивимося, скільки пам'яті зайнято. У моєму випадку 200 Мб. Дуже навіть непогано в порівнянні з початковими 350 Мб.

Дуже навіть непогано в порівнянні з початковими 350 Мб

Відключаємо даремний голосовий набір Відключаємо даремний голосовий набір   Відключивши Fused Location і Google Backup Transport, ми звільнимо 90 Мб пам'яті   Відключаємо системні сервіси за допомогою Bloat Freezer Відключивши Fused Location і Google Backup Transport, ми звільнимо 90 Мб пам'яті Відключаємо системні сервіси за допомогою Bloat Freezer

Після чищення система займає менше 200 Мб!

Видаляти або відключати всі додатки нам, звичайно, не можна, однак про найбільш ненажерливих з них подбати потрібно. Зазвичай софт для Android (та й для будь-яких інших ОС) страждає від двох основних проблем ожиріння: він або з'їдає неймовірні кількості оперативної пам'яті під час своєї роботи (наприклад, твіттер-клієнт може продовжувати зберігати в пам'яті вже давно прочитані повідомлення і переглянуті зображення), або постійно щось робить у фоновому режимі, через що смартфон стає менш чуйним, а час його роботи від батареї падає. В особливо тяжких випадках обидві хвороби комбінуються в одній софтина.

Що ми можемо вдіяти? Звичайно ж, видалити подібний софт, ну або як мінімум замінити його аналогом. Якщо зробити це неможливо, можна вдатися ще до двох хитрощів. Перше - це примусове вбивство додатки. Зазвичай програма починає товстіти під час роботи, а відразу після запуску займає не дуже багато пам'яті. Вбивати софт не дуже правильна ідея, але якщо вже ти зібрався це робити, то краще скористатися для цього вбудованою функцією CyanogenMod і похідних: вбивство довгим утриманням кнопки «Назад» ( «Налаштування -> Для розробників -> Закриття програми»).

Друге, що ми можемо, - це відучити ненажерливі додатки що-небудь робити в тлі. Для цього є чудовий додаток Greenify (вимагає root), яке дозволяє заморозити вибрані додатки так, щоб вони взагалі не могли працювати, поки не видно на екрані. Запускаємо Greenify, натискаємо «+» і бачимо список працюючого софта, розсортоване за ступенем ненажерливості, Тапа по потрібного додатка і все, відтепер в тлі воно завжди буде спати.

Деякі програми нема чого працювати в фоні

Що ще можна зробити для прискорення роботи смартфона і очищення його пам'яті? В цілому більше нічого. Є, звичайно, ще такі зовсім радикальні методи, як заміна важкого софта на прості легкі аналоги, хакинг софта з метою вирізання ресурсів, але все це погано узгоджується з ідеєю мати повнофункціональний смартфон. Простіше тоді поставити Android 2.3 (CyanogenMod 7) і взагалі забути про проблеми продуктивності.

Проте є ще два дієвих ради. Перший - це активація технології zRam, яка дозволяє виділити невеликий фрагмент оперативної пам'яті і створити з нього віртуальний своп-розділ із стисненням даних. В результаті загальний обсяг оперативної пам'яті віртуально збільшиться, вивільнивши зайвих 50-100 Мб.

Проблема з активацією zRam тільки в тому, що сама технологія є далеко не в кожному ядрі. Більшість кастомних ядер, а також ядра прошивок CyanogenMod, Paranoid Android і AOKP зазвичай включає підтримку zRam, але це не завжди вірно. Стічні прошивки зазвичай поставляються з ядрами без zRam. У CyanogenMod і похідних активувати Z-RAM можна через меню «Налаштування -> Продуктивність -> Управління пам'яттю -> Використовувати zRam». За замовчуванням система виділяє під стислий своп 18% пам'яті, але при необхідності значення можна збільшити до 26%. В інших прошивках zRam активується за допомогою програми Trickster Mod (Вкладка «Специфічні функції»), проте так можна виділити тільки 10% пам'яті.

Другий дієвий рада - це перенесення всіх додатків у внутрішню пам'ять замість установки на карту пам'яті. Тут виграш полягає в тому, що вбудована NAND-пам'ять смартфона за визначенням набагато швидше пам'яті SD-карти, тому запуск програми з внутрішньої пам'яті буде відбуватися швидше. Більш того, сам по собі механізм запуску додатків з SD-карти в Android реалізований з використанням шифрованих контейнерів, що також вносить додаткові витрати.

Перенісши всі додатки у внутрішню пам'ять, ми доб'ємося прискорення їх запуску. Уже встановлений на карту пам'яті софт можна легко повернути назад через настройки: «Додатки -> Сторонні -> Як вибрати програму -> Перенести на смартфон». Щоб взагалі відключити функцію встановлення нових програм на карту пам'яті, потрібні права root і емулятор терміналу. Запускаємо термінал і набираємо дві команди:

$ Su # pm setInstallLocation 1

Тепер за замовчуванням весь софт буде встановлюватися у внутрішню пам'ять. Щоб настройка зберігалася між перезавантаженнями, беремо будь-який файловий менеджер з підтримкою root, переходимо в каталог /system/etc/init.d/ і створюємо такий файл99disable-app2sd.sh:

Вдихаємо нове життя в старий андроідофон

Мобільні технології розвиваються так швидко, що ми вже не встигаємо міняти смартфони. Начебто тільки купив новий девайс, а на ринку вже з'явилися більш просунуті моделі з великою кількістю пам'яті, процесорних ядер і підтримкою NFC. І чорт би з ними, з ядрами, два, чотири, вісім, хоч шістнадцять. Нова версія ОС гальмує! Ось це справжня проблема.

Цю статтю я адресую всім тим, хто до сих пір користується смартфонами, що вийшли до появи версії Android 4.0, всім тим, кому «пощастило» купити девайс з 512 Мб оперативної пам'яті, а через місяць вийшов Ice Cream Sandwich, і довелося залишитися на 2.3 або миритися з гальмами. Загалом, для володарів доісторичних, але улюблених HTC Desire, Motorola Defy і Samsung Galaxy S.

Володарем одного з таких девайсів є і я сам. Близько трьох років тому за сьогоднішню ціну Nexus 4 я придбав смартфон Motorola Defy. Це така цегла з екраном на 3,7 дюйма, процесором 1 ГГц, 512 Мб оперативної пам'яті і захистом від бруду і води. З ним я проходив близько року і згодом замінив на Galaxy Nexus, однак віддати або продати побиту, кілька разів жінку, яка тонула і минулий зі мною через все, що тільки можна, моторолу не наважився. Смартфон дійсно був хороший, зручний, легко поміщався в кишені і витримував будь-які випробування.

Проблема була лише в тому, що за замовчуванням на Defy ставили Android 2.2, який згодом можна було оновити тільки до 2.3. Жадібна і лінива моторола обірвала всі надії власників, сказавши, що 4.0 на смартфоні не буде - замало пам'яті в звірку.

На щастя, перенести Android 4.0 на Defy почали майже відразу після відкриття початкових кодів, і на час, коли необхідність в 4.X назріла, розробники викотили хороший повноцінний порт (розповідь про те, через що вони пройшли, щоб зробити це в умовах неломающіеся залоченним завантажувача , гідний окремої статті). Але навіть вже вилизаний Android 4.X (в особі CyanogenMod 10.2) працював на старому девайсе з рук геть погано. Мізерний як на теперішній час обсяг пам'яті просто душив систему, і вона постійно трималась на межі можливостей. У порівнянні з 2.3, нова версія була просто неймовірною гальмом, користуватися яким не було ніякого бажання. Почалися пошуки будь-яких шляхів оптимізації.

По суті, все подальше оповідання і є розповідь про те, як змусити працювати Android 4.3 (CyanogenMod 10.2) на Motorola Defy або будь-якому іншому застарілому пристрої схожою конфігурації (зокрема, точно така ж начинка була у Motorola Droid і схожа у Samsung Galaxy S) . Втім, все сказане буде справедливо взагалі для будь-якого девайса на Android 4.X, починаючи від Samsung Galaxy Nexus і закінчуючи HTC One.

Отже, у нас є смартфон під управлінням Android 4.X, і він безбожно гальмує. Програми запускаються довго, Промотка відбувається із затримками, загальний FPS близько 5-10 кадрів. Проблеми тут, як і належить, дві: процесор і пам'ять.

Офіційні системні вимоги Android 4.X - це процесор на 1 ГГц і 1 Гб оперативної пам'яті. Тільки такий смартфон може пройти сертифікацію і отримати можливість продажу з передвстановленим Google Play. Все, що нижче, - немає. І ніякого запасу по пам'яті або частотам тут немає, це край, нижче якого починаються гальма. Чи не через кривизни чиїх би то не було рук, а через функціональності ОС, яка з виходом Ice Cream Sandwitch дійсно серйозно зросла (ну або можна все звалити на Java).

Скільки пам'яті споживає Android 4.X? Багато. Тільки що завантажена операційна система займає близько 350 Мб, за вирахуванням коду ядра і невивантажуваного компонентів на девайсі з 512 Мб пам'яті вільними залишаються близько 120 Мб. Середнє сучасне додаток на зразок Twitter або Instagram під час своєї роботи може зжерти до 50 Мб. Тобто оперативна пам'ять буде вичерпана вже після включення апарату і запуску пари-трійки додатків.

Так, тобі не потрібна одночасна робота декількох програм, однак Android - це не Windows, він не завершує роботу програми при його закритті, а всього лише згортає, в результаті чого софт продовжує жерти пам'ять, навіть коли ти їм не користуєшся. Щоб вісь НЕ здохла від нестачі пам'яті, в критичні моменти прокидається процес, названий Low Memory Killer, і нещадно вбиває фонові програми.

Сучасний Android-софт дуже ненажерливий

Для нас Low Memory Killer дуже важливий інструмент. Це не просто незграбна прібівалка софта, а інтелектуальний механізм, який можна переналаштувати під будь-які потреби. Алгоритм роботи цього внутрішньоядерної процесу заснований на значеннях «важливості», які присвоюються кожному працюючому в системі з додатком і можуть змінюватися у часі. Всього таких значень шість:

  • FOREGROUND_APP - видиме на екрані додаток, його вбивати не можна ні в якому разі;
  • VISIBLE_APP - працює в фоні процес, який відповідає за виведення тієї чи іншої інформації на екран (іконка в рядку стану, висувна панель, віджет і так далі), його краще теж не вбивати;
  • SECONDARY_SERVER - фоновий сервіс, такий як музичний програвач, будильник, синхронізація даних, зазвичай може бути убитий без серйозних наслідків для системи в цілому, але з втратою функціональності;
  • HIDDEN_APP - працює в тлі додаток, може бути вбито в будь-який момент, але це позначиться на його функціональності;
  • CONTENT_PROVIDER - фоновий сервіс, який відповідає за зберігання та надання будь-якої інформації (настройки, фотографії, що завгодно), але в даний момент простоює (клієнтів немає), може бути безболісно убитий;
  • EMPTY_APP - будь-який фоновий процес (додаток), який нічого не робить, перший кандидат на вбивство.

Важливість додатків кожної групи зростає від низу до верху. Тобто при нестачі пам'яті Low Memory Killer почне вбивство з останньої групи і, якщо пам'яті знову буде не вистачати, буде просуватися вище. Саме поняття «дефіцит пам'яті» у Low Memory Killer визначається шістьма порогами, по одному на кожну групу процесів. На всіх смартфонах (і прошивках) значення цих порогів різні, наприклад, на Motorola Defy з CM-10.2 на борту вони такі:

FOREGROUND_APP: 25 Мб VISIBLE_APP: 30 Мб SECONDARY_SERVER: 40 Мб HIDDEN_APP: 50 Мб CONTENT_PROVIDER: 55 Мб EMPTY_APP: 70 Мб

Вільної пам'яті менше 70 Мб - вбиваються безробітні фонові програми, менше 55 Мб - в витрата підуть Content Porovider'и і так далі. Коли пам'яті залишиться всього 25 Мб, буде вбито використовується в даний момент додаток, але ймовірність такого результату вкрай мала; після вбивства всіх інших додатків пам'ять займати буде просто нікому.

Краса всього цього механізму в тому, що він може бути переналаштувати в будь-який момент. В Android є файл / sys / module / lowmemorykiller / parameters / minfree, який можна прочитати, щоб отримати поточні значення порогів або записати в нього нові значення (через кому в 4-кілобайтних блоках), які вступлять в силу відразу після запису. Те ж саме можна зробити, використовуючи додаток Auto Memory Manager, MinFree і аналоги.

Які значення будуть придатними? Тут все залежить від способу використання смартфона. Якщо апарат тобі потрібен тільки для того, щоб дзвонити, читати пошту і твіттер, значення краще або залишити як є, або зменшити (але не рекомендую ставити нижче 50 Мб). Тоді система буде звільняти пам'ять тільки в крайньому випадку, і всі програми, якими ти часто користуєшся, залишаться в пам'яті і будуть запускатися миттєво.

Якщо ж ти звик використовувати смартфон для запуску великої кількості самих різних додатків та ігор, то значення краще підвищити (в Auto Memory Manager це можна зробити за один тап, натиснувши кнопку Aggressive). Тоді в системі завжди буде залишатися досить пам'яті для запуску відразу декількох важких додатків, і вона не буде витрачати час на звільнення оперативки.

Ще один радикальний варіант - це підвищити ліміти двох останніх груп до максимуму, в результаті чого Android фактично перетвориться в однозадачних систему, якою до недавнього часу була iOS і до сих пір залишається Windows Phone (умовно, звичайно). Іншими словами, система буде автоматично вбивати додатки відразу після їх закриття, але тільки в тому випадку, якщо софтіна не буде в цей момент нічого робити. Системні компоненти при цьому залишаться висіти в пам'яті.

Незалежно від того, який з варіантів ти вибереш, варто пограти з можливими значеннями, щоб знайти оптимальні.

Всі наші маніпуляції з Low Memory Killer не принесуть особливого приросту продуктивності, якщо пам'ять системи буде забита різними клієнтами Facebook, VKontakte, Hangouts Google+ та іншими. Зазвичай такий софт стартує відразу після завантаження системи і потрапляє або в групу SECONDARY SERVER, або в HIDDEN APP (іноді в CONTENT_PROVIDER), так що до нього механізм очищення пам'яті добирається тільки в останню чергу, а навіть якщо добирається, через деякий час софтіна перезапускается ( зазвичай це пов'язано з яким-небудь системним подією).

Тому другим пунктом в нашому плані поліпшення швидкості роботи буде позбавлення від всіх подібних додатків. Ні, реально потрібні, звичайно, краще залишити, а ті, які стоять для галочки, - видалити. Якщо ти використовуєш сторонню прошивку, типу CyanogenMod, стандартний архів Gapps (той, який прошивається після самої прошивки) краще замінити на мінімальний (goo.im/gapps/minimal). З гугловських додатків в ньому тільки сам маркет і Gmail, а Hangouts, карти і купа інших сервісів вирізані, тому вони теж не будуть стартувати під час завантаження і жерти пам'ять (будь-який з них можна встановити з маркету).

Крім Google-сервісів, досить багато пам'яті можуть от'есть сервіси і автоматично запускаються самого Android. Дивно, але в пам'яті працює Android-системи можна легко виявити купу софта, яким ти взагалі не користуєшся. Це може бути диктофон, калькулятор, «Чорна діра» (на жаль, це всього лише живі шпалери), а також сервіси голосового набору (набору номера, не пошуку), календаря і синтезатора мови. Причому якщо перші просто були запущені під час завантаження і досить швидко витісняються Low Memory Killer, то другі - це повноцінні сервіси, які висять в пам'яті протягом усього життя смартфона.

Багато з цих сервісів можна відключити через стандартний диспетчер додатків, навіть не маючи root. Досить перейти в «Налаштування -> Додатки -> Все», тапнуть по потрібної софтина і натиснути кнопку «Відключити» (ну або «Видалити», а потім «Відключити», якщо були встановлені оновлення). Ось список програм, які, з точки зору інженерів Google, можна безболісно відключати:

  • Голосовий набір (com.android.voicedialer)
  • Диктофон (com.android.soundrecorder)
  • Календар (com.android.calendar)
  • Калькулятор (com.android.calculator)
  • Оновлення CyanogenMod (com.cyanogenmod.updater)
  • Пам'ять календаря (com.android.providers.calendar)
  • Синхронізація закладок (com.google.android.syncupdaters.bookmarks)
  • Синхронізація календаря (com.google.android.syncupdaters.calendar)
  • Стандартні заставки (com.android.dreams.basic)
  • Фонові малюнки (com.android.musicvis і com.android.magicsmoke)
  • Чорна діра (com.android.galaxy4)
  • com.android.wallpaper.holospiral
  • Email (com.android.email)
  • Picasa Uploader (com.google.android.apps.uploader)
  • Pico TTS (com.svox.pico)

В дужках я привів системне ім'я додатка так, щоб у разі потреби ти міг не просто відключити, але і видалити його (а навіщо даремно витрачати місце?). Всі системні програми зберігаються в каталозі / system / app і можуть бути видалені за допомогою будь-якого файлового менеджера з підтримкою root.

За замовчуванням система не дозволить відключити деякі вельми ненажерливі, але тим не менш важливі сервіси. До таких відносяться, наприклад, «Телефон» (це додаток входить в групу FOREGROUND_APP і тому завжди висить в пам'яті), «Еквалайзер» (тільки в CyanogenMod і похідних), Google Backup Transport (~ 45 Мб), відповідальний за бекап встановленого софта в хмарі Google (відновлюється після переустановлення прошивки, наприклад), «Меню SIM-карти» і Fused Location (~ 45 Мб), сервіс, який збирає дані про місцезнаходження з усіх можливих джерел (мережа, IP-адреса, барометр, GPS, компас) і на їх основі обчислює точне положення смартфона на карті. Додатки типу навігаторів працюватимуть і без нього, але з меншою точністю.

Позбутися від усіх цих процесів допоможе root-додаток Bloat Freezer . Воно дозволяє відключити не тільки додатки, дозволені до відключення самою системою, а й взагалі будь-які, в тому числі головний системний процес android.process.acore. Крім наведених вище пожирачів пам'яті, безболісно можна прибити ще таку кількість системних додатків, що мені буде простіше привести список тих, які відключати не можна. Ось вони:

  • Apollo (CyanogenMod)
  • cLock (CyanogenMod)
  • Google Services Framework
  • Launcher (Trebuchet в CyanogenMod)
  • акаунти Google
  • браузер
  • Галерея
  • Графічний інтерфейс системи
  • Диспетчер завантаження
  • завантаження
  • клавіатура Google
  • Контакти
  • Майстер доступу до пакетів
  • Місцезнаходження мережі
  • налаштування
  • Пам'ять номерів / SMS / MMS
  • параметри розкладки
  • Програма установки пакета
  • Програма установки сертифіката
  • Синхронізація контактів Google
  • повідомлення
  • Засіб перегляду HTML
  • Телефон
  • Файли (CyanogenMod)
  • Ліхтарик (CyanogenMod)
  • сховище контактів
  • сховище мультимедіа
  • сховище налаштувань
  • Годинники

Все інше можна безболісно виключити (ну або залишити ті, які ще можуть стати в нагоді, наприклад FM-радіо). Коли все буде зроблено, відкриваємо будь-який менеджер процесів, прибиваємо всі призначені для користувача процеси і дивимося, скільки пам'яті зайнято. У моєму випадку 200 Мб. Дуже навіть непогано в порівнянні з початковими 350 Мб.

Дуже навіть непогано в порівнянні з початковими 350 Мб

Відключаємо даремний голосовий набір Відключаємо даремний голосовий набір   Відключивши Fused Location і Google Backup Transport, ми звільнимо 90 Мб пам'яті   Відключаємо системні сервіси за допомогою Bloat Freezer Відключивши Fused Location і Google Backup Transport, ми звільнимо 90 Мб пам'яті Відключаємо системні сервіси за допомогою Bloat Freezer

Після чищення система займає менше 200 Мб!

Видаляти або відключати всі додатки нам, звичайно, не можна, однак про найбільш ненажерливих з них подбати потрібно. Зазвичай софт для Android (та й для будь-яких інших ОС) страждає від двох основних проблем ожиріння: він або з'їдає неймовірні кількості оперативної пам'яті під час своєї роботи (наприклад, твіттер-клієнт може продовжувати зберігати в пам'яті вже давно прочитані повідомлення і переглянуті зображення), або постійно щось робить у фоновому режимі, через що смартфон стає менш чуйним, а час його роботи від батареї падає. В особливо тяжких випадках обидві хвороби комбінуються в одній софтина.

Що ми можемо вдіяти? Звичайно ж, видалити подібний софт, ну або як мінімум замінити його аналогом. Якщо зробити це неможливо, можна вдатися ще до двох хитрощів. Перше - це примусове вбивство додатки. Зазвичай програма починає товстіти під час роботи, а відразу після запуску займає не дуже багато пам'яті. Вбивати софт не дуже правильна ідея, але якщо вже ти зібрався це робити, то краще скористатися для цього вбудованою функцією CyanogenMod і похідних: вбивство довгим утриманням кнопки «Назад» ( «Налаштування -> Для розробників -> Закриття програми»).

Друге, що ми можемо, - це відучити ненажерливі додатки що-небудь робити в тлі. Для цього є чудовий додаток Greenify (вимагає root), яке дозволяє заморозити вибрані додатки так, щоб вони взагалі не могли працювати, поки не видно на екрані. Запускаємо Greenify, натискаємо «+» і бачимо список працюючого софта, розсортоване за ступенем ненажерливості, Тапа по потрібного додатка і все, відтепер в тлі воно завжди буде спати.

Деякі програми нема чого працювати в фоні

Що ще можна зробити для прискорення роботи смартфона і очищення його пам'яті? В цілому більше нічого. Є, звичайно, ще такі зовсім радикальні методи, як заміна важкого софта на прості легкі аналоги, хакинг софта з метою вирізання ресурсів, але все це погано узгоджується з ідеєю мати повнофункціональний смартфон. Простіше тоді поставити Android 2.3 (CyanogenMod 7) і взагалі забути про проблеми продуктивності.

Проте є ще два дієвих ради. Перший - це активація технології zRam, яка дозволяє виділити невеликий фрагмент оперативної пам'яті і створити з нього віртуальний своп-розділ із стисненням даних. В результаті загальний обсяг оперативної пам'яті віртуально збільшиться, вивільнивши зайвих 50-100 Мб.

Проблема з активацією zRam тільки в тому, що сама технологія є далеко не в кожному ядрі. Більшість кастомних ядер, а також ядра прошивок CyanogenMod, Paranoid Android і AOKP зазвичай включає підтримку zRam, але це не завжди вірно. Стічні прошивки зазвичай поставляються з ядрами без zRam. У CyanogenMod і похідних активувати Z-RAM можна через меню «Налаштування -> Продуктивність -> Управління пам'яттю -> Використовувати zRam». За замовчуванням система виділяє під стислий своп 18% пам'яті, але при необхідності значення можна збільшити до 26%. В інших прошивках zRam активується за допомогою програми Trickster Mod (Вкладка «Специфічні функції»), проте так можна виділити тільки 10% пам'яті.

Другий дієвий рада - це перенесення всіх додатків у внутрішню пам'ять замість установки на карту пам'яті. Тут виграш полягає в тому, що вбудована NAND-пам'ять смартфона за визначенням набагато швидше пам'яті SD-карти, тому запуск програми з внутрішньої пам'яті буде відбуватися швидше. Більш того, сам по собі механізм запуску додатків з SD-карти в Android реалізований з використанням шифрованих контейнерів, що також вносить додаткові витрати.

Перенісши всі додатки у внутрішню пам'ять, ми доб'ємося прискорення їх запуску. Уже встановлений на карту пам'яті софт можна легко повернути назад через настройки: «Додатки -> Сторонні -> Як вибрати програму -> Перенести на смартфон». Щоб взагалі відключити функцію встановлення нових програм на карту пам'яті, потрібні права root і емулятор терміналу. Запускаємо термінал і набираємо дві команди:

$ Su # pm setInstallLocation 1

Тепер за замовчуванням весь софт буде встановлюватися у внутрішню пам'ять. Щоб настройка зберігалася між перезавантаженнями, беремо будь-який файловий менеджер з підтримкою root, переходимо в каталог /system/etc/init.d/ і створюємо такий файл99disable-app2sd.sh:

Вдихаємо нове життя в старий андроідофон

Мобільні технології розвиваються так швидко, що ми вже не встигаємо міняти смартфони. Начебто тільки купив новий девайс, а на ринку вже з'явилися більш просунуті моделі з великою кількістю пам'яті, процесорних ядер і підтримкою NFC. І чорт би з ними, з ядрами, два, чотири, вісім, хоч шістнадцять. Нова версія ОС гальмує! Ось це справжня проблема.

Цю статтю я адресую всім тим, хто до сих пір користується смартфонами, що вийшли до появи версії Android 4.0, всім тим, кому «пощастило» купити девайс з 512 Мб оперативної пам'яті, а через місяць вийшов Ice Cream Sandwich, і довелося залишитися на 2.3 або миритися з гальмами. Загалом, для володарів доісторичних, але улюблених HTC Desire, Motorola Defy і Samsung Galaxy S.

Володарем одного з таких девайсів є і я сам. Близько трьох років тому за сьогоднішню ціну Nexus 4 я придбав смартфон Motorola Defy. Це така цегла з екраном на 3,7 дюйма, процесором 1 ГГц, 512 Мб оперативної пам'яті і захистом від бруду і води. З ним я проходив близько року і згодом замінив на Galaxy Nexus, однак віддати або продати побиту, кілька разів жінку, яка тонула і минулий зі мною через все, що тільки можна, моторолу не наважився. Смартфон дійсно був хороший, зручний, легко поміщався в кишені і витримував будь-які випробування.

Проблема була лише в тому, що за замовчуванням на Defy ставили Android 2.2, який згодом можна було оновити тільки до 2.3. Жадібна і лінива моторола обірвала всі надії власників, сказавши, що 4.0 на смартфоні не буде - замало пам'яті в звірку.

На щастя, перенести Android 4.0 на Defy почали майже відразу після відкриття початкових кодів, і на час, коли необхідність в 4.X назріла, розробники викотили хороший повноцінний порт (розповідь про те, через що вони пройшли, щоб зробити це в умовах неломающіеся залоченним завантажувача , гідний окремої статті). Але навіть вже вилизаний Android 4.X (в особі CyanogenMod 10.2) працював на старому девайсе з рук геть погано. Мізерний як на теперішній час обсяг пам'яті просто душив систему, і вона постійно трималась на межі можливостей. У порівнянні з 2.3, нова версія була просто неймовірною гальмом, користуватися яким не було ніякого бажання. Почалися пошуки будь-яких шляхів оптимізації.

По суті, все подальше оповідання і є розповідь про те, як змусити працювати Android 4.3 (CyanogenMod 10.2) на Motorola Defy або будь-якому іншому застарілому пристрої схожою конфігурації (зокрема, точно така ж начинка була у Motorola Droid і схожа у Samsung Galaxy S) . Втім, все сказане буде справедливо взагалі для будь-якого девайса на Android 4.X, починаючи від Samsung Galaxy Nexus і закінчуючи HTC One.

Отже, у нас є смартфон під управлінням Android 4.X, і він безбожно гальмує. Програми запускаються довго, Промотка відбувається із затримками, загальний FPS близько 5-10 кадрів. Проблеми тут, як і належить, дві: процесор і пам'ять.

Офіційні системні вимоги Android 4.X - це процесор на 1 ГГц і 1 Гб оперативної пам'яті. Тільки такий смартфон може пройти сертифікацію і отримати можливість продажу з передвстановленим Google Play. Все, що нижче, - немає. І ніякого запасу по пам'яті або частотам тут немає, це край, нижче якого починаються гальма. Чи не через кривизни чиїх би то не було рук, а через функціональності ОС, яка з виходом Ice Cream Sandwitch дійсно серйозно зросла (ну або можна все звалити на Java).

Скільки пам'яті споживає Android 4.X? Багато. Тільки що завантажена операційна система займає близько 350 Мб, за вирахуванням коду ядра і невивантажуваного компонентів на девайсі з 512 Мб пам'яті вільними залишаються близько 120 Мб. Середнє сучасне додаток на зразок Twitter або Instagram під час своєї роботи може зжерти до 50 Мб. Тобто оперативна пам'ять буде вичерпана вже після включення апарату і запуску пари-трійки додатків.

Так, тобі не потрібна одночасна робота декількох програм, однак Android - це не Windows, він не завершує роботу програми при його закритті, а всього лише згортає, в результаті чого софт продовжує жерти пам'ять, навіть коли ти їм не користуєшся. Щоб вісь НЕ здохла від нестачі пам'яті, в критичні моменти прокидається процес, названий Low Memory Killer, і нещадно вбиває фонові програми.

Сучасний Android-софт дуже ненажерливий

Для нас Low Memory Killer дуже важливий інструмент. Це не просто незграбна прібівалка софта, а інтелектуальний механізм, який можна переналаштувати під будь-які потреби. Алгоритм роботи цього внутрішньоядерної процесу заснований на значеннях «важливості», які присвоюються кожному працюючому в системі з додатком і можуть змінюватися у часі. Всього таких значень шість:

  • FOREGROUND_APP - видиме на екрані додаток, його вбивати не можна ні в якому разі;
  • VISIBLE_APP - працює в фоні процес, який відповідає за виведення тієї чи іншої інформації на екран (іконка в рядку стану, висувна панель, віджет і так далі), його краще теж не вбивати;
  • SECONDARY_SERVER - фоновий сервіс, такий як музичний програвач, будильник, синхронізація даних, зазвичай може бути убитий без серйозних наслідків для системи в цілому, але з втратою функціональності;
  • HIDDEN_APP - працює в тлі додаток, може бути вбито в будь-який момент, але це позначиться на його функціональності;
  • CONTENT_PROVIDER - фоновий сервіс, який відповідає за зберігання та надання будь-якої інформації (настройки, фотографії, що завгодно), але в даний момент простоює (клієнтів немає), може бути безболісно убитий;
  • EMPTY_APP - будь-який фоновий процес (додаток), який нічого не робить, перший кандидат на вбивство.

Важливість додатків кожної групи зростає від низу до верху. Тобто при нестачі пам'яті Low Memory Killer почне вбивство з останньої групи і, якщо пам'яті знову буде не вистачати, буде просуватися вище. Саме поняття «дефіцит пам'яті» у Low Memory Killer визначається шістьма порогами, по одному на кожну групу процесів. На всіх смартфонах (і прошивках) значення цих порогів різні, наприклад, на Motorola Defy з CM-10.2 на борту вони такі:

FOREGROUND_APP: 25 Мб VISIBLE_APP: 30 Мб SECONDARY_SERVER: 40 Мб HIDDEN_APP: 50 Мб CONTENT_PROVIDER: 55 Мб EMPTY_APP: 70 Мб

Вільної пам'яті менше 70 Мб - вбиваються безробітні фонові програми, менше 55 Мб - в витрата підуть Content Porovider'и і так далі. Коли пам'яті залишиться всього 25 Мб, буде вбито використовується в даний момент додаток, але ймовірність такого результату вкрай мала; після вбивства всіх інших додатків пам'ять займати буде просто нікому.

Краса всього цього механізму в тому, що він може бути переналаштувати в будь-який момент. В Android є файл / sys / module / lowmemorykiller / parameters / minfree, який можна прочитати, щоб отримати поточні значення порогів або записати в нього нові значення (через кому в 4-кілобайтних блоках), які вступлять в силу відразу після запису. Те ж саме можна зробити, використовуючи додаток Auto Memory Manager, MinFree і аналоги.

Які значення будуть придатними? Тут все залежить від способу використання смартфона. Якщо апарат тобі потрібен тільки для того, щоб дзвонити, читати пошту і твіттер, значення краще або залишити як є, або зменшити (але не рекомендую ставити нижче 50 Мб). Тоді система буде звільняти пам'ять тільки в крайньому випадку, і всі програми, якими ти часто користуєшся, залишаться в пам'яті і будуть запускатися миттєво.

Якщо ж ти звик використовувати смартфон для запуску великої кількості самих різних додатків та ігор, то значення краще підвищити (в Auto Memory Manager це можна зробити за один тап, натиснувши кнопку Aggressive). Тоді в системі завжди буде залишатися досить пам'яті для запуску відразу декількох важких додатків, і вона не буде витрачати час на звільнення оперативки.

Ще один радикальний варіант - це підвищити ліміти двох останніх груп до максимуму, в результаті чого Android фактично перетвориться в однозадачних систему, якою до недавнього часу була iOS і до сих пір залишається Windows Phone (умовно, звичайно). Іншими словами, система буде автоматично вбивати додатки відразу після їх закриття, але тільки в тому випадку, якщо софтіна не буде в цей момент нічого робити. Системні компоненти при цьому залишаться висіти в пам'яті.

Незалежно від того, який з варіантів ти вибереш, варто пограти з можливими значеннями, щоб знайти оптимальні.

Всі наші маніпуляції з Low Memory Killer не принесуть особливого приросту продуктивності, якщо пам'ять системи буде забита різними клієнтами Facebook, VKontakte, Hangouts Google+ та іншими. Зазвичай такий софт стартує відразу після завантаження системи і потрапляє або в групу SECONDARY SERVER, або в HIDDEN APP (іноді в CONTENT_PROVIDER), так що до нього механізм очищення пам'яті добирається тільки в останню чергу, а навіть якщо добирається, через деякий час софтіна перезапускается ( зазвичай це пов'язано з яким-небудь системним подією).

Тому другим пунктом в нашому плані поліпшення швидкості роботи буде позбавлення від всіх подібних додатків. Ні, реально потрібні, звичайно, краще залишити, а ті, які стоять для галочки, - видалити. Якщо ти використовуєш сторонню прошивку, типу CyanogenMod, стандартний архів Gapps (той, який прошивається після самої прошивки) краще замінити на мінімальний (goo.im/gapps/minimal). З гугловських додатків в ньому тільки сам маркет і Gmail, а Hangouts, карти і купа інших сервісів вирізані, тому вони теж не будуть стартувати під час завантаження і жерти пам'ять (будь-який з них можна встановити з маркету).

Крім Google-сервісів, досить багато пам'яті можуть от'есть сервіси і автоматично запускаються самого Android. Дивно, але в пам'яті працює Android-системи можна легко виявити купу софта, яким ти взагалі не користуєшся. Це може бути диктофон, калькулятор, «Чорна діра» (на жаль, це всього лише живі шпалери), а також сервіси голосового набору (набору номера, не пошуку), календаря і синтезатора мови. Причому якщо перші просто були запущені під час завантаження і досить швидко витісняються Low Memory Killer, то другі - це повноцінні сервіси, які висять в пам'яті протягом усього життя смартфона.

Багато з цих сервісів можна відключити через стандартний диспетчер додатків, навіть не маючи root. Досить перейти в «Налаштування -> Додатки -> Все», тапнуть по потрібної софтина і натиснути кнопку «Відключити» (ну або «Видалити», а потім «Відключити», якщо були встановлені оновлення). Ось список програм, які, з точки зору інженерів Google, можна безболісно відключати:

  • Голосовий набір (com.android.voicedialer)
  • Диктофон (com.android.soundrecorder)
  • Календар (com.android.calendar)
  • Калькулятор (com.android.calculator)
  • Оновлення CyanogenMod (com.cyanogenmod.updater)
  • Пам'ять календаря (com.android.providers.calendar)
  • Синхронізація закладок (com.google.android.syncupdaters.bookmarks)
  • Синхронізація календаря (com.google.android.syncupdaters.calendar)
  • Стандартні заставки (com.android.dreams.basic)
  • Фонові малюнки (com.android.musicvis і com.android.magicsmoke)
  • Чорна діра (com.android.galaxy4)
  • com.android.wallpaper.holospiral
  • Email (com.android.email)
  • Picasa Uploader (com.google.android.apps.uploader)
  • Pico TTS (com.svox.pico)

В дужках я привів системне ім'я додатка так, щоб у разі потреби ти міг не просто відключити, але і видалити його (а навіщо даремно витрачати місце?). Всі системні програми зберігаються в каталозі / system / app і можуть бути видалені за допомогою будь-якого файлового менеджера з підтримкою root.

За замовчуванням система не дозволить відключити деякі вельми ненажерливі, але тим не менш важливі сервіси. До таких відносяться, наприклад, «Телефон» (це додаток входить в групу FOREGROUND_APP і тому завжди висить в пам'яті), «Еквалайзер» (тільки в CyanogenMod і похідних), Google Backup Transport (~ 45 Мб), відповідальний за бекап встановленого софта в хмарі Google (відновлюється після переустановлення прошивки, наприклад), «Меню SIM-карти» і Fused Location (~ 45 Мб), сервіс, який збирає дані про місцезнаходження з усіх можливих джерел (мережа, IP-адреса, барометр, GPS, компас) і на їх основі обчислює точне положення смартфона на карті. Додатки типу навігаторів працюватимуть і без нього, але з меншою точністю.

Позбутися від усіх цих процесів допоможе root-додаток Bloat Freezer . Воно дозволяє відключити не тільки додатки, дозволені до відключення самою системою, а й взагалі будь-які, в тому числі головний системний процес android.process.acore. Крім наведених вище пожирачів пам'яті, безболісно можна прибити ще таку кількість системних додатків, що мені буде простіше привести список тих, які відключати не можна. Ось вони:

  • Apollo (CyanogenMod)
  • cLock (CyanogenMod)
  • Google Services Framework
  • Launcher (Trebuchet в CyanogenMod)
  • акаунти Google
  • браузер
  • Галерея
  • Графічний інтерфейс системи
  • Диспетчер завантаження
  • завантаження
  • клавіатура Google
  • Контакти
  • Майстер доступу до пакетів
  • Місцезнаходження мережі
  • налаштування
  • Пам'ять номерів / SMS / MMS
  • параметри розкладки
  • Програма установки пакета
  • Програма установки сертифіката
  • Синхронізація контактів Google
  • повідомлення
  • Засіб перегляду HTML
  • Телефон
  • Файли (CyanogenMod)
  • Ліхтарик (CyanogenMod)
  • сховище контактів
  • сховище мультимедіа
  • сховище налаштувань
  • Годинники

Все інше можна безболісно виключити (ну або залишити ті, які ще можуть стати в нагоді, наприклад FM-радіо). Коли все буде зроблено, відкриваємо будь-який менеджер процесів, прибиваємо всі призначені для користувача процеси і дивимося, скільки пам'яті зайнято. У моєму випадку 200 Мб. Дуже навіть непогано в порівнянні з початковими 350 Мб.

Дуже навіть непогано в порівнянні з початковими 350 Мб

Відключаємо даремний голосовий набір Відключаємо даремний голосовий набір   Відключивши Fused Location і Google Backup Transport, ми звільнимо 90 Мб пам'яті   Відключаємо системні сервіси за допомогою Bloat Freezer Відключивши Fused Location і Google Backup Transport, ми звільнимо 90 Мб пам'яті Відключаємо системні сервіси за допомогою Bloat Freezer

Після чищення система займає менше 200 Мб!

Видаляти або відключати всі додатки нам, звичайно, не можна, однак про найбільш ненажерливих з них подбати потрібно. Зазвичай софт для Android (та й для будь-яких інших ОС) страждає від двох основних проблем ожиріння: він або з'їдає неймовірні кількості оперативної пам'яті під час своєї роботи (наприклад, твіттер-клієнт може продовжувати зберігати в пам'яті вже давно прочитані повідомлення і переглянуті зображення), або постійно щось робить у фоновому режимі, через що смартфон стає менш чуйним, а час його роботи від батареї падає. В особливо тяжких випадках обидві хвороби комбінуються в одній софтина.

Що ми можемо вдіяти? Звичайно ж, видалити подібний софт, ну або як мінімум замінити його аналогом. Якщо зробити це неможливо, можна вдатися ще до двох хитрощів. Перше - це примусове вбивство додатки. Зазвичай програма починає товстіти під час роботи, а відразу після запуску займає не дуже багато пам'яті. Вбивати софт не дуже правильна ідея, але якщо вже ти зібрався це робити, то краще скористатися для цього вбудованою функцією CyanogenMod і похідних: вбивство довгим утриманням кнопки «Назад» ( «Налаштування -> Для розробників -> Закриття програми»).

Друге, що ми можемо, - це відучити ненажерливі додатки що-небудь робити в тлі. Для цього є чудовий додаток Greenify (вимагає root), яке дозволяє заморозити вибрані додатки так, щоб вони взагалі не могли працювати, поки не видно на екрані. Запускаємо Greenify, натискаємо «+» і бачимо список працюючого софта, розсортоване за ступенем ненажерливості, Тапа по потрібного додатка і все, відтепер в тлі воно завжди буде спати.

Деякі програми нема чого працювати в фоні

Що ще можна зробити для прискорення роботи смартфона і очищення його пам'яті? В цілому більше нічого. Є, звичайно, ще такі зовсім радикальні методи, як заміна важкого софта на прості легкі аналоги, хакинг софта з метою вирізання ресурсів, але все це погано узгоджується з ідеєю мати повнофункціональний смартфон. Простіше тоді поставити Android 2.3 (CyanogenMod 7) і взагалі забути про проблеми продуктивності.

Проте є ще два дієвих ради. Перший - це активація технології zRam, яка дозволяє виділити невеликий фрагмент оперативної пам'яті і створити з нього віртуальний своп-розділ із стисненням даних. В результаті загальний обсяг оперативної пам'яті віртуально збільшиться, вивільнивши зайвих 50-100 Мб.

Проблема з активацією zRam тільки в тому, що сама технологія є далеко не в кожному ядрі. Більшість кастомних ядер, а також ядра прошивок CyanogenMod, Paranoid Android і AOKP зазвичай включає підтримку zRam, але це не завжди вірно. Стічні прошивки зазвичай поставляються з ядрами без zRam. У CyanogenMod і похідних активувати Z-RAM можна через меню «Налаштування -> Продуктивність -> Управління пам'яттю -> Використовувати zRam». За замовчуванням система виділяє під стислий своп 18% пам'яті, але при необхідності значення можна збільшити до 26%. В інших прошивках zRam активується за допомогою програми Trickster Mod (Вкладка «Специфічні функції»), проте так можна виділити тільки 10% пам'яті.

Другий дієвий рада - це перенесення всіх додатків у внутрішню пам'ять замість установки на карту пам'яті. Тут виграш полягає в тому, що вбудована NAND-пам'ять смартфона за визначенням набагато швидше пам'яті SD-карти, тому запуск програми з внутрішньої пам'яті буде відбуватися швидше. Більш того, сам по собі механізм запуску додатків з SD-карти в Android реалізований з використанням шифрованих контейнерів, що також вносить додаткові витрати.

Перенісши всі додатки у внутрішню пам'ять, ми доб'ємося прискорення їх запуску. Уже встановлений на карту пам'яті софт можна легко повернути назад через настройки: «Додатки -> Сторонні -> Як вибрати програму -> Перенести на смартфон». Щоб взагалі відключити функцію встановлення нових програм на карту пам'яті, потрібні права root і емулятор терміналу. Запускаємо термінал і набираємо дві команди:

$ Su # pm setInstallLocation 1

Тепер за замовчуванням весь софт буде встановлюватися у внутрішню пам'ять. Щоб настройка зберігалася між перезавантаженнями, беремо будь-який файловий менеджер з підтримкою root, переходимо в каталог /system/etc/init.d/ і створюємо такий файл99disable-app2sd.sh:

Вдихаємо нове життя в старий андроідофон

Мобільні технології розвиваються так швидко, що ми вже не встигаємо міняти смартфони. Начебто тільки купив новий девайс, а на ринку вже з'явилися більш просунуті моделі з великою кількістю пам'яті, процесорних ядер і підтримкою NFC. І чорт би з ними, з ядрами, два, чотири, вісім, хоч шістнадцять. Нова версія ОС гальмує! Ось це справжня проблема.

Цю статтю я адресую всім тим, хто до сих пір користується смартфонами, що вийшли до появи версії Android 4.0, всім тим, кому «пощастило» купити девайс з 512 Мб оперативної пам'яті, а через місяць вийшов Ice Cream Sandwich, і довелося залишитися на 2.3 або миритися з гальмами. Загалом, для володарів доісторичних, але улюблених HTC Desire, Motorola Defy і Samsung Galaxy S.

Володарем одного з таких девайсів є і я сам. Близько трьох років тому за сьогоднішню ціну Nexus 4 я придбав смартфон Motorola Defy. Це така цегла з екраном на 3,7 дюйма, процесором 1 ГГц, 512 Мб оперативної пам'яті і захистом від бруду і води. З ним я проходив близько року і згодом замінив на Galaxy Nexus, однак віддати або продати побиту, кілька разів жінку, яка тонула і минулий зі мною через все, що тільки можна, моторолу не наважився. Смартфон дійсно був хороший, зручний, легко поміщався в кишені і витримував будь-які випробування.

Проблема була лише в тому, що за замовчуванням на Defy ставили Android 2.2, який згодом можна було оновити тільки до 2.3. Жадібна і лінива моторола обірвала всі надії власників, сказавши, що 4.0 на смартфоні не буде - замало пам'яті в звірку.

На щастя, перенести Android 4.0 на Defy почали майже відразу після відкриття початкових кодів, і на час, коли необхідність в 4.X назріла, розробники викотили хороший повноцінний порт (розповідь про те, через що вони пройшли, щоб зробити це в умовах неломающіеся залоченним завантажувача , гідний окремої статті). Але навіть вже вилизаний Android 4.X (в особі CyanogenMod 10.2) працював на старому девайсе з рук геть погано. Мізерний як на теперішній час обсяг пам'яті просто душив систему, і вона постійно трималась на межі можливостей. У порівнянні з 2.3, нова версія була просто неймовірною гальмом, користуватися яким не було ніякого бажання. Почалися пошуки будь-яких шляхів оптимізації.

По суті, все подальше оповідання і є розповідь про те, як змусити працювати Android 4.3 (CyanogenMod 10.2) на Motorola Defy або будь-якому іншому застарілому пристрої схожою конфігурації (зокрема, точно така ж начинка була у Motorola Droid і схожа у Samsung Galaxy S) . Втім, все сказане буде справедливо взагалі для будь-якого девайса на Android 4.X, починаючи від Samsung Galaxy Nexus і закінчуючи HTC One.

Отже, у нас є смартфон під управлінням Android 4.X, і він безбожно гальмує. Програми запускаються довго, Промотка відбувається із затримками, загальний FPS близько 5-10 кадрів. Проблеми тут, як і належить, дві: процесор і пам'ять.

Офіційні системні вимоги Android 4.X - це процесор на 1 ГГц і 1 Гб оперативної пам'яті. Тільки такий смартфон може пройти сертифікацію і отримати можливість продажу з передвстановленим Google Play. Все, що нижче, - немає. І ніякого запасу по пам'яті або частотам тут немає, це край, нижче якого починаються гальма. Чи не через кривизни чиїх би то не було рук, а через функціональності ОС, яка з виходом Ice Cream Sandwitch дійсно серйозно зросла (ну або можна все звалити на Java).

Скільки пам'яті споживає Android 4.X? Багато. Тільки що завантажена операційна система займає близько 350 Мб, за вирахуванням коду ядра і невивантажуваного компонентів на девайсі з 512 Мб пам'яті вільними залишаються близько 120 Мб. Середнє сучасне додаток на зразок Twitter або Instagram під час своєї роботи може зжерти до 50 Мб. Тобто оперативна пам'ять буде вичерпана вже після включення апарату і запуску пари-трійки додатків.

Так, тобі не потрібна одночасна робота декількох програм, однак Android - це не Windows, він не завершує роботу програми при його закритті, а всього лише згортає, в результаті чого софт продовжує жерти пам'ять, навіть коли ти їм не користуєшся. Щоб вісь НЕ здохла від нестачі пам'яті, в критичні моменти прокидається процес, названий Low Memory Killer, і нещадно вбиває фонові програми.

Сучасний Android-софт дуже ненажерливий

Для нас Low Memory Killer дуже важливий інструмент. Це не просто незграбна прібівалка софта, а інтелектуальний механізм, який можна переналаштувати під будь-які потреби. Алгоритм роботи цього внутрішньоядерної процесу заснований на значеннях «важливості», які присвоюються кожному працюючому в системі з додатком і можуть змінюватися у часі. Всього таких значень шість:

  • FOREGROUND_APP - видиме на екрані додаток, його вбивати не можна ні в якому разі;
  • VISIBLE_APP - працює в фоні процес, який відповідає за виведення тієї чи іншої інформації на екран (іконка в рядку стану, висувна панель, віджет і так далі), його краще теж не вбивати;
  • SECONDARY_SERVER - фоновий сервіс, такий як музичний програвач, будильник, синхронізація даних, зазвичай може бути убитий без серйозних наслідків для системи в цілому, але з втратою функціональності;
  • HIDDEN_APP - працює в тлі додаток, може бути вбито в будь-який момент, але це позначиться на його функціональності;
  • CONTENT_PROVIDER - фоновий сервіс, який відповідає за зберігання та надання будь-якої інформації (настройки, фотографії, що завгодно), але в даний момент простоює (клієнтів немає), може бути безболісно убитий;
  • EMPTY_APP - будь-який фоновий процес (додаток), який нічого не робить, перший кандидат на вбивство.

Важливість додатків кожної групи зростає від низу до верху. Тобто при нестачі пам'яті Low Memory Killer почне вбивство з останньої групи і, якщо пам'яті знову буде не вистачати, буде просуватися вище. Саме поняття «дефіцит пам'яті» у Low Memory Killer визначається шістьма порогами, по одному на кожну групу процесів. На всіх смартфонах (і прошивках) значення цих порогів різні, наприклад, на Motorola Defy з CM-10.2 на борту вони такі:

FOREGROUND_APP: 25 Мб VISIBLE_APP: 30 Мб SECONDARY_SERVER: 40 Мб HIDDEN_APP: 50 Мб CONTENT_PROVIDER: 55 Мб EMPTY_APP: 70 Мб

Вільної пам'яті менше 70 Мб - вбиваються безробітні фонові програми, менше 55 Мб - в витрата підуть Content Porovider'и і так далі. Коли пам'яті залишиться всього 25 Мб, буде вбито використовується в даний момент додаток, але ймовірність такого результату вкрай мала; після вбивства всіх інших додатків пам'ять займати буде просто нікому.

Краса всього цього механізму в тому, що він може бути переналаштувати в будь-який момент. В Android є файл / sys / module / lowmemorykiller / parameters / minfree, який можна прочитати, щоб отримати поточні значення порогів або записати в нього нові значення (через кому в 4-кілобайтних блоках), які вступлять в силу відразу після запису. Те ж саме можна зробити, використовуючи додаток Auto Memory Manager, MinFree і аналоги.

Які значення будуть придатними? Тут все залежить від способу використання смартфона. Якщо апарат тобі потрібен тільки для того, щоб дзвонити, читати пошту і твіттер, значення краще або залишити як є, або зменшити (але не рекомендую ставити нижче 50 Мб). Тоді система буде звільняти пам'ять тільки в крайньому випадку, і всі програми, якими ти часто користуєшся, залишаться в пам'яті і будуть запускатися миттєво.

Якщо ж ти звик використовувати смартфон для запуску великої кількості самих різних додатків та ігор, то значення краще підвищити (в Auto Memory Manager це можна зробити за один тап, натиснувши кнопку Aggressive). Тоді в системі завжди буде залишатися досить пам'яті для запуску відразу декількох важких додатків, і вона не буде витрачати час на звільнення оперативки.

Ще один радикальний варіант - це підвищити ліміти двох останніх груп до максимуму, в результаті чого Android фактично перетвориться в однозадачних систему, якою до недавнього часу була iOS і до сих пір залишається Windows Phone (умовно, звичайно). Іншими словами, система буде автоматично вбивати додатки відразу після їх закриття, але тільки в тому випадку, якщо софтіна не буде в цей момент нічого робити. Системні компоненти при цьому залишаться висіти в пам'яті.

Незалежно від того, який з варіантів ти вибереш, варто пограти з можливими значеннями, щоб знайти оптимальні.

Всі наші маніпуляції з Low Memory Killer не принесуть особливого приросту продуктивності, якщо пам'ять системи буде забита різними клієнтами Facebook, VKontakte, Hangouts Google+ та іншими. Зазвичай такий софт стартує відразу після завантаження системи і потрапляє або в групу SECONDARY SERVER, або в HIDDEN APP (іноді в CONTENT_PROVIDER), так що до нього механізм очищення пам'яті добирається тільки в останню чергу, а навіть якщо добирається, через деякий час софтіна перезапускается ( зазвичай це пов'язано з яким-небудь системним подією).

Тому другим пунктом в нашому плані поліпшення швидкості роботи буде позбавлення від всіх подібних додатків. Ні, реально потрібні, звичайно, краще залишити, а ті, які стоять для галочки, - видалити. Якщо ти використовуєш сторонню прошивку, типу CyanogenMod, стандартний архів Gapps (той, який прошивається після самої прошивки) краще замінити на мінімальний (goo.im/gapps/minimal). З гугловських додатків в ньому тільки сам маркет і Gmail, а Hangouts, карти і купа інших сервісів вирізані, тому вони теж не будуть стартувати під час завантаження і жерти пам'ять (будь-який з них можна встановити з маркету).

Крім Google-сервісів, досить багато пам'яті можуть от'есть сервіси і автоматично запускаються самого Android. Дивно, але в пам'яті працює Android-системи можна легко виявити купу софта, яким ти взагалі не користуєшся. Це може бути диктофон, калькулятор, «Чорна діра» (на жаль, це всього лише живі шпалери), а також сервіси голосового набору (набору номера, не пошуку), календаря і синтезатора мови. Причому якщо перші просто були запущені під час завантаження і досить швидко витісняються Low Memory Killer, то другі - це повноцінні сервіси, які висять в пам'яті протягом усього життя смартфона.

Багато з цих сервісів можна відключити через стандартний диспетчер додатків, навіть не маючи root. Досить перейти в «Налаштування -> Додатки -> Все», тапнуть по потрібної софтина і натиснути кнопку «Відключити» (ну або «Видалити», а потім «Відключити», якщо були встановлені оновлення). Ось список програм, які, з точки зору інженерів Google, можна безболісно відключати:

  • Голосовий набір (com.android.voicedialer)
  • Диктофон (com.android.soundrecorder)
  • Календар (com.android.calendar)
  • Калькулятор (com.android.calculator)
  • Оновлення CyanogenMod (com.cyanogenmod.updater)
  • Пам'ять календаря (com.android.providers.calendar)
  • Синхронізація закладок (com.google.android.syncupdaters.bookmarks)
  • Синхронізація календаря (com.google.android.syncupdaters.calendar)
  • Стандартні заставки (com.android.dreams.basic)
  • Фонові малюнки (com.android.musicvis і com.android.magicsmoke)
  • Чорна діра (com.android.galaxy4)
  • com.android.wallpaper.holospiral
  • Email (com.android.email)
  • Picasa Uploader (com.google.android.apps.uploader)
  • Pico TTS (com.svox.pico)

В дужках я привів системне ім'я додатка так, щоб у разі потреби ти міг не просто відключити, але і видалити його (а навіщо даремно витрачати місце?). Всі системні програми зберігаються в каталозі / system / app і можуть бути видалені за допомогою будь-якого файлового менеджера з підтримкою root.

За замовчуванням система не дозволить відключити деякі вельми ненажерливі, але тим не менш важливі сервіси. До таких відносяться, наприклад, «Телефон» (це додаток входить в групу FOREGROUND_APP і тому завжди висить в пам'яті), «Еквалайзер» (тільки в CyanogenMod і похідних), Google Backup Transport (~ 45 Мб), відповідальний за бекап встановленого софта в хмарі Google (відновлюється після переустановлення прошивки, наприклад), «Меню SIM-карти» і Fused Location (~ 45 Мб), сервіс, який збирає дані про місцезнаходження з усіх можливих джерел (мережа, IP-адреса, барометр, GPS, компас) і на їх основі обчислює точне положення смартфона на карті. Додатки типу навігаторів працюватимуть і без нього, але з меншою точністю.

Позбутися від усіх цих процесів допоможе root-додаток Bloat Freezer . Воно дозволяє відключити не тільки додатки, дозволені до відключення самою системою, а й взагалі будь-які, в тому числі головний системний процес android.process.acore. Крім наведених вище пожирачів пам'яті, безболісно можна прибити ще таку кількість системних додатків, що мені буде простіше привести список тих, які відключати не можна. Ось вони:

  • Apollo (CyanogenMod)
  • cLock (CyanogenMod)
  • Google Services Framework
  • Launcher (Trebuchet в CyanogenMod)
  • акаунти Google
  • браузер
  • Галерея
  • Графічний інтерфейс системи
  • Диспетчер завантаження
  • завантаження
  • клавіатура Google
  • Контакти
  • Майстер доступу до пакетів
  • Місцезнаходження мережі
  • налаштування
  • Пам'ять номерів / SMS / MMS
  • параметри розкладки
  • Програма установки пакета
  • Програма установки сертифіката
  • Синхронізація контактів Google
  • повідомлення
  • Засіб перегляду HTML
  • Телефон
  • Файли (CyanogenMod)
  • Ліхтарик (CyanogenMod)
  • сховище контактів
  • сховище мультимедіа
  • сховище налаштувань
  • Годинники

Все інше можна безболісно виключити (ну або залишити ті, які ще можуть стати в нагоді, наприклад FM-радіо). Коли все буде зроблено, відкриваємо будь-який менеджер процесів, прибиваємо всі призначені для користувача процеси і дивимося, скільки пам'яті зайнято. У моєму випадку 200 Мб. Дуже навіть непогано в порівнянні з початковими 350 Мб.

Дуже навіть непогано в порівнянні з початковими 350 Мб

Відключаємо даремний голосовий набір Відключаємо даремний голосовий набір   Відключивши Fused Location і Google Backup Transport, ми звільнимо 90 Мб пам'яті   Відключаємо системні сервіси за допомогою Bloat Freezer Відключивши Fused Location і Google Backup Transport, ми звільнимо 90 Мб пам'яті Відключаємо системні сервіси за допомогою Bloat Freezer

Після чищення система займає менше 200 Мб!

Видаляти або відключати всі додатки нам, звичайно, не можна, однак про найбільш ненажерливих з них подбати потрібно. Зазвичай софт для Android (та й для будь-яких інших ОС) страждає від двох основних проблем ожиріння: він або з'їдає неймовірні кількості оперативної пам'яті під час своєї роботи (наприклад, твіттер-клієнт може продовжувати зберігати в пам'яті вже давно прочитані повідомлення і переглянуті зображення), або постійно щось робить у фоновому режимі, через що смартфон стає менш чуйним, а час його роботи від батареї падає. В особливо тяжких випадках обидві хвороби комбінуються в одній софтина.

Що ми можемо вдіяти? Звичайно ж, видалити подібний софт, ну або як мінімум замінити його аналогом. Якщо зробити це неможливо, можна вдатися ще до двох хитрощів. Перше - це примусове вбивство додатки. Зазвичай програма починає товстіти під час роботи, а відразу після запуску займає не дуже багато пам'яті. Вбивати софт не дуже правильна ідея, але якщо вже ти зібрався це робити, то краще скористатися для цього вбудованою функцією CyanogenMod і похідних: вбивство довгим утриманням кнопки «Назад» ( «Налаштування -> Для розробників -> Закриття програми»).

Друге, що ми можемо, - це відучити ненажерливі додатки що-небудь робити в тлі. Для цього є чудовий додаток Greenify (вимагає root), яке дозволяє заморозити вибрані додатки так, щоб вони взагалі не могли працювати, поки не видно на екрані. Запускаємо Greenify, натискаємо «+» і бачимо список працюючого софта, розсортоване за ступенем ненажерливості, Тапа по потрібного додатка і все, відтепер в тлі воно завжди буде спати.

Деякі програми нема чого працювати в фоні

Що ще можна зробити для прискорення роботи смартфона і очищення його пам'яті? В цілому більше нічого. Є, звичайно, ще такі зовсім радикальні методи, як заміна важкого софта на прості легкі аналоги, хакинг софта з метою вирізання ресурсів, але все це погано узгоджується з ідеєю мати повнофункціональний смартфон. Простіше тоді поставити Android 2.3 (CyanogenMod 7) і взагалі забути про проблеми продуктивності.

Проте є ще два дієвих ради. Перший - це активація технології zRam, яка дозволяє виділити невеликий фрагмент оперативної пам'яті і створити з нього віртуальний своп-розділ із стисненням даних. В результаті загальний обсяг оперативної пам'яті віртуально збільшиться, вивільнивши зайвих 50-100 Мб.

Проблема з активацією zRam тільки в тому, що сама технологія є далеко не в кожному ядрі. Більшість кастомних ядер, а також ядра прошивок CyanogenMod, Paranoid Android і AOKP зазвичай включає підтримку zRam, але це не завжди вірно. Стічні прошивки зазвичай поставляються з ядрами без zRam. У CyanogenMod і похідних активувати Z-RAM можна через меню «Налаштування -> Продуктивність -> Управління пам'яттю -> Використовувати zRam». За замовчуванням система виділяє під стислий своп 18% пам'яті, але при необхідності значення можна збільшити до 26%. В інших прошивках zRam активується за допомогою програми Trickster Mod (Вкладка «Специфічні функції»), проте так можна виділити тільки 10% пам'яті.

Другий дієвий рада - це перенесення всіх додатків у внутрішню пам'ять замість установки на карту пам'яті. Тут виграш полягає в тому, що вбудована NAND-пам'ять смартфона за визначенням набагато швидше пам'яті SD-карти, тому запуск програми з внутрішньої пам'яті буде відбуватися швидше. Більш того, сам по собі механізм запуску додатків з SD-карти в Android реалізований з використанням шифрованих контейнерів, що також вносить додаткові витрати.

Перенісши всі додатки у внутрішню пам'ять, ми доб'ємося прискорення їх запуску. Уже встановлений на карту пам'яті софт можна легко повернути назад через настройки: «Додатки -> Сторонні -> Як вибрати програму -> Перенести на смартфон». Щоб взагалі відключити функцію встановлення нових програм на карту пам'яті, потрібні права root і емулятор терміналу. Запускаємо термінал і набираємо дві команди:

$ Su # pm setInstallLocation 1

Тепер за замовчуванням весь софт буде встановлюватися у внутрішню пам'ять. Щоб настройка зберігалася між перезавантаженнями, беремо будь-який файловий менеджер з підтримкою root, переходимо в каталог /system/etc/init.d/ і створюємо такий файл99disable-app2sd.sh:

#! / System / bin / sh / system / bin / pm setInstallLocation 1

І за допомогою все того ж файлового менеджера ставимо на нього біт виконання. Це рецепт для CyanogenMod і похідних. На стічних прошивках спочатку необхідно встановити додаток Universal Init.d, запустити його і включити перемикач на головному вікні.

Активуємо zRam в CyanogenMod Активуємо zRam в CyanogenMod   Активуємо zRam за допомогою TricksterMod   За замовчуванням Android воліє встановлювати софт на SD-карту Активуємо zRam за допомогою TricksterMod За замовчуванням Android воліє встановлювати софт на SD-карту

Застосовуючи всі описані в статті прийоми, мені вдалося істотно підняти швидкість роботи при використанні Motorola Defy з CyanogenMod 10.2 на борту. Смартфон, звичайно, не наблизився до швидкості Nexus 4 і інших сучасних девайсів, але в порівнянні з настройками за замовчуванням комфорт від використання підвищився в рази і наблизився до такого при використанні стокового Android 2.3.


4.X?
Які значення будуть придатними?
А навіщо даремно витрачати місце?
Що ми можемо зробити?
4.X?
Які значення будуть придатними?
А навіщо даремно витрачати місце?
Що ми можемо вдіяти?
4.X?
Які значення будуть придатними?