5

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. 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?

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

PE32 executable (DLL) (console) Intel 80386 Mono/.Net assembly, for MS Windows
  • 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 '18 at 10:49
3

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.

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.