I’m still waiting for my 9$ Arduino…some mistake in Hong Kong customs procedure has generated a huge delay in shipment.
But finally I found an “idea” for some Cyanogen development, and I want to share here the steps that I’m doing.
At work I’m working on a feature that requires frequent “Force stop” and “Clear data” during the debug and development phase. I want to improve the “Application info” popup menu on the notification area (long click on the app notification) in order to add two new item: “Force Stop” and “Clear data”.
- At the moment the Nexus S is not available, so I will use the ugliest android phone ever seen: the Motorola Defy (MB 526), aka “Jordan” – specs (From GSM arena)
- I will use the CyanogenMod fork by Quarx2k, based on Android JB 4.1.2 – XDA forum post
- My old development machine @ work – a Dell studio XPS with Ubuntu 12.04 LTS
Step 0 : setup the development environment
Simply follow the post on XDA forum. After a few hours you should have your standard build from JB sources
Step 1 : setup a new github repo
I need to modify the “frameworks/base” project, because the notification area sources are in “frameworks/base/packages/SystemUI” folder. Simply go to “https://github.com/Quarx2k/android_frameworks_base” and fork this repository. My forked repo location is “https://github.com/sarbyn/android_frameworks_base_jordan”
Now you need to add a “local_manifest.xml” in your .repo/local_manifests folder, in which you must define the new repository:
<?xml version="1.0" encoding="UTF-8"?> <manifest> <remove-project name="Quarx2k/android_frameworks/base"/> <project remote="github" path="frameworks/base" name="sarbyn/android_frameworks_base_jordan" revision="jellybean"/> </manifest>
A simple explanation (from CM wiki)
- remote — the name of the remote. this can be one that was defined in either the regular manifest or local_manifest.xml.
- name — the name of the git project– for github it has the format account_name/project_name.
- path — where the git repository should go in your local copy of the source code.
- revision — (OPTIONAL) which branch or tag to use in the repository.
Now you are ready to “repo sync” your source tree.
Step 2 : start editing
Before you change anything you need to start a new git branch. Go into the main project folder and do a “repo start banchname frameworks/base“. Now you are ready to modify the code in a new git branch.
Step 3 : build
When all the development is done, do a full build with the standard procedure
source build/envsetup.sh && brunch mb526 make -j# bacon
# represents double the cores you have on your computer
Step 4 : commit and push on github repo
Enter in frameworks/base and check the repo status with git status. Add all the modified files with the standard git add FILENAME and commit the changes with git commit -m ‘message’. Now you are ready to upload the new git branch on server git push -u github branch_name
Step 5 : backup & install
The last step is very simple: go into recovery mode and do a full Nandroid backup. After that you can flash your build and try if it works 🙂