Ramblings of a Tampa engineer

This is my fourth teardown of Ingress. If you don't know what these are, here is my first one. This one is very late, due to a couple of reasons.

  1. I was late getting the new apk.
  2. I was busy.
  3. I found nothing major on my first look, so I didn't publish it.
  4. I was at the Little Rock anomaly.
Thanks to an email tip from Roberto, It appears I might have missed some things. So I took another look.

 

Unverified

It appears the things unverified clients can do is dwindling. We will probably see these limitations enabled in the not too distant future.
const-string/jumbo v1, "unverifiedXmCapacity"
const-string/jumbo v1, "unverifiedInventoryCapacity"
const-string/jumbo v1, "unverifiedApCapacity"
const-string/jumbo v1, "enableVerifiedGameActions"
Google's luck developing a rock solid anti-spoof algorithm hasn't been working to the best that they hoped. They have started to put their effort towards increasing the steps spoofers have to take after being banned.

Example: When you get banned from Xbox live. You need a new account and Xbox, which for some isn't worth it. You will have to be verified to play Ingress effectively, while this can be abused quite easily. It may prove to be steps to annoy spoofers to the point of quitting.

The verification will prove more and more difficult to get for Ingress spoofers.

const-string/jumbo v2, "Failed to request a verification code. Verification limit reached for this phone number."

If your phone number and unique android device id are used in verification. You will continue to have to gain new ones in order to play. Hopefully the annoyance will deter the spoofers as the limitations are coming soon.

const-string/jumbo v0, "The %s action can be unlocked by becoming a trusted agent."
const-string/jumbo v0, "The %s action can be unlocked by becoming a trusted agent."
const-string/jumbo v0, "You must verify with %s to level up."
(%s being ADA or JARVIS)

Capsules??

This tip was linked to me via Roberto to this Reddit post.

I grepped for 'capsule' and found a lot of stuff. However, I never detected changes, because some of these have been there since at least 1.42.1.

So what exactly is this capsule thing that has been in the APK for a long time, but shown no purpose.

Lets check the block of code posted on reddit.

Creators: MeshPartBuilder; capsule .createCapsule Strings: The capsule did not recognize an item. || Unrecognized item in the capsule. Object definitions: CAPSULE->Capsule
So after my teardown I found the reference, including the file path.

/smali/com/badlogic/gdx/graphics/g3d/utils/ModelBuilder.smali

.method public createCapsule(FFIILcom/badlogic/gdx/graphics/g3d/Material;J)Lcom/badlogic/gdx/graphics/g3d/Model;
    .locals 6

For those that don't understand it yet. I'll break it down further. This code is in the libgdx library. Not Ingress. Libgdx is the framework for the game.  Looking at that above code and a simple search, we get this.

So that debunks the first line of text, since this method is just a call to create a Capsule object. The second line of text has some truth behind it. We trace it back to the file where we find this.

const-string/jumbo v2, "Too many items."
const-string/jumbo v2, "The capsule did not recognize an item."
const-string/jumbo v2, "Unrecognized item in the capsule."

It has direct calls to a new Enum, which consists of these labels.

const-string/jumbo v1, "CONTAINER_INVENTORY_FULL_GENERIC"
const-string/jumbo v1, "INVALID_LOAD"
const-string/jumbo v1, "INVALID_UNLOAD"

We then go look into the file that controls items. This file has all the programming reference and human-readable references of all in-game items.

const-string/jumbo v1, "EMITTER_A"
const-string/jumbo v3, "Resonator"

(this above pair of strings exist for every item, yes even Ultrastrikes)

Capsules are now in this list

const-string/jumbo v1, "CAPSULE"
const-string/jumbo v3, "Capsule"

All items also have an associated object/mesh. I looked for the capsule one, in order to emulate the look of it, but it does not exist yet.

This is valid proof that we have a new item, maybe the development team is pumping out features faster than the modeling team can make them :)

Taking all these strings and inferring. I came up with this.

  • Capsules hold items (due to the dictionary definition of capsule, and the fact that strings say "too many items, etc")
  • Capsules can be unloaded and load. Possibly into Portals?
  • Capsules cannot be opened if the contents overflow your inventory

Closing Notes

Sorry this teardown is small, not much in here. Hopefully my automated script will be ready soon that takes human error out of the equation. (It basically diffs the entire APK, and ignores changes that are just the obfuscation changing variable name). This will help leave only real changes left for me to look at. Since now, I'm currently diffing around 560 files.

(the repo will be public when finished)

Random Changes in 1.46.1

  • Coda Large Font size is 32, instead of 48
  • Coda Medium Font size is 26, instead of 40.
  • Code Small Font size is 21, instead of 32.
  • Glyph Rewards title updated
  • xxxhdpi icon added
  • A new unicode library added
  • Range filter updated for more ranges
 
You’ve successfully subscribed to Connor Tumbleson
Welcome back! You’ve successfully signed in.
Great! You’ve successfully signed up.
Success! Your email is updated.
Your link has expired
Success! Check your email for magic link to sign-in.