com/android/dx/dex/file/ClassDefItem.java
170 public voidwriteTo(DexFile file, AnnotatedOutput out) {
171 boolean annotates= out.annotates();
172 TypeIdsSectiontypeIds = file.getTypeIds();
173 int classIdx =typeIds.indexOf(thisClass);
174 int superIdx =(superclass == null) ? -1 :
175 typeIds.indexOf(superclass);
176 int interOff =OffsettedItem.getAbsoluteOffsetOr0(interfaces);
177 int annoOff =annotationsDirectory.isEmpty() ? 0 :
178 annotationsDirectory.getAbsoluteOffset();
179 int sourceFileIdx= (sourceFile == null) ? -1 :
180 file.getStringIds().indexOf(sourceFile);
181 int dataOff= classData.isEmpty()? 0 : classData.getAbsoluteOffset();
wordData section 放method code
|[1dd]class data for com.example.testar.myclass
0001dd: 00 | static_fields_size: 00000000
0001de: 00 | instance_fields_size: 00000000
0001df: 01 | direct_methods_size: 00000001
0001e0: 01 | virtual_methods_size: 00000001
| direct_methods:
| [0]com.example.testar.myclass.<init>:()V
0001e1: 01 | method_idx: 00000001
0001e2: 8180 04 | access_flags: public|constructor
0001e5: 9402 | code_off: 00000114
| virtual_methods:
| [0] com.example.testar.myclass.test1:()I
0001e7: 02 | method_idx: 00000002
0001e8: 01 | access_flags: public
0001e9: ac02 | code_off: 0000012c
0001eb: 00 |
|
com/android/dx/dex/file/ClassDataItem.java
225 public void addContents(DexFile file) {
226 if (!staticFields.isEmpty()){
227 getStaticValuesConstant(); // Force the fields to be sorted.
228 for(EncodedField field : staticFields) {
229 field.addContents(file);
230 }
231 }
232
233 if (!instanceFields.isEmpty()){
234 Collections.sort(instanceFields);
235 for(EncodedField field : instanceFields) {
236 field.addContents(file);
237 }
238 }
239
240 if(!directMethods.isEmpty()) {
241 Collections.sort(directMethods);
242 for(EncodedMethod method : directMethods) {
243 method.addContents(file);
244 }
245 }
246
247 if(!virtualMethods.isEmpty()) {
248 Collections.sort(virtualMethods);
249 for(EncodedMethod method : virtualMethods) {
250 method.addContents(file);
251 }
252 }
253 }
115 public void addContents(DexFile file) {
116 MethodIdsSectionmethodIds = file.getMethodIds();
117 MixedItemSectionwordData = file.getWordData();
118
119 methodIds.intern(method);
120
121 if (code != null){
122 wordData.add(code);
123 }
124 }