public static bool AttemptGetUnityFolderMonoDLLs(bool wasWebBuild, bool wasAndroidApkBuild, string editorAppContentsPath, ApiCompatibilityLevel monoLevel, StrippingLevel codeStrippingLevel, out string path, out string higherPriorityPath)
{
bool success = false;
// more hackery
// attempt to get DLL size info
// from Unity install folder
//
// this only happens in:
// 1. Web build
// 2. Android build
// 3. Custom builders
//
string[] pathTries = new string[]
{
editorAppContentsPath + "/Frameworks/Mono/lib/mono",
editorAppContentsPath + "/Mono/lib/mono",
"/Applications/Unity/Unity.app/Contents/Frameworks/Mono/lib/mono",
"C:/Program Files (x86)/Unity/Data/Mono/lib/mono",
"C:/Program Files (x86)/Unity/Editor/Data/Mono/lib/mono",
#if UNITY_3_5
"/Applications/Unity3/Unity.app/Contents/Frameworks/Mono/lib/mono",
"/Applications/Unity 3/Unity.app/Contents/Frameworks/Mono/lib/mono",
"/Applications/Unity3.5/Unity.app/Contents/Frameworks/Mono/lib/mono",
"/Applications/Unity 3.5/Unity.app/Contents/Frameworks/Mono/lib/mono",
"C:/Program Files (x86)/Unity3/Data/Mono/lib/mono",
"C:/Program Files (x86)/Unity 3/Data/Mono/lib/mono",
"C:/Program Files (x86)/Unity3.5/Data/Mono/lib/mono",
"C:/Program Files (x86)/Unity 3.5/Data/Mono/lib/mono",
"C:/Program Files (x86)/Unity3/Editor/Data/Mono/lib/mono",
"C:/Program Files (x86)/Unity 3/Editor/Data/Mono/lib/mono",
#endif
#if UNITY_4_AND_GREATER
"/Applications/Unity4/Unity.app/Contents/Frameworks/Mono/lib/mono",
"/Applications/Unity 4/Unity.app/Contents/Frameworks/Mono/lib/mono",
"C:/Program Files (x86)/Unity4/Data/Mono/lib/mono",
"C:/Program Files (x86)/Unity 4/Data/Mono/lib/mono",
"C:/Program Files (x86)/Unity4/Editor/Data/Mono/lib/mono",
"C:/Program Files (x86)/Unity 4/Editor/Data/Mono/lib/mono",
#endif
};
string tryPath = "";
for (int n = 0, len = pathTries.Length; n < len; ++n)
{
tryPath = pathTries[n];
if (Directory.Exists(tryPath))
{
break;
}
tryPath = "";
}
if (!string.IsNullOrEmpty(tryPath))
{
success = true;
// "unity_web" is obviously for the web build. Presumably, this one has DLLs removed that can compromise web security.
// "2.0" is likely the full featured Mono libraries
// "unity" is most likely the one used when selecting 2.0 subset in the player settings. this is the setting by default.
// "micro" is probably the one used in StrippingLevel.UseMicroMSCorlib. only makes sense to be here when building on Android.
// since in iOS, we already have the DLL files. No need for this hackery in iOS. But since in Android we do not have a project folder,
// we resort to this.
if (wasWebBuild)
{
path = tryPath + "/unity_web/";
}
else if (monoLevel == ApiCompatibilityLevel.NET_2_0_Subset)
{
path = tryPath + "/unity/";
}
else
{
path = tryPath + "/2.0/";
}
if (wasAndroidApkBuild && codeStrippingLevel == StrippingLevel.UseMicroMSCorlib)
{
higherPriorityPath = tryPath + "/micro/";
}
else
{
higherPriorityPath = "";
}
}
else
{
path = "";
higherPriorityPath = "";
}
return success;
}