I used Archive Manager on Linux Mint to open the APK of a game made with Unity. To my surprise, inside the archive, there is a folder under the path /assets/bin/Data/Managed/ that contains almost 10MB of DLL libraries.

The file command on Linux gives this output on the DLLs:

PE32 executable (DLL) (console) Intel 80386 Mono/.Net assembly, for MS Windows

As far as my understanding goes, those should only be useful on Windows running machines.

Why would anyone load 10MB of useless data in a 50MB APK? Am I missing something here and DLL libraries can in fact be used by Android?

  • 4
    Raw guess by file's output: that app is using Mono and loads code via those libraries in a way like Wine does on Linux. Some comparable thing on Linux were the win32codecs; also a collection of *.dll files to support additional media codecs on Linux.
    – Izzy
    Apr 30, 2018 at 10:49

1 Answer 1


Izzy's guess is correct. Unity is based on Microsoft's .NET programming environment. A Unity game is written in C# and compiled to DLL files (the portable executable format, which is abbreviated to PE32 in the output you included). Unity packages those files along with the game's assets (3D data, textures, videos, sounds, &c.) and the Mono runtime. Mono is an open-source runtime for software made in .NET: it loads the .NET DLL files and executes them.

DLL files can contain executable programs for Windows, or Windows icon files, or compiled .NET code (the .NET equivalent of Java .class files). In a Unity game, it's the last of these options.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .