本文整理汇总了Java中com.android.dex.Dex.classDefs方法的典型用法代码示例。如果您正苦于以下问题:Java Dex.classDefs方法的具体用法?Java Dex.classDefs怎么用?Java Dex.classDefs使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类com.android.dex.Dex
的用法示例。
在下文中一共展示了Dex.classDefs方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: findAssignableTypes
import com.android.dex.Dex; //导入方法依赖的package包/类
/**
* Returns the set of types that can be assigned to {@code typeIndex}.
*/
private Set<Integer> findAssignableTypes(Dex dex, int typeIndex) {
Set<Integer> assignableTypes = new HashSet<Integer>();
assignableTypes.add(typeIndex);
for (ClassDef classDef : dex.classDefs()) {
if (assignableTypes.contains(classDef.getSupertypeIndex())) {
assignableTypes.add(classDef.getTypeIndex());
continue;
}
for (int implemented : classDef.getInterfaces()) {
if (assignableTypes.contains(implemented)) {
assignableTypes.add(classDef.getTypeIndex());
break;
}
}
}
return assignableTypes;
}
示例2: readSortableTypes
import com.android.dex.Dex; //导入方法依赖的package包/类
/**
* Reads just enough data on each class so that we can sort it and then find
* it later.
*/
private void readSortableTypes(SortableType[] sortableTypes, Dex buffer,
IndexMap indexMap) {
for (ClassDef classDef : buffer.classDefs()) {
SortableType sortableType = indexMap.adjust(new SortableType(buffer, classDef));
int t = sortableType.getTypeIndex();
if (sortableTypes[t] == null) {
sortableTypes[t] = sortableType;
} else if (collisionPolicy != CollisionPolicy.KEEP_FIRST) {
throw new DexException("Multiple dex files define "
+ buffer.typeNames().get(classDef.getTypeIndex()));
}
}
}
示例3: readSortableTypes
import com.android.dex.Dex; //导入方法依赖的package包/类
/**
* Reads just enough data on each class so that we can sort it and then find
* it later.
*/
private void readSortableTypes(SortableType[] sortableTypes, Dex buffer,
IndexMap indexMap) {
for (ClassDef classDef : buffer.classDefs()) {
SortableType sortableType = indexMap.adjust(
new SortableType(buffer, indexMap, classDef));
int t = sortableType.getTypeIndex();
if (sortableTypes[t] == null) {
sortableTypes[t] = sortableType;
} else if (collisionPolicy != CollisionPolicy.KEEP_FIRST) {
throw new DexException("Multiple dex files define "
+ buffer.typeNames().get(classDef.getTypeIndex()));
}
}
}
示例4: assertMultidexOutput
import com.android.dex.Dex; //导入方法依赖的package包/类
private Multimap<String, String> assertMultidexOutput(int expectedClassCount,
Path outputArchive, Set<String> mainDexList) throws IOException {
SetMultimap<String, String> dexFiles = HashMultimap.create();
try (ZipFile output = new ZipFile(outputArchive.toFile())) {
Enumeration<? extends ZipEntry> entries = output.entries();
while (entries.hasMoreElements()) {
ZipEntry entry = entries.nextElement();
assertThat(entry.getName()).containsMatch("classes[2-9]?.dex");
Dex dex = new Dex(output.getInputStream(entry));
for (ClassDef clazz : dex.classDefs()) {
dexFiles.put(entry.getName(),
toSlashedClassName(dex.typeNames().get(clazz.getTypeIndex())));
}
}
}
assertThat(dexFiles.keySet().size()).isAtLeast(2); // test sanity
assertThat(dexFiles.size()).isAtLeast(1); // test sanity
assertThat(dexFiles).hasSize(expectedClassCount);
for (int i = 0; i < dexFiles.keySet().size(); ++i) {
assertThat(dexFiles).containsKey(expectedDexFileName(i));
}
for (int i = 1; i < dexFiles.keySet().size(); ++i) {
Set<String> prev = dexFiles.get(expectedDexFileName(i - 1));
if (i == 1) {
prev = Sets.difference(prev, mainDexList);
}
Set<String> shard = dexFiles.get(expectedDexFileName(i));
for (String c1 : prev) {
for (String c2 : shard) {
assertThat(ZipEntryComparator.compareClassNames(c2, c1))
.named(c2 + " in shard " + i + " should compare as larger than " + c1
+ "; list of all shards for reference: " + dexFiles)
.isGreaterThan(0);
}
}
}
return dexFiles;
}