blandroid logo

Blandroid

For those rare occasions when you need your phone to actually work as a phone.

Development

Git repositories are stored at GitHub.

The list of outstanding issues is at the TODO page.

Fetching Source Code

  1. Follow the official instructions for building AOSP to install depdencies. Stop at the point of downloading the source.

  2. Make sure you have a bin directory in your home directory and that it is in your $PATH (if using a C-style shell such as csh or tcsh, use export PATH ~/bin:$PATH):

    $ mkdir ~/bin
    $ PATH=~/bin:$PATH

    You may want to make that $PATH change permanent by adding it to your shell's startup file.

  3. Fetch the repo tool and make it executable:

    $ curl https://raw.github.com/blandroid/repo/stable/repo > ~/bin/repo
    $ chmod a+x ~/bin/repo

  4. Make a directory for your Blandroid tree and use repo to initialize the tree:

    $ mkdir blandroid
    $ cd blandroid
    blandroid$ repo init --repo-url=git://github.com/blandroid/repo.git -u git://github.com/blandroid/manifest.git
    [ ... ]
    blandroid$ repo sync
    [ wait a long time while everything downloads... ]

Compiling

  1. Once the tree has finished downloading, ensure USB debugging is enabled on your phone (Settings -> Applications -> Development -> USB debugging) and extract the necessary proprietary files from your phone. For Nexus S/crespo:

    blandroid$ cd device/samsung/crespo
    blandroid/device/samsung/crespo$ sh extract-files.sh
    [ ... ]
    blandroid/device/samsung/crespo$ cd ../../..
    blandroid$

    For Nexus One/passion, make sure you are running a Gingerbread ROM (like Blandroid) first, as the Froyo (2.2) hardware camera drivers are incompatible.

    blandroid$ cd device/htc/passion
    blandroid/device/htc/passion$ sh extract-files.sh
    [ ... ]
    blandroid/device/htc/passion$ cd ../../..
    blandroid$

  2. Now you can build the tree. This will take a long time and use a lot of disk space, RAM, and CPU. For Nexus S/crespo:

    blandroid$ bash -c '. build/envsetup.sh && lunch blandroid_crespo-userdebug && make'

    For Nexus One/passion:

    blandroid$ bash -c '. build/envsetup.sh && lunch blandroid_passion-userdebug && make'

  3. After compiling, you can flash individual images like system.img, or build a complete update.zip-style file to flash everything at once:

    blandroid$ bash -c '. build/envsetup.sh && lunch blandroid_crespo-userdebug && make otapackage'

Following Development

  1. To update your tree at a later time, issue a repo sync:

    blandroid$ repo sync

    Each git tree will be synched into .repo/projects and then synchronized (merged) with your checked-out trees.

Contributing Changes

To contribute a change to Blandroid, you first need to create a fork of the specific module you are working on. This can be done on Github by navigating to the proper project and clicking the "Fork" button at the top. A cloned copy will appear under your user account.

To start working on your changes, you will first need to add your fork as a remote in your working tree. In this example, we will be forking the Camera application.

  1. Add a remote pointing to your newly forked tree, and then fetch its branch information:

    blandroid/packages/apps/Camera$ git remote add fork [email protected]:(your github username)/platform_packages_apps_camera.git
    blandroid/packages/apps/Camera$ git fetch fork
    From github.com:(your github username)/platform_packages_apps_camera
     * [new branch]      master     -> fork/master
    

  2. To commit a change to your forked tree and push it to Github, you must first create a branch. repo strips branch information when checking out from the trees in .repo/projects, so the tree you work in will not be on any branch. You can checkout master, though it is a good idea to create your own branch for your change.

    blandroid/packages/apps/Camera$ git status # Not currently on any branch.
    nothing to commit (working directory clean)
    blandroid/packages/apps/Camera$ git branch my_change
    blandroid/packages/apps/Camera$ git checkout my_change
    Switched to branch 'my_change'

  3. Perform your changes, commit, do a test build and load the changes to your phone to make sure they work as expected. Once you are satisfied with your changes, you can push them to your fork:

    blandroid/packages/apps/Camera$ git commit Android.mk
    [my_change ad10a88] testing a change
     1 files changed, 1 insertions(+), 1 deletions(-)
    blandroid/packages/apps/Camera$ git push -u fork my_change
    Counting objects: 5, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (3/3), done.
    Writing objects: 100% (3/3), 302 bytes, done.
    Total 3 (delta 2), reused 0 (delta 0)
    To [email protected]:(your github username)/platform_packages_apps_camera.git
     * [new branch]      my_change -> my_change
    Branch my_change set up to track remote branch my_change from fork.
    

  4. To have your changes merged upstream into Blandroid, navigate to your fork on Github, select your new branch (if you made one), and click the "Pull Request" button.