Exemplo n.º 1
0
 /// <summary>
 /// Try to get dex import data for the given type definition?
 /// </summary>
 /// <returns>False if not found.</returns>
 public bool TryGetDexImport(TypeDefinition type, out DexImport dexImport)
 {
     lock (dataLock)
     {
         foreach (var assemblyClasses in loadedAssemblies)
         {
             if (assemblyClasses.TryGetDexImport(type, out dexImport))
             {
                 return(true);
             }
         }
         dexImport = null;
         return(false);
     }
 }
Exemplo n.º 2
0
 /// <summary>
 /// Try to get dex import data for the given java class name?
 /// </summary>
 /// <returns>False if not found.</returns>
 public bool TryGetDexImport(string className, out DexImport dexImport)
 {
     lock (dataLock)
     {
         foreach (var assemblyClasses in loadedAssemblies)
         {
             if (assemblyClasses.TryGetDexImport(className, out dexImport))
             {
                 return(true);
             }
         }
         dexImport = null;
         return(false);
     }
 }
Exemplo n.º 3
0
            /// <summary>
            /// Collect the class names of all dex import types.
            /// </summary>
            private static void CollectDexImportClasses(TypeDefinition type, Dictionary <string, DexImport> className2DexImports,
                                                        Dictionary <TypeDefinition, DexImport> type2DexImports, DexImport declaringType, string scope, List <TypeDefinition> ignoreFromJavaTypes)
            {
                var attr = type.GetDexOrJavaImportAttribute();

                if (attr == null)
                {
                    return;
                }
                if (attr.HasProperties)
                {
                    var ignoreFromJava = attr.Properties.Where(x => x.Name == AttributeConstants.DexImportAttributeIgnoreFromJavaName).Select(x => x.Argument.Value).FirstOrDefault();
                    if ((ignoreFromJava is bool) && ((bool)ignoreFromJava))
                    {
                        ignoreFromJavaTypes.Add(type);
                        return;
                    }
                }
                var       className = (string)attr.ConstructorArguments[0].Value;
                DexImport existing;

                if (className2DexImports.TryGetValue(className, out existing))
                {
                    existing.AddType(type);
                }
                else
                {
                    className2DexImports[className] = existing = new DexImport(className, type, attr, scope)
                    {
                        DeclaringType = declaringType
                    };
                }
                type2DexImports[type] = existing;
                if (type.HasNestedTypes)
                {
                    foreach (var nested in type.NestedTypes)
                    {
                        CollectDexImportClasses(nested, className2DexImports, type2DexImports, existing, scope, ignoreFromJavaTypes);
                    }
                }
            }
 /// <summary>
 /// Collect the class names of all dex import types.
 /// </summary>
 private static void CollectDexImportClasses(TypeDefinition type, Dictionary<string, DexImport> className2DexImports, 
     Dictionary<TypeDefinition, DexImport> type2DexImports, DexImport declaringType, string scope, List<TypeDefinition> ignoreFromJavaTypes)
 {
     var attr = type.GetDexOrJavaImportAttribute();
     if (attr == null)
         return;
     if (attr.HasProperties)
     {
         var ignoreFromJava = attr.Properties.Where(x => x.Name == AttributeConstants.DexImportAttributeIgnoreFromJavaName).Select(x => x.Argument.Value).FirstOrDefault();
         if ((ignoreFromJava is bool) && ((bool) ignoreFromJava))
         {
             ignoreFromJavaTypes.Add(type);
             return;
         }
     }
     var className = (string)attr.ConstructorArguments[0].Value;
     DexImport existing;
     if (className2DexImports.TryGetValue(className, out existing))
     {
         existing.AddType(type);
     }
     else
     {
         className2DexImports[className] = existing = new DexImport(className, type, attr, scope) { DeclaringType = declaringType };
     }
     type2DexImports[type] = existing;
     if (type.HasNestedTypes)
     {
         foreach (var nested in type.NestedTypes)
         {
             CollectDexImportClasses(nested, className2DexImports, type2DexImports, existing, scope, ignoreFromJavaTypes);
         }
     }
 }
 /// <summary>
 /// Try to get dex import data for the given type definition?
 /// </summary>
 /// <returns>False if not found.</returns>
 public bool TryGetDexImport(TypeDefinition type, out DexImport dexImport)
 {
     return type2DexImportMap.TryGetValue(type, out dexImport);
 }
 /// <summary>
 /// Try to get dex import data for the given class name?
 /// </summary>
 /// <returns>False if not found.</returns>
 public bool TryGetDexImport(string className, out DexImport dexImport)
 {
     return className2DexImportMap.TryGetValue(className, out dexImport);
 }
Exemplo n.º 7
0
 /// <summary>
 /// Try to get dex import data for the given java class name?
 /// </summary>
 /// <returns>False if not found.</returns>
 public bool TryGetDexImport(string className, out DexImport dexImport)
 {
     lock (dataLock)
     {
         foreach (var assemblyClasses in loadedAssemblies)
         {
             if (assemblyClasses.TryGetDexImport(className, out dexImport))
                 return true;
         }
         dexImport = null;
         return false;
     }
 }
Exemplo n.º 8
0
 /// <summary>
 /// Try to get dex import data for the given type definition?
 /// </summary>
 /// <returns>False if not found.</returns>
 public bool TryGetDexImport(TypeDefinition type, out DexImport dexImport)
 {
     lock (dataLock)
     {
         foreach (var assemblyClasses in loadedAssemblies)
         {
             if (assemblyClasses.TryGetDexImport(type, out dexImport))
                 return true;
         }
         dexImport = null;
         return false;
     }
 }
Exemplo n.º 9
0
 /// <summary>
 /// Try to get dex import data for the given type definition?
 /// </summary>
 /// <returns>False if not found.</returns>
 public bool TryGetDexImport(TypeDefinition type, out DexImport dexImport)
 {
     return(type2DexImportMap.TryGetValue(type, out dexImport));
 }
Exemplo n.º 10
0
 /// <summary>
 /// Try to get dex import data for the given class name?
 /// </summary>
 /// <returns>False if not found.</returns>
 public bool TryGetDexImport(string className, out DexImport dexImport)
 {
     return(className2DexImportMap.TryGetValue(className, out dexImport));
 }