Ingress APK Teardown [1.95.1]

Hello everyone and welcome back to another teardown. This time we are examining 1.95.1 which is slowly rolling out to a Google Play Store near you. This version includes a major visual change in addition to quite a few non Ingress related changes.

Pesky Button Sizes

Everyone has complained one way or another. The button placement in Ingress has become muscle memory for a lot of people and any change to it resulted in uproar. Now under OPS -> Device -> Smaller Icons. You can toggle a smaller button set. I think a few pictures will explain this better.


Since I’m lazy to remake my images. Old/New are not good explanations. It should be Disabled/Enabled, since New corresponds to Smaller Icons being enabled.


In short you can see many visual elements shrinking when “Smaller Icons” is enabled.



During a breaking news post a couple days ago we discovered two new glyphs — “COMPLEX” & “SIMPLE” that were allowed during the Glyph Command Centre. As of now they are no longer recognized and the APK has no mention of them. This probably means that the feature will be activated once 1.95.1 has reached everyone. We will have another breaking news post when we discover the true functionality of these additional glyphs. We have some ideas further down the post, but don’t want to spread false information.


Upsight Meet Crittercism

So I noticed two new shared object files. These are native objects to Android, so they are a bit more difficult to examine than regular Java. However, the giveaway was the name of the files.

A couple of Google Searches later, I found – TLDR – User Flow, Analytics, Crash detection, etc. This is one powerful product that can create custom reports at will (depending on what data is provided). However, we already have Upsight which sends a good detail of information used in generating reports. So it was time to see what Crittercism was doing.


So basically Upsight v2 so far. Sending some personal identifying information, which is probably useful to track individual crash reports per user or something. Since Google Analytics and Upsight are already sending data, then sure throw in another (Crittercism) at this point.

Crittercism is far smarter though. While Upsight relies on more personal Ingress information (distance to nearest portals, last time played, etc) its probably used for recruiting businesses for sponsored items / portals as they have direct correlation of players and portals for a heatmap of activity.

This new analytic engine takes a different approach. For every action in Ingress you generate a request. Your phone sends a Request to Niantic and they respond with a Response.  Crittercism hooks into this to track when the request was sent, how large the request/response payload was and what device/host sent it.


This adds a lot more requests to your device now. Your phone sends an additional outbound request for every group of game requests. This data could be used for enhanced error tracking to identify failures or much more.


Upsight Meet Upsight v3

I thought Crittercism was the end of this teardown, but I noticed updates to Upsight. I dubbed the changes in 1.94.0 Upsight v2, so it was only fair to call these changes Upsight v3. Some alarming new files were found.

  • res/layout/upsight_fragment_billboard.xml
  • res/marketing_content_view.xml

Now this could be anything. A little webview to load some Javascript to perform enhanced analytics. So I took a peek in marketing_content_view.xml.

<RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent">
 <WebView android:id="@id/upsight_marketing_content_view_web_view" android:layout_width="fill_parent" android:layout_height="fill_parent" />
 <ImageView android:id="@id/upsight_marketing_content_view_close_button" />

I removed some tags to shorten the display, but this is the gist. You can have a Webview hidden on a page to simply leverage analytic tools. This allows you to run Javascript in a hidden view. It doesn’t make sense why there is an ImageView with a close button. Just imagine a full screen web browser with a close button. This sounds like an ad to me.

I did a bit more research. New to this version was two entire directories of files.

  • marketing.internal.billboard

Wait. Push Service?

For those who don’t know. There are two types of data request. Push & Pull. Your device can reach out every once in awhile on a slow polling process and “pull” for data itself. The alternative is having a listener on your device that listens for connections and have something “push” data to it. This requires a listener which has to be registered.

Just our luck, two more services (listeners) were registered in this version, including a quite scary one which I believe is related to the metadata tag below.

<meta-data android:name="com.upsight.extension.googlepushservices" android:value=""/>

Upsight meets Nemesis in short. Nemesis is the codename for the core Ingress engine. This basically says that Nemesis (Ingress Core) has the ability to listen to a Upsight Push Notification System, which is hooked to this “UpsightMarketing“.

I don’t want to be wrong and start a panic. So I won’t say anything, but the evidence is overwhelming for something, which involves reaching out for data and returning it into a webview.


Update – 3/21/2016 – Niantic responded to my inquiry about Upsight

Thanks for reaching out for clarification on what Upsight is. Upsight provides us with two types of functionality.

The first is to collect stats to better understand how users play our game. We can use that data to improve the user experience. It is similar to Google Analytics if you are familiar with that product. As noted in one of your teardowns, the second feature of Upsight is to send targeted Ingress messaging to our users.

A recent example is the notification reminder we sent to U.S. users about the upcoming Obsidian Anomalies. That is essentially the extent and our intended use of the tool. We think traditional in-game interstitial ads lead to a poor user experience and break the flow of the game. We have consistently avoided the use of them. Our goal is to create a sustainable ecosystem for us to be able to continue running Ingress for the long term without the need for those types of intrusions.

Lawson Power Cube

So for those who’ve hacked a Lawson Power Cube, the item has had a description on it. However, this makes no sense. The fields in the application are empty in both the code (java) and resources (xml). This is how we’ve spoiled item’s purposes in the past. So where is this item description coming from?


Those sneaky guys. The resource description and title for the new item are hiding in the response your phone gets from the Store tab.

In addition to this. You see the description for ‘GLYPH_HINT_SIMPLE_HACK – ENTER “SIMPLE” – SEE GLYPHS LONGER’. 

So we can infer that SIMPLE = See glyphs longer. Complex might mean see glyphs for a shorter amount of time? There might be a gear advantage to using COMPLEX. Who knows, we need an official announcement. Since we are just going off a single description field.



This was a large post with a lot of research. This version was built on March 3 and obtained on March 7. I’ll see some of you at Orlando!