void renameResources(Module module) { var renamedTypes = new List<TypeInfo>(); foreach (var type in module.getAllTypes()) { var info = memberInfos.type(type); if (info.oldFullName != info.type.TypeDefinition.FullName) renamedTypes.Add(info); } if (renamedTypes.Count == 0) return; new ResourceRenamer(module).rename(renamedTypes); }
void removeOneClassNamespaces(Module module) { var nsToTypes = new Dictionary<string, List<TypeDef>>(StringComparer.Ordinal); foreach (var typeDef in module.getAllTypes()) { List<TypeDef> list; var ns = typeDef.TypeDefinition.Namespace; if (string.IsNullOrEmpty(ns)) continue; if (module.ObfuscatedFile.NameChecker.isValidNamespaceName(ns)) continue; if (!nsToTypes.TryGetValue(ns, out list)) nsToTypes[ns] = list = new List<TypeDef>(); list.Add(typeDef); } var sortedNamespaces = new List<List<TypeDef>>(nsToTypes.Values); sortedNamespaces.Sort((a, b) => { return string.CompareOrdinal(a[0].TypeDefinition.Namespace, b[0].TypeDefinition.Namespace); }); foreach (var list in sortedNamespaces) { const int maxClasses = 1; if (list.Count != maxClasses) continue; var ns = list[0].TypeDefinition.Namespace; Log.v("Removing namespace: {0}", Utils.removeNewlines(ns)); foreach (var type in list) memberInfos.type(type).newNamespace = ""; } }
void renameResources(Module module) { var renamedTypes = new List<TypeInfo>(); foreach (var type in module.getAllTypes()) { var info = memberInfos.type(type); if (info.oldFullName != info.type.TypeDefinition.FullName) renamedTypes.Add(info); } if (renamedTypes.Count == 0) return; // Rename the longest names first. Otherwise eg. b.g.resources could be renamed // Class0.g.resources instead of Class1.resources when b.g was renamed Class1. renamedTypes.Sort((a, b) => Utils.compareInt32(b.oldFullName.Length, a.oldFullName.Length)); renameResourceNamesInCode(module, renamedTypes); renameResources(module, renamedTypes); }