Skip to content
c:geo - The powerful Android geocaching app.
Branch: master
Clone or download
Latest commit 1f2071e Apr 23, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Update Feb 21, 2017
.idea Updated checkstyle config after plugin update Jan 22, 2019
cgeo-calendar Fix #2038: Provide calculator in edit waypoint activity Jul 29, 2017
cgeo-contacts Fix #7491, Crash when trying to store cache list (Android 4.x) Apr 14, 2019
common/src/cgeo/contacts fix #6367: replace calendar plugin by intent method Feb 28, 2017
crowdin Fix #6623, Switch crowdin access to Jun 30, 2017
gradle/wrapper gradle_upgrade Mar 27, 2019
main Merge branch release Apr 23, 2019
mapswithme-api Make lint for mapswithme happy (#7383) Mar 17, 2019
nine-old-androids ignore unused suppresswarnings in library project Jul 18, 2017
play-services-base remove all IML files Jul 3, 2017
play-services-basement make eclipse build with google api 23 too Sep 17, 2016
showcaseview Fix #2038: Provide calculator in edit waypoint activity Jul 29, 2017
templates templates: add placeholder for SU (#7402) Mar 20, 2019
tests remove (now unused) live map strategy feature (fix #7525) (#7530) Apr 23, 2019
undobar remove all IML files Jul 3, 2017
viewpagerindicator make eclipse build with google api 23 too Sep 17, 2016
Jenkinsfile Check before create dir or file Aug 18, 2017
LICENSE Fixes #2946, Replace license file Jul 4, 2013
NOTICE Fixes #2946, Replace license file Jul 4, 2013 add info about Google Api as prerequisite for Google Maps Apr 11, 2019
build.gradle Fix #7491, Crash when trying to store cache list (Android 4.x) Apr 14, 2019
checkstyle.xml checkstyle: enforce imports order Jan 25, 2019 fix warning "variant.install() is deprecated" Mar 28, 2019
gradlew gradle_upgrade Mar 27, 2019
gradlew.bat gradle_upgrade Mar 27, 2019
settings.gradle configure gradle build cache Mar 3, 2019
suppressions.xml moved checkstyle config to root Mar 7, 2017

c:geo is an open source, full-featured, always ready-to-go client for (unofficial) and offers basic support for other geocaching platforms. It does not require a web browser or exports - just download and start right away.

You want to contribute?

Perfect! Please tell us in the issue tracker before hacking on your great new feature. It would be bad if you have implemented something great, but we can't include it because it doesn't fit the remaining architecture and code. You might also want to chat with the developers on channel #cgeo on the freenode IRC network.

Starting points for contribution

You can also take a look onto the project page of our repository. For example we have a collection of urgent issues and a list of beginner topics which collects issues, which might be suitable for your first contribution.

Project status

Build Status
Codacy Badge

Get the source

Fork the project source code, make changes to your clone and create a pull request afterwards.


  • master is for development of new features. Nightly builds are created from this branch.
  • release is for all bug fixes of already existing features. So if a bug is reported in released version, it should be fixed on this branch (and merged to master afterwards).

A more complex bugfix can be first tested against the master branch and integrated in the nightly builds, while kept compatible with the release branch for a later integration. Such a procedure is described in the wiki.

Setting up an IDE

The standard IDE for Android projects is Android Studio, which is based on IntelliJ IDEA. We use it for the development of c:geo. It is also possible to use eclipse for writing code/testing and Android Studio for building. This is not more official supported.

Details for setting up the IDE is described in the wiki (



  • Android SDK (latest version) including Google APIs (at least) V26, Google repository and Android support repository. (File => Settings, Appearance & Behaviour => System Settings => Android SDK, Check "Show Package Details" on "SDK Platforms" tab and check subpackages as needed.)
  • If you use Microsoft Windows, Google USB Driver to install the application on the smartphone.
  • You need to provide several API keys for compiling the app. See next section for details.

API keys

Google doesn't hand out new keys for Google Maps v1, you have to use an existing one. You can leave it empty, but then Google Maps doesn't work. Also to be able to use Google Maps you need to use a Google Api enabled image, so make sure to select the right image for your emulator/device, otherwise Google Maps won't be offered as map provider in c:geo.

Request your personal API key for the various OpenCaching sites we support. If you leave these blank, then those networks will remain disabled.

To obtain API key for you need to request access from administration, keys are generated manually on request.

For semi-automatic configuration

  1. copy ./templates/ to ./
  2. edit with your keys
  3. on the gradle build the main/res/values/keys.xml is created and filled with the data from

If you want to do fill the keys.xml by hand copy main/templates/keys.xml to main/res/values/. Then edit main/res/values/keys.xml. For each key, replace the value starting with @ and ending with @ (inclusive) with the key. If a key is missing, remove the value and the leading and trailing @).

Building with gradle

Run gradlew from the root directory of the git repository. That will install the necessary build framework and display how to build cgeo. gradlew assembleBasicDebug might be a good start. Alternatively you can use "make" in Android Studio ("Build" => "Make Project")

To be able to create an installable Android package (APK) you need to create a signing key first. In Android Studio go to "Build" => "Generate Signed Bundle & APK", select "APK" and follow the instructions. You will create a key storage and an project specific key. Enter path and access information to those in file cgeo/


The Test classes can be found in the project test. Test classes should be located in the same package as the class under test. Every class can be run with Run '<class name>' or debugged with Debug '<class name>') as an Android JUnit Test. To run all tests use the same Run 'Tests in <package name>' menu item from the context menu of a package in the test project.

For tests to run successfully you need to configure c:geo on the emulator that runs the test with a valid account. In order for all tests to be successfull the account needs to be a premium member.

Tests may also be launched from command line. Use gradlew assembleBasicDebug from the root directory of the git repository.

Deploying the app locally for testing purposes

Android Studio needs to be configured for which device(s) c:geo to deploy to. Use "run" => "run" (2nd entry with this heading). You can create several profiles for either a physical device attached via USB as well as virtual devices run in an emulator. (If the emulator is not installed yet do so via File => Settings, Appearance & Behaviour => System Settings => Android SDK, tab "SDK Tools", check "Android Emulator" and apply.)


c:geo is distributed under Apache License, Version 2.0.


You can’t perform that action at this time.