UPDATE April-2015: PA Gapps has been discontinued, there are now three options: Generic KitKat (4.4.X) GApps, Generic Lollipop (5.X) GApps, or a mirror of the previous PA Gapps. Here are all differences in the packages in one easy graph. If you are unsure, grab the full/stock PA Gapps flashable package.
UPDATE Nov-2015: There are currently two popular options for flashable GApps. The first is TK GApps, a continuation of the original PA Gapps. I have tested this and it works well. Alternatively, there are more recent updates via an automated GApps package, called Open GApps, which may cover some rarer versions of Android. Note that even if you use an older GApps version, Play Services will automatically update itself the next time you connect to the Play Store.
NOTE: For further reading on securing Android and steps to protect your privacy, read my Android privacy checklist here.
Google’s Android OS has often been touted as open – this is true to a large extent. Android is based on a modified Linux kernel, with it’s own Java interpreter and libraries, and Google has released the majority of Android code to the world as the “Android Open Source Project” under the Apache license. What this means is that anybody can download the Android OS, install it on a device of their choosing, and run Android, without having to pay any costs to Google. However, there are a selection of proprietary Google Applications within Android which are not included within this distribution: these are only available to Google’s partners within the Open Handset Alliance (generally technology manufacturers who develop branded devices and work together to develop the platform). This guide will explain how to install these applications on your device.
This may possibly be due to Google wanting to protect the code within these applications (which are based tightly around their core technologies), and/or wanting to preserve the user experience by only associating the Google branding / applications with known partners and companies (for example, one of the requirements of OHA devices is a Google logo printed on it). It’s important to note that this stage why this is the case and clarify some important distinctions. First off, Google does not make phones, it’s partner’s make the phones, so Google does not generate an income stream from the open-source Android. It is however, in their best interest to distribute Android as widely as possible, because their actual income stream (advertising revenue from searches, paid placements, etc) is increasingly coming from mobile devices. Since Android is so closely intertwined with Google’s services (including their search services of course), simply put: the more people using the free Android, the more money Google can make. More importantly, on an ONGOING basis, rather than a once off. Contrast this with hardware manufacturers like Apple, who’s profit primary comes from hardware sales (and very profitable it is as well).
Just what are we talking about here?
So how does this affect us? It generally doesn’t, as the device you purchase should already have the Google Apps loaded onto it. Users will blissfully go about their activities without having to think if the software they are using is open or proprietary. However, if you are of the tinkering type and have experimented with loading various ROMs onto your device, OR you have purchased a non-OHA device (generic or low-end devices often are not OHA certified), then these applications will be notably missing.
You are probably wondering at this stage, what is this Google Apps thing, and what does it affect? It includes applications which people have come to associate with Android devices, such as the GMail application, Google Maps, Navigation, Google Talk, Car Dock, Google Account Syncing (including Picasa / Contact / Calendar sync), Google Voice, Street View, Youtube, Voice Search as well as the big kahuna, the official Android Marketplace. Pretty much all the good stuff on Android devices. You can still install and run Android without these devices and everything works fine, but it’s not quite the same if you are used to these applications. Note that recently, Google has released the Youtube and Maps apps onto the market, facilitating more direct updates to the end user. If this is an easier option for you, just grab those off the market.
So how do we fix it?
Good question. Fortunately, there are ways around this: There are generally little restrictions on the user loading their own applications onto devices (unless you have a side-locked device from a carrier, in which case, that’s a carrier-caused issue and something you’ll have to figure out on your own). Kind souls have packaged the above mentioned Google Apps into packages, ready for people to install onto their devices. Here is how you do it, note that root access is NOT required, although a complete backup is recommended just in case.
Step 1) Download the Google Apps package.
UPDATE: See the top of the post for links to the TK GApps or Open GApps packages, either of which should cover your needs.
Outdated: The Google Apps packages can now be found here: http://wiki.cyanogenmod.org/w/Gapps. There are two choices here, a talented ROM developer named Cyanogen has made available the Google Apps as a package here (scroll to bottom – dated 20/10/10). Download the package that suits your device, where HDPI indicates resolutions with 800×480 resolution, and MDPI generally for those with 480×320. Alternatively, there is a slightly older version located here (26/09)The net result is that you will have downloaded a file called update.zip. Within this file are the Google Apps themselves (in a series of .apk packages). Copy the entire update.zip to the root directory of your sdcard, generally /sdcard/ or /mnt/sdcard.
Step 2) Flash the update.zip
Now assuming that you have access to the recovery environment (preferably TWRP) on your device, boot into recovery. Generally, this is done by holding one of the volume buttons, the home button and power button on a cold boot (even without root access), although with each device it may vary. You can also reboot into recovery through ADB, by using ‘adb reboot recovery’ command, or use an application such as Quick Boot to boot into recovery. Once you are in the recovery menu (these days it’s a 2E/3E recovery system) there will be an option to ‘flash update.zip’, select and wait, then when complete, just reboot. If you DO NOT have access to the recovery console, check out Step 2B, installing via alternative method. If it worked, then you now have the full complement of apps. Head to Step 3.
Step 2B) If 2 doesn’t work, install manually
OK so what do you do if you don’t have access to recovery or the flash didn’t work? You will need to install the applications manually. Reboot your phone as per normal, then on your PC, open the update.zip with an archive explorer (Windows will do it, as will WinZip/WinRar/etc), and you will notice a series of folders. Depending on which update.zip you downloaded, navigate to data/apps or system/apps and find a series of .apk files in there. Grab the ones you want, and either install via ADB, or use a file explorer to install them after copying them to the phone.
Here’s a quick summary of what apps are what to my knowledge. The items in bold are critical for basic Google Account Sync functions. The list is based on the Froyo release of GApps (dated 09/10/10).
CarHomeGoogle.apk – Car Dock interface (with the large simplified icons / shortcuts).
CarHomeLauncher.apk – Car Dock interface (with the large simplified icons / shortcuts).
Contacts.apk – Contact/People manager, front end GUI.
ContactsProvider.apk – Database backend for contact manager.
Facebook.apk – Facebook application. Up to date version available from Market.
GenieWidget.apk – Homescreen widget which provides weather/news.
Gmail.apk – GMail application. Also installs Mail sync provider.
GoogleBackupTransport.apk – Allows backup option in settings menu to functions, backing up settings/apps to Google servers. (?)
GoogleCalendarSyncAdapter.apk – Installs Calendar sync provider. Registers specific calendars on device for use in other Calendar applications.
GoogleContactsSyncAdapter.apk – Installs Contact sync provider. Required for Google Talk application to function correctly.
GoogleFeedback.apk – When a program crashes, option to log crash report.
GooglePartnerSetup.apk – Unknown, most likely used on initialisation of device.
GoogleQuickSearchBox.apk – Widget on home screen for quick search. Also has voice search shortcut, and search type box.
GoogleServicesFramework.apk – Core for Google services backend on phone. Required for nearly all Sync functions.
googlevoice.apk – Google Voice app. Useful in countries where Google Voice is supported.
HtcCopyright.apk – HTC application to display copyright information, can be used on non-HTC devices as well, but useless.
HtcEmailPolicy.apk – HTC application to display copyright information, can be used on non-HTC devices as well, but useless.
HtcSettings.apk – HTC application to display customised settings, can be used on non-HTC devices as well, but useless.
kickback.apk – Unknown. Does not appear to be useful.
LatinImeTutorial.apk – Tutorial on how to use the touch screen keyboard. Chances are you already know how to use it.
Maps.apk – Google Maps application. Latest version also available on Market.
MarketUpdater.apk – Specific software updater for market, automatically runs as required.
MediaUploader.apk – Background service which launches everytime you run an upload function (ie. Picasa / Facebook / Emails)
NetworkLocation.apk – Uses cell triangulation and/or wireless networks to help speed up GPS location. Toggled through Location settings.
OneTimeInitializer.apk – Most likely OOBE, not necessary.
PassionQuickOffice.apk – Office suite. If you have other office suites, then not required.
SetupWizard.apk – When you enter details for your Google Account initially, this is called.
soundback.apk – Unknown, not necessary.
Street.apk – Street View, called when zoomed in on a location on Google Maps and want street level view.
Talk.apk – Google Talk, chat program. Is critical when using Android Market to download apps. Many downloads will not initialise with Talk being logged in.
talkback.apk – Possibly similar to Feedback. Does not appear to be necessary.
Twitter.apk – Twitter application and/or widget. Latest version is available from Market.
Vending.apk – Official Android Market.
VoiceSearch.apk – Voice search, can be called from shortcut, keyboards or via app drawer.
YouTube.apk – Youtube application. Latest version can be found on market.
For the absolute basic functions, you just need the items in bold. If you want all the shiny bits, then install the whole lot. I’m very much a minimalist myself, so I will generally stick to only the bare necessities, and install more later if required (since it’s a very quick process, especially via ADB). Note that if any of these apps already exist on the device, then you will need to uninstall them first. If they are marked as system apps, then you will require root access to remove them. Though you shouldn’t have to reinstall existing apps at all.
Step 3) We’re done. Initialise!
Once all apps are installed, then reboot the device. Upon rebooting, go to Accounts and Settings in menu, and a new option to enter a Google account should now be present. Your device now has the Google Apps on it. Enjoy!
* On some devices, the Market may not display applications correctly. Try clearing the cache/data for ‘Google Services Framework’ within the ‘Manage Applications’ settings menu, then clear/data for ‘Market’. Reboot and try again.
* On first run, a permission request may appear in the notification bar when Sync attempts to contact the Google services. Grant permissions as required.
* If you are installing over previous versions of these apps, ensure you wipe the cache/data before removing the old apps, as residual data may cause issues with the new apps.