|
25 | 25 | import com.reandroid.dex.key.Key; |
26 | 26 | import com.reandroid.dex.key.TypeKey; |
27 | 27 | import com.reandroid.dex.sections.*; |
| 28 | +import com.reandroid.dex.smali.SmaliFileNameFactory; |
28 | 29 | import com.reandroid.dex.smali.SmaliReader; |
29 | 30 | import com.reandroid.dex.smali.SmaliWriter; |
| 31 | +import com.reandroid.dex.smali.SmaliWriterSetting; |
30 | 32 | import com.reandroid.dex.smali.model.SmaliClass; |
31 | 33 | import com.reandroid.utils.ObjectsUtil; |
32 | 34 | import com.reandroid.utils.collection.*; |
@@ -330,9 +332,25 @@ public DexClass fromSmali(SmaliClass smaliClass) throws IOException { |
330 | 332 | return create(classId); |
331 | 333 | } |
332 | 334 | public void writeSmali(SmaliWriter writer, File root) throws IOException { |
333 | | - Iterator<DexClass> iterator = getDexClasses(); |
| 335 | + SmaliFileNameFactory fileNameFactory = new SmaliFileNameFactory(root); |
| 336 | + Iterator<ClassId> iterator = getItems(SectionType.CLASS_ID); |
334 | 337 | while (iterator.hasNext()) { |
335 | | - iterator.next().writeSmali(writer, root); |
| 338 | + ClassId classId = iterator.next(); |
| 339 | + File file = fileNameFactory.getUniqueFilenameForClass(classId.getKey()); |
| 340 | + writer.setWriter(file); |
| 341 | + classId.append(writer); |
| 342 | + writer.close(); |
| 343 | + } |
| 344 | + } |
| 345 | + public void writeSmali(SmaliWriterSetting writerSetting, File root) throws IOException { |
| 346 | + SmaliFileNameFactory fileNameFactory = new SmaliFileNameFactory(root); |
| 347 | + Iterator<ClassId> iterator = getItems(SectionType.CLASS_ID); |
| 348 | + while (iterator.hasNext()) { |
| 349 | + ClassId classId = iterator.next(); |
| 350 | + SmaliWriter writer = new SmaliWriter(writerSetting); |
| 351 | + writer.setWriter(fileNameFactory.getUniqueFilenameForClass(classId.getKey())); |
| 352 | + classId.append(writer); |
| 353 | + writer.close(); |
336 | 354 | } |
337 | 355 | } |
338 | 356 |
|
|
0 commit comments