0
\$\begingroup\$

I developed an Android game using Unity3D and successfully published it in Play Store. But the apk size almost 30MB which is pretty big for my game. When I checked the Editor Log after the build, this is what I found:

Textures      2.5 mb     20.1% 
Meshes        433.8 kb   3.4% 
Animations    2.2 kb     0.0% 
Sounds        3.9 mb     31.3%
Shaders       191.3 kb   1.5% 
Other Assets  157.9 kb   1.2% 
Levels        166.9 kb   1.3% 
Scripts       1.2 mb     9.4% 
Included DLLs 3.9 mb     31.5%
File headers  44.5 kb    0.3% 
Complete size 12.5 mb    100.0%

I just don't understand how could the final build will weigh more than twice the size stated in the log

\$\endgroup\$
-2
\$\begingroup\$

In your case, most of the space is occupied by sound and texture.

  • For sound, compress big sound into mono, and compression formats should be streaming.
  • For texture, compress big textures. You can find thee textures that occupy more size via the editor log and compress them while they do not become blurred.

In Unity, go to "Player Settings" -> "Device Filter" -> "Choose Armv7'; it may help you.

\$\endgroup\$
  • \$\begingroup\$ In the output, yes. But the main issue is reported as 'this represents a 12.5MB game; it comes out as 30MB'. More than half of the size is not accounted for in the output. \$\endgroup\$ – Gnemlock Jan 24 '17 at 7:43
-1
\$\begingroup\$

Unity runtime is taking up a lot of space. You could try reducing the build size by stripping the assemblies. Refer to the documentation about stripping byte code on android under "Other settings" in build settings window. You can also try downloading the assets from the web on first run. There is not much else to do than that.

\$\endgroup\$
  • \$\begingroup\$ This answer actually peaked my interests, so I started looking through the directed link. I note that StripByteCode is labelled "iOS only", where as this question asks about android. Further explanation appears to be simple statements that 'option x will perform strip related task y' - nothing to actually explain how to do what is asked. This might be helpful to someone experienced in doing this, but perhaps you could provide details of how you should actually do it, or link to a page that actually does explain it. \$\endgroup\$ – Gnemlock Jan 23 '17 at 16:43
  • \$\begingroup\$ @Gnemlock Bytecode stripping works on Android too. It is generic term to use when stripping out unused program code. I specifically linked the Android part of the documentation and it has all the options listed there. Unity is a black box and does not really explain things any further than what the documentation does. If you find any better explanation somewhere it is either speculation or inside information. And how to enable the feature? Well just turn it on from the build settings and make a build. That's it. \$\endgroup\$ – Lasse Jan 23 '17 at 17:53
  • \$\begingroup\$ Not true at all. Much of the API is heavily documented, including a Manual separate to the API reference. \$\endgroup\$ – Gnemlock Jan 23 '17 at 22:00
  • \$\begingroup\$ Yeah, much of it is. Much of it also isn't. Unity is one of the most inconsistent and sometimes worst documentation I have ever used in my 10 year career. \$\endgroup\$ – Lasse Jan 24 '17 at 6:19
  • \$\begingroup\$ Stripping didn't help much. But I made my game to 19MB by restricting the game to just ARM \$\endgroup\$ – Sherin Binu Jan 24 '17 at 17:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.