package javassist.android; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import com.android.dx.dex.DexOptions; import com.android.dx.dex.cf.CfOptions; import com.android.dx.dex.cf.CfTranslator; import com.android.dx.dex.file.ClassDefItem; import com.android.dx.util.FileUtils; public class DexFile { private final com.android.dx.dex.file.DexFile file; private final DexOptions dex_options = new DexOptions(); public DexFile() { this.file = new com.android.dx.dex.file.DexFile(dex_options); } public void addClass(File classFile) { final CfOptions cf_options = new CfOptions(); final ClassDefItem cdi = CfTranslator.translate(classFile.getName(), FileUtils.readFile(classFile), cf_options, dex_options); file.add(cdi); } public void writeFile(String filePath) throws IOException { final FileOutputStream fos = new FileOutputStream(filePath); Throwable error = null; try { file.writeTo(fos, null, false); } catch (IOException e) { error = e; } finally { fos.close(); } if (null != error) { new File(filePath).delete(); } } }