internal virtual bool ShouldExplode(string aarFile)
{
AarExplodeData aarData = null;
if (!aarExplodeData.TryGetValue(aarFile, out aarData)) aarData = new AarExplodeData();
bool explode = !SupportsAarFiles;
if (!explode)
{
System.DateTime modificationTime = File.GetLastWriteTime(aarFile);
if (modificationTime.CompareTo(aarData.modificationTime) <= 0)
{
explode = aarData.explode;
}
}
if (!explode)
{
string temporaryDirectory = CreateTemporaryDirectory();
if (temporaryDirectory == null) return false;
string manifestFilename = "AndroidManifest.xml";
try
{
if (ExtractAar(aarFile, new string[] {manifestFilename},
temporaryDirectory))
{
string manifestPath = Path.Combine(temporaryDirectory,
manifestFilename);
if (File.Exists(manifestPath))
{
string manifest = File.ReadAllText(manifestPath);
explode = manifest.IndexOf("${applicationId}") >= 0;
}
aarData.modificationTime = File.GetLastWriteTime(aarFile);
}
}
catch (System.Exception e)
{
Debug.Log("Unable to examine AAR file " + aarFile + ", err: " + e);
throw e;
}
finally
{
PlayServicesSupport.DeleteExistingFileOrDirectory(temporaryDirectory);
}
}
aarData.explode = explode;
aarExplodeData[aarFile] = aarData;
return explode;
}