3

I've built a release candidate of our Unity3d android game, and I've tried it on multiple devices. It's working everywhere except on this one Samsung Captivate. On that one device, it refuses to even install. You try installing from the APK and it thinks for a moment, then tells you the application wasn't installed. No more information than that.

Weirdly previous versions of this app have always installed fine. There's only some minor crash fixes in this new version, although I have upgraded the android tools from r21 to r22.

The phone runs froyo, but the manifest has a minimum API of 8. Here's a screen shot of the manifest info as seen by the play store:

manifest showing API 8

Here's the device's info dump: http://pastebin.com/4jWq1nRS

Here's the logcat from the install: http://pastebin.com/X6K87fPK (look for company.appname)

The install finishes failing at 14:35:50.275. Just before that, and multiple times through the install, the phone complains:

07-15 14:35:47.185 W/PackageParser(2480): Unknown element under <manifest>: supports-gl-texture at /data/app/vmdl62580.tmp Binary XML file line #51

Which is odd, because a) supports-gl-texture is a valid manifest element and b) neither the google play console or any other phone complains about the manifest.

There are some exceptions that mention com.mobidia.android.mdm.testframework.TestManager. I got the user to uninstall mobidia's My Data Manager but still couldn't install.

This error pops up in the logcat:

07-15 14:35:47.427 W/PackageParser(2480): Exception reading assets/bin/Data/Managed/Assembly-CSharp-firstpass.dll in /data/app/vmdl62580.tmp
07-15 14:35:47.427 W/PackageParser(2480): java.lang.SecurityException: /data/app/vmdl62580.tmp failed verification of META-INF/CERT.SF
...
07-15 14:35:47.427 E/PackageParser(2480): Package com.company.appname has no certificates at entry assets/bin/Data/Managed/Assembly-CSharp-firstpass.dll; ignoring!

I've checked out answers like "Eclipse wont let my app run" for the "no certificates at entry" error but don't think they apply, because this issue is specific to a phone, not a build. The build is certainly signed with our release certificate, otherwise I couldn't upload to the play store. I verified it with jarsigner and it showed up as fully verified.

Any other diagnostics I can provide? Any idea why things are broken with this one phone? I don't want to release and discover this is an issue with many many phones.

Community
  • 1
  • 1
tenpn
  • 4,556
  • 5
  • 43
  • 63
  • 2
    The device runs on Android 2.3, so are you sure you didn't add something which requires a higher Android version? – g00dy Jul 16 '13 at 08:01
  • The answer probably lies in those "_minor bug fixes_"... Sounds like a loaded term to me. – jahroy Jul 16 '13 at 08:02
  • literally just a couple of null checks. It was the tooling that changed most significantly. – tenpn Jul 16 '13 at 08:04
  • @g00dy definitely no new features. would you expect this kind of error if the user tried to install on a phone that didn't support some features? it's very specific about the certificates. – tenpn Jul 16 '13 at 08:06
  • @jahroy there was an issue with r22, but it was fixed in Unity 4.1.4. I'm running 4.1.5. but if that was the issue, I'd expect it to fail everywhere, or not build, rather than only on this phone. It works on a Galaxy I, an SII, and an N7. – tenpn Jul 16 '13 at 08:07
  • [This answer](http://stackoverflow.com/a/5746023/778118) looks **very** related. If there's one thing I do remember about Unity: the size and dimensions of your textures are **insanely** important. It seems quite likely that the phone in question just doesn't have the horsepower to handle your textures. Using powers of 2 for your texture dimensions was a huge deal in my Unity experience. Dealing with textures was one of the biggest aspects to releasing our app on mobile devices (it wasn't an issue at all for standalone or web). – jahroy Jul 16 '13 at 08:12
  • @jahroy the textures and assets haven't changed since the last time he was able to install the game on the device, and if it was an asset issue I'd expect it to at least *install* and maybe crash on loading? – tenpn Jul 16 '13 at 08:38
  • Right on... I don't know what to say. But I would definitely try powers of two on the dimensions of all my textures. That's a good idea no matter what. It should be pretty easy to rule this out as a possible issue by removing all your textures or making them very small. If the app starts to work, you know you're on to something. Sometimes troubleshooting is a long process of elimination... That's how I remember my first iOS app. We had to remove one piece of code at a time until we found the piece that was breaking everything. – jahroy Jul 16 '13 at 08:44

2 Answers2

2

This looks like Android Bug 56006, which is currently unresolved.

You seem to be in good company, however: someone at Airbnb posted an identical experience in that bug, and confirmed that building with r21 resolved it.

You might want to chime in there with your logs.

mik3y
  • 4,214
  • 1
  • 22
  • 29
0

I completely rolled back my tools from r22 to r22 and it fixed the issue, but this doesn't seem like a viable long-term solution.

Rolling back isn't easy! It involves overwriting my android-sdk/tools/ dir with a downloaded copy of r21's tools (you have to guess this URL, google doesn't publish it. check out http://developer.android.com/sdk/index.html). Then open the SDK manager and re-install the platform tools.

For eclipse, I needed to delete, re-install, then import a zipped copy of the ADT plugin (again check out the website and guess the link!). Uninstalling and then re-installing the rolled-back plugin caused issues.

tenpn
  • 4,556
  • 5
  • 43
  • 63