Как установить cyanogenmod

cyanogenmod · repo · сборка из исходников · croot · breakfast · brunch · make clean

Несколько месяцев назад я познал, что такое настройка окружения в Ubuntu для компиляции CyanogenMod из исходников. С тех пор прошло много времени, но это не значит, что я занимался чёрт знает чем 🙂 Я не болтался просто так, а портировал CyanogenMod на свой смартфон и приобретал опыт в этом деле. Однако, прежде чем написать статью для других, мне нужно было разложить всё по полочкам в собственной голове. Сейчас мы сделаем ещё один маленький шаг — научимся выкачивать из репозитория CyanogenMod исходники и познакомимся с парой-тройкой часто используемых команд.


Итак, в прошлый раз я создал директорию android в своём домашнем каталоге, но сейчас передумал и назвал её CyanogenMod:

cd ~/ && mkdir CyanogenMod
cd CyanogenMod

Развлекаемся с git и repo

Во время работы с исходниками я осознал необходимость познакомиться с git и даже создал свой собственный репозиторий на GitHub. Там я публикую свою работу над деревом устройства (device tree) для Alcatel OT-986.

Для начала git нужно установить:

sudo apt-get install git

Теперь пришло время воспользоваться утилитой repo и выкачать исходный код CyanogenMod из GitHub к себе на компьютер. Я всё ещё работаю с веткой ICS 4.0.4 (CyanogenMod 9.1.0):

repo init -u git://github.com/CyanogenMod/android.git -b cm-9.1.0

Также существуют ветки cm-10.1, cm-10.2 (возможно и новее на момент прочтения этой статьи). Выберите на своё усмотрение. Если вы, как и я, занимаетесь портом CyanogenMod на устройство, для которого нет никаких сторонних прошивок, то сначала попробуйте собрать ветку, соответствующую версии заводского ПО (stock ROM) — так будет легче сдвинуться с мёртвой точки. Alcatel OT-986 имеет из коробки версию Android 4.0.3, поэтому я начал работать с CM 9.1 — система загрузилась практически «с полпинка», а вот версии 10.1 и 10.2 у меня ещё полноценно так и не запустились.

Наблюдаем, как repo ругается при попытке выполнения команды init:

*** Please tell me who you are.

Run

  git config —global user.email «you@example.com»
  git config —global user.name «Your Name»

to set your account’s default identity.

Укажем свои данные, выполнив заботливо подсказанные команды. Затем repo init нужно повторить, и в этот раз всё закончится успешно. Ответьте утвердительно на предложение раскрашивать вывод repo (это же весело, гы):

Enable color display in this user account (y/N)? y

Заявим свой манифест

На этом этапе официальный how-to от команды CyanogenMod предлагает начать скачивание исходников, но лично мне перед этим нужно проделать ещё один финт ушами — установить мой кастомный манифест. Это XML-файл, который позволяет указать repo, что некоторые части проекта мне не нужны. Вы тоже не хотите видеть в своей будущей прошивке дефолтный браузер? Пожалуйста:

remove-project name=»CyanogenMod/android_packages_apps_Browser»

Таким образом мы не только избавляемся от нежелательных компонентов будущей прошивки, но и экономим место на жёстком диске и время на синхронизацию с репозиторием. С другой стороны, манифест можно использовать для добавления файлов в исходники, например, я подключу свой репозиторий с деревом устройства:

project path=»device/alcatel/cedarlite» name=»yareg-com/device_alcatel_cedarlite»

Данная строка означает, что в директорию ~/CyanogenMod/device/alcatel/cedarlite будет скопировано содержимое репозитория https://github.com/yareg-com/device_alcatel_cedarlite.git. Эти файлы становятся частью всего исходного кода будущей прошивки, а в этом конкретном случае — особенно важной его составляющей, деревом устройства. Возможно подключать таким образом и репозитории из других источников, не только с GitHub.

Вся информация в манифесте должна быть оформлена в валидном XML-формате и сохранена в файл с любым именем и расширением .xml в директорию .repo/local_manifests. Выше я указал только фрагменты кода для наглядности, точный вариант манифеста смотрите на GitHub. Создать локальную копию с помощью git можно примерно так:

cd .repo && git clone https://github.com/yareg-com/manifest_alcatel_cedarlite.git
mv manifest_alcatel_cedarlite local_manifests

Компьютер пыхтит, а мы отдыхаем

Проделав все необходимые приготовления для работы repo, запустим процесс выкачивания исходного кода на свой компьютер:

cd ~/CyanogenMod
repo sync

Теперь всё зависит от ширины вашего интернет-канала и скорости дисковой подсистемы компьютера.

Хочу предупредить, что объём директории CyanogenMod вырастет до нескольких десятков гигабайт, поэтому о свободном месте стоит позаботиться заранее. Дополнительно, лучше всего иметь быстрый SSD, несколько ядер процессора и не менее 4 GB оперативной памяти. Моя конфигурация — AMD A4 / 4 GB RAM / 2.5″ HDD 5400 rpm @ 75 Mbit/sec. Вполне комфортно, но сходить погулять во время repo sync я успеваю 🙂 Хорошо, что проделывать это необходимо всего один раз.

Вы уже ужинаете? А мы ещё завтракаем!

Когда repo sync отработает, выполним инициализацию окружения. Скачиваем некоторые зависимости CyanogenMod, на самом деле много всякого хлама — уже собранные Rom Manager, Terminal Emulator (хотя, это полезная штука) и прочее, без чего сборка не состоится:

cd ~/CyanogenMod/vendor/cm
./get-prebuilts

Далее выполняем скрипт envsetup.sh, который добавляет в систему новые команды — croot, brunch, breakfast и другие:

cd ~/CyanogenMod
source build/envsetup.sh

Часто используемые команды

Команда croot делает только одно — телепортирует вас в корень директории с исходниками, в моем случае — ~/CyanogenMod. Команда breakfast подготавливает окружение для дерева устройства:

breakfast cedarlite

Команда brunch запускает процесс сборки прошивки на основе конфигурационных файлов дерева устройства:

brunch cedarlite

Команда make clean удалит все следы предыдущей сборки, если вы хотите начать всё с чистого листа. Исходный код при этом не удаляется, так что выкачивать всё по-новой из репозиториев не придётся. Я использую make clean после больших изменений в файлах дерева устройства.

Команда repo sync обновит исходники до актуального состояния. Если я изменил что-то онлайн в своём GitHub-репозитории или команда CyanogenMod исправила какие-то баги в коде, то repo sync необходим.

Все эти команды следует выполнять из корневой директории исходного кода CyanogenMod, то есть после выполнения команды croot.

Обсуждение

Войдите на сайт, чтобы присоединиться к обсуждению.

CyanogenMod представляет собой кастомную прошивку на основе операционной системы Android. Это лучшая версия ROM, которая имеет более широкие возможности и настройки, чем стандартная версия ОС Android от Google.

Новая версия CyanogenMod 14 работает на последней версии операционной системы Android 7.0 Nougat. Сегодня мы расскажем вам, как установить CyanogenMod 14 на Android смартфон.

Подготовка

Для начала необходимо скачать следующие файлы:

  • Скачать CyanogenMod 14
  • Скачать Root & TWRP Recovery

Процесс установки CyanogenMod 14

Шаг 1: Скопируйте скачанный zip файл CyanogenMod 14 на внутренню память вашего Android смартфона.

Шаг 2: После того, как вы скопировали архив с прошивкой CyanogenMod 14, вам необходимо перезагрузить смартфон в режиме восстановления. Для этого нажмите и удерживайте кнопку Регулировки Громкости и кнопку Питания.

Шаг 3: Когда смартфон загрузится в режиме восстановления, вы должны стереть данные, системные файлы, кэш, Dalvik cache и вернуть заводские настройки. Вы можете сделать это через меню Wipe.

Шаг 4: После этого нажмите Установить (Install) и выберите файл CyanogenMod 14. Если файл CyanogenMod 14 отсутствует в представленном списке, нажмите на Select Storage, и выберите файл CyanogenMod 14 в той папке, куда вы его скопировали. Далее нажмите Установить прошивку (Install image).

Шаг 5: Затем перезагрузите систему. Загрузка смартфона займет минут 5-10.

На этом все! Вы установили CyanogenMod 14 на Android смартфон.

Зачем устанавливать CyanogenMod 14 на Android?

Скриншоты CyanogenMod 14 на Android смартфоне

Давайте выясним, зачем нужно устаналивать CyanogenMod 14 и какие основные обновления получила новая версия операционной системы.

1. Многооконный режим CyanogenMod 14

Многозадачность является ключевым обновлением CyanogenMod 14.

Многооконный режим позволяет пользователям запускать различные приложения на одном экране. С помощью разделенного экрана вы будете иметь возможность перемещать, размещать приложения рядом друг с другом и изменять размер окон приложений с помощью ползунка.

2. Новый пользовательский интерфейс CyanogenMod 14

Учитывая тот факт, что CyanogenMod 14 будет работать на новой версии операционной системы Android 7.0 Nougat, он будет иметь совершенно новый пользовательский интерфейс. Как вы скорее всего знаете, одним из главных изменений Android 7.0 Nougat является отсутсвие меню приложений. Однако, мы считаем, что разработчики CyanogenMod 14 добавят возможность активировать меню приложений.

3. Оптимизировання батарея CyanogenMod 14

Ожидается, что CyanogenMod 14 будет иметь оптимизированное программное обеспечение, благодаря чему срок службы батареи составит на 20% больше, по сравнению с Android 6.0 Marshmallow, в энергосберегающем режиме Doze.

Посмотрите на эти материалы:

Понравилась статья? Поделитесь с друзьями в социальных сетях!

Инструкция по установке cyanogenmod. (Большинства прошивок, что выкладываются в этой группе)
ВНИМАНИЕ! ВСЕ ЧТО ВЫ ДЕЛАЕТЕ НА СВОЙ СТРАХ И РИСК! НИ Я НИ АДМИНИСТРАЦИЯ ПАБЛИКА НЕ НЕСЕТ ОТВЕТСТВЕННОСТИ ЗА ВРЕД НАНЕСЕННЫЙ ВАМ И ВАШЕМУ УСТРОЙСТВУ!
1) скачиваем прошивку и gapps. Оба имеют zip формат. Закидываем их или в память телефона или на карточку (ваш выбор). Не в коем случае их не распаковываем! ВНИМАНИЕ! Скачиваем gapps соответствующие устанавливаемому андроиду.

Тоесть если мы устанавливаем cyanogenmod 11 (4.4) то устанавливаем gapps только для 4.4. Не забываем скачать и установить gapps, в противном случае получим "голый" cyanogenmod без маркета.
2)сначала установливаем кастомное recovery (ClockWorkMod recovery, TWRP recovery или philz touch recovery). Установить кастомное recovery можно через adb или на samsung устройствах через odin. (С Компом). Если есть права root, то его можно установить через программу rom manager.
3) переходим в режим recovery. Это можно сделать через rom manager или зажав на выключенном устройстве кнопки:
home громкость- и питание
На некоторых устройствах питание и громкость —
4) у вас должно появиться меню, где управление кнопками громкости — вверх / вниз соответственно и кнопка питание — выбор.
5) сначала делаем полный hard reset
Wipe data factory reset / yes
Mounts and storage /format data / yes (если прошивка и gapps в памяти телефона не в коем случае этого не делаем )
Mounts and storage /format cashe / yes
Advanced / wipe dalvic cashe / yes
6) далее делаем так:
Install zip from sdcard / choose zip from sdcard (или choose zip from extSdCard) / выбираем файл с прошивкой
Ждём.. Потом
Choose zip from sdcard (extSdcard)/выбираем gapps
P.S. в зависимости от файловой системы телефона может быть choose zip from storage/sdcard0 и choose zip from storage/sdcard1 соответственно
7) жмем go back, а затем reboot system now.
Первый запуск может занять чуть больше пяти минут

Internal Server Error

The server has either erred or is incapable of performing the requested operation.

Traceback (most recent call last): File "/base/alloc/tmpfs/dynamic_runtimes/python27/277b61042b697c7a_unzipped/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1535, in __call__ rv = self.handle_exception(request, response, e) File "/base/alloc/tmpfs/dynamic_runtimes/python27/277b61042b697c7a_unzipped/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1529, in __call__ rv = self.router.dispatch(request, response) File "/base/alloc/tmpfs/dynamic_runtimes/python27/277b61042b697c7a_unzipped/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1278, in default_dispatcher return route.handler_adapter(request, response) File "/base/alloc/tmpfs/dynamic_runtimes/python27/277b61042b697c7a_unzipped/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1102, in __call__ return handler.dispatch() File "/base/alloc/tmpfs/dynamic_runtimes/python27/277b61042b697c7a_unzipped/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 572, in dispatch return self.handle_exception(e, self.app.debug) File "/base/alloc/tmpfs/dynamic_runtimes/python27/277b61042b697c7a_unzipped/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 570, in dispatch return method(*args, **kwargs) File "/base/data/home/apps/s~getcyngn/4-0-132.397254861682550070/getcm/handlers/web.py", line 30, in get for d in Device.query().order(Device.brand).order(Device.name): File "/base/alloc/tmpfs/dynamic_runtimes/python27/277b61042b697c7a_unzipped/python27_lib/versions/1/google/appengine/ext/ndb/query.py", line 1810, in next self._more_results) = self._fut.get_result() File "/base/alloc/tmpfs/dynamic_runtimes/python27/277b61042b697c7a_unzipped/python27_lib/versions/1/google/appengine/ext/ndb/tasklets.py", line 383, in get_result self.check_success() File "/base/alloc/tmpfs/dynamic_runtimes/python27/277b61042b697c7a_unzipped/python27_lib/versions/1/google/appengine/ext/ndb/context.py", line 890, in helper batch, i, ent = yield inq.getq() File "/base/alloc/tmpfs/dynamic_runtimes/python27/277b61042b697c7a_unzipped/python27_lib/versions/1/google/appengine/ext/ndb/query.py", line 969, in run_to_queue batch = yield rpc File "/base/alloc/tmpfs/dynamic_runtimes/python27/277b61042b697c7a_unzipped/python27_lib/versions/1/google/appengine/ext/ndb/tasklets.py", line 513, in _on_rpc_completion result = rpc.get_result() File "/base/alloc/tmpfs/dynamic_runtimes/python27/277b61042b697c7a_unzipped/python27_lib/versions/1/google/appengine/api/apiproxy_stub_map.py", line 613, in get_result return self.__get_result_hook(self) File "/base/alloc/tmpfs/dynamic_runtimes/python27/277b61042b697c7a_unzipped/python27_lib/versions/1/google/appengine/datastore/datastore_query.py", line 2906, in __query_result_hook self._batch_shared.conn.check_rpc_success(rpc) File "/base/alloc/tmpfs/dynamic_runtimes/python27/277b61042b697c7a_unzipped/python27_lib/versions/1/google/appengine/datastore/datastore_rpc.py", line 1374, in check_rpc_success rpc.check_success() File "/base/alloc/tmpfs/dynamic_runtimes/python27/277b61042b697c7a_unzipped/python27_lib/versions/1/google/appengine/api/apiproxy_stub_map.py", line 579, in check_success self.__rpc.CheckSuccess() File "/base/alloc/tmpfs/dynamic_runtimes/python27/277b61042b697c7a_unzipped/python27_lib/versions/1/google/appengine/api/apiproxy_rpc.py", line 134, in CheckSuccess raise self.exception OverQuotaError: The API call datastore_v3.RunQuery() required more quota than is available.

As usual you can enter the Recovery by pressing Home, Volume and Power buttons that is different for different smartphones. But you can also reboot to Recovery Mode without pressing the combination of buttons on CyanogenMod. It can be quite useful, for instance, if you have a button broken or you don’t know the combination for your particular model or if it is simply unhandy to press those three buttons simultaneously. Here is how to reboot into Recovery in CM12 / CM13. This method can also work for some versions of stock Android 5 and 6.

Enable Advanced reboot feature in CyanogenMod

You need to enable Advanced reboot feature to be able to reboot to Recovery.

  1. Go to Settings:
  2. Scroll down to the System section and enter Developer Options: 
  3. Turn on Advanced reboot: 

How to boot to Recovery mode in CyanogenMod

Now you can reboot to Recovery in 4 steps:

  1. Long press the Power Button.
  2. Tap Reboot: 
  3. Select Recovery.
  4. Tap OK: Wait for a few seconds: In a minute you will boot into Recovery: 

 

That’ it.

CyanogenMod

Related posts:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *