Doc: adding your own app
Intro: Adding a new app to the build
So after completing a build, people have been asking how to add their own app(s) to the CyanogenMod .zip file.
The "easy" way-- Add it to the zip manually
One way to do this is to simply add the .apk into the .zip and then edit the recovery installation script (written in a simple scripting language called "edify") to copy the file from the .zip to the device.
The "right" way: Make a part of the build repository so it auto-builds
Add app source to
You can do this manually, or you can do it via the
.repo/local_manifests/*.xml. If you do it this way, a
repo sync will update the source to your app from whatever git repository you name in the local manifest. It's pretty easy to use, and allows you to override/replace/add/remove any official CM repository with one or more of your own.
Determine the name of the project from
Regardless of how you put the source in
packages/apps/, assuming that the source for the app has an
Android.mk Makefile, you can get it to automatically build and install the resulting file in your
$OUT directory (and thus your
.zip) by simply determining the name of the project, which is typically defined in
Android.mk with this:
LOCAL_PACKAGE_NAME := PackageName
Add the project to
device.mk (or whatever .mk) in the device folder
Then just add that project to be built in the
For the nexus 7, the
device-common.mk file is shared with the tilapia device (the Nexus 7 GSM version), so if you're building for another device that doesn't have
device-common.mk, you'd probably make the edit to
Now you have a choice. If
PRODUCT_PACKAGES was previously defined, you can add a value like this:
PRODUCT_PACKAGES += MyPackageName
+= part means to append it to the list.
Or, if it's simpler, you can just add it to the end an existing
PRODUCT_PACKAGES list of projects by appending a "
\" to the last item and then adding
MyPackageName at the end. Notice that you can't put any commented lines (ie, lines starting with
#) or even blank lines in the list of items to be built.
So if the list looks like this...
PRODUCT_PACKAGES := \ lights.grouper \ audio.primary.grouper
...you'd add it to the end:
PRODUCT_PACKAGES := \ lights.grouper \ audio.primary.grouper \ MyPackage
If the source for your app does not have the
Android.mk makefile stuff, you'll need to add it. You can use any of the existing packages in
packages/apps as a model for what needs to be done to build your particular app.
See here for official documentation on Android .mk files.