The Android for MSM project allows users to build an Android based platform containing additional enhancements for Qualcomm chipsets.
The platform is based upon Android Open Source Project process and tools. Documentation, original sources and an overview of Android can be found there.
A Gitweb interface is available to browse the Codelinaro source tree. The Android Open Source Project interface can be used as reference.
Codelinaro Android releases are based upon the source released from the Android Open Source Project (AOSP). AOSP releases are periodically merged into the Codelinaro development branch and public releases made at stable points in the cycle.
The Android Open Source Project (AOSP) makes releases from a named pastry branch (''cupcake'', ''donut'', etc). The AOSP changes are merged and a general AOSP release is made in same pastry branch. For example, the AOSP makes a release in the ''donut'' branch. After merging in AOSP changes Codelinaro makes a general release from its ''donut'' branch. The Linux kernel is included as an Android project but follows a different branch naming scheme based upon released Linux kernel versions (e.g., android-msm-2.6.29). The same process of merging the AOSP changes and releasing is followed by the kernel. The Repo manifest specifies which kernel branch or commit is used with a given release.
Codelinaro creates stabilization branches based upon the general release branch. A stabilization branch is created in order to stabilize and fix chipset specific problems with the general release branch. In keeping with AOSPs pastry theme stabilization branches are named after different kinds of pastries. Multiple stabilization branches may exist for each AOSP pastry release branch. ''carrot.cupcake'' and ''coconut.cupcake'' are examples of stabilization branches based upon the AOSP ''cupcake'' release branch.
Both Git tags and Repo manifests are created in the general release branch (''cupcake'', ''donut'', etc) and in stabilization branches (''carrot.cupcake'', ''coconut.cupcake'', etc) when a tested and stable version of Android is released by the Codelinaro. Generally speaking the tag and manifest are named after the corresponding modem Build ID or release. The tags and manifests ensure that the Android source tree can be obtained from the Codelinaro and used with a specific Qualcomm modem build or release.
For reference and comparison purposes an unmodified copy of all AOSP branches is available from both the Codelinaro Gitweb interface and from Git/Repo in Codelinaro downloads. These unmodified AOSP source branches are identified by the ''aosp/'' prefix. The original unmodified AOSP donut branch is called ''aosp/donut'' and the corresponding AOSP kernel branch ''aosp/android-msm-2.6.29''. Each project within Android contains ''aosp'' branches. See the bionic and Linux kernel msm projects as examples.
Releases are available for download using Repo and Git. A specific release is downloaded by choosing both a branch and manifest from the Releases table.
Note: Use the below commands for syncing the code for all the releases from August 8th, 2012 onwards.
If you don't need history of previous releases, please use below command for faster performance
https://wiki.codelinaro.org/en/clo/le/release
Branch | Targets |
---|---|
release | msm7627a, msm7630, msm8660, msm8660_csfb, msm8960, apq8064, mpq8064, msm8930, msm8625, msm8974, apq8084 |
jb | msm7627a, msm7630, msm8660, msm8660_csfb, msm8960, apq8064, mpq8064, msm8930, msm8625 |
jb_rel | apq8064 |
ics | msm7627a, msm7630, msm8660, msm8660_csfb, msm8960, apq8064, mpq8064, msm8930 |
ics_rb | msm8960 |
ics_rb1 | apq8064 |
ics_rb2 | msm8625 |
ics_rb3 | msm8930 |
ics_rb4 | msm8625 |
ics_rb6 | msm8960 |
ics_rb7 | mpq8064 |
ics_chocolate | msm7627a, msm7630, msm8660, msm8660_csfb, msm8960 |
ics_chocolate_rb1 | msm8960 |
ics_chocolate_rb4 | msm7627a |
ics_chocolate_rb7 | msm8660_surf, msm7627a, msm7630_surf, msm7630_fusion |
ics_choco_cs | msm8960 |
ics_es3 | msm8960 |
ics_strawberry | apq8064, msm8625, msm8960 |
ics_strawberry_rb2 | msm8625 |
ics_strawberry_rb3 | msm8930 |
ics_strawberry_rb5 | msm7627a |
gingerbread | msm7627, msm7627a, msm7630, msm8660, msm8660_csfb, msm8960 |
gingerbread_chocolate | msm7627a |
gingerbread_house | msm7627, msm7630, msm8660 |
gingerbread_rel | msm7627, msm7630, msm8660 |
froyo | msm7627, msm7630, msm7630_fusion, msm8660, qsd8650, qsd8650a_st1x, msm7627_7x |
froyo_almond | msm7627, qsd8650 |
froyo_pumpkin | msm8660, msm7630_fusion, qsd8650a_st1x, msm7630 |
froyo-release | msm8660 |
froyo-release-2 | msm8660 |
froyo_squash | qsd8650a_st1x |
froyo_strawberry | msm7630 |
eclair | msm7627, msm7630, msm7630_fusion, msm8660, qsd8650, qsd8650a_st1x |
eclair_caramel | msm7630 |
eclair_chocolate | msm7627, qsd8650 |
eclair_coffee | msm7627 |
eclair_rum | msm7627 |
eclair_strawberry | qsd8650 |
eclair_vanilla | msm7630 |
donut | msm7625, msm7627, msm7630, qsd8650 |
donut_cinnamon | msm7627 |
donut_cream | msm7627 |
donut_frosted | msm7627 |
donut_glazed | msm7627, qsd8650 |
donut_honey | qsd8650 |
donut_lemon | qsd8650 |
donut_strawberry | qsd8650 |
banana.cupcake | msm7627 |
blueberry.cupcake | msm7x00 |
carrot.cupcake | msm7x00 |
chocolate.cupcake | msm7x00 |
coconut.cupcake | msm7x00 |
mango.cupcake | msm7x00 |
mocha.cupcake | qsd8650 |
Fixes are sometimes available in patch format only.
A listing of Patch Releases
Follow the Repo instructions to download and install Repo.
Download the Android source tree by specifying the branch and manifest for a specific Codelinaro release. In this example the download the carrot.cupcake branch using manifest ''M7201JSDCBALYA6380.xml''
Build the source tree
Running choosecombo with no arguments will prompt for Android build options and target.
Make sure that the environment has been completely and correctly as described by the Android Open Source Project instructions before attempting to build. If you get build errors about clearsilver.jni, verify the Java version and path. (javac version 1.5.0_16 is verfied as working).
Once the environment has been configured build Android as follows
The envsetup.sh script is responsible for setting Bash environment variables required by the Android build system.
Now use choosecombo to set the desired build by specifying Build, Type, Product and Variant.
Choosecombo is interactive or it can take arguments on the commandline
Start the build
By default, the build system uses the tip of kernel source from <platform>/kernel directory, including any modifications you've made.
If you want to compile the kernel with a specific configuration file other than the one defined in vendor/qcom/<product>/AndroidBoard.mk (e.g. msm7201a_defconfig) pass the KERNEL_DEFCONFIG flag on the Make command line.
The kernel objects, vmlinux and zImage will be at <platform>/out/target/product/msm7201a_surf/obj/KERNEL_OBJ and its subdirectories.
You can override the TARGET_PREBUILT_KERNEL flag with your own kernel image to build android with your kernel, as follows:
You can also build ''tiny android'' which is an Android build with a limited user-space environment useful for kernel development and verification. The ''tiny android'' build will not boot into the full UI. It will stay at one of the loading screens. ADB will be active, allowing you to run unit tests, etc. The build time for ''tiny android'' is significantly less than a full Android build.
You can also tell the build system to echo to stdout the full commands and parameters that it would use in building each file without actually building the file. This is useful to see all the compiler options provided
What changed between releases?
Each release has its own Repo manifest and Git tag. Git's ''diff'' command can be used to view the commit history and source changes between releases.
For example to see what changed between the M7201JSDCBALYA63752001 and M7201JSDCBALYA63752003 release tags on the coconut.cupcake branch
How is a patch of the changes between two release tags, branches or commits generated?
The Git ''diff'' command can generate patches suitable for use with the Unix ''diff'' and ''patch'' utilities. Tags, branches and commit IDs can be used interchangeably.
For example to generate a patch of the changes made across all Android projects between the M7201JSDCBALYA63752001 and M7201JSDCBALYA63752003 release tags
What are the ''aosp/*'' branches?
Branches prefixed with ''aosp/'' are the upstream sources from the original Android Open Source Project releases. For example, ''aosp/donut'' is a copy of the ''donut'' branch found on android.git.kernel.org.
What is the ''m/*'' branch?
Repo uses a remote tracking branch to track the original upstream branch the workspace was initialised against. Running '''git branch''' with the '''-a''' or '''-r''' options will display Repo's ''m/*'' branch. This branch is created when a '''repo init''' is performed and used by Repo to synchronise with the upstream source. The name of the branch corresponds to the branch name Repo was initialized with, e.g. '''repo init -u URL -b donut''' creates a local ''m/donut'' branch in your workspace.
How is a patch of all Codelinaro changes to the AOSP (Android Open Source Project) release generated?
The ''aosp/cupcake'' branch is a unmodified copy of the cupcake branch from the AOSP release. A diff of the ''aosp/cupcake'' branch with the ''cupcake'' branch will show the changes added to the base AOSP (Android Open Source Project) release. The Linux kernel uses a different branch naming convention and must be handled separately from other AOSP projects.
What files, branches or tags changed and and how to output the commit text?
In this example generate a listing of changes between the AOSP cupcake release branch and the Codelinaro carrot.cupcake release branch
Tags, branches and commit IDs can be used interchangeably.
The source code available for download from Codelinaro may be covered by one or more different licenses. The files in Codelinaro may contain changes and additions on top of the code from the original source. These changes and additions are covered under the same license as the original source. In many cases, the license is explicitly listed at the beginning of the file. A list of licenses is included for reference purposes only.\