/** * Merges the dex files in library jars. If multiple dex files define the * same type, this fails with an exception. */ private byte[] mergeLibraryDexBuffers(byte[] outArray) throws IOException { ArrayList<Dex> dexes = new ArrayList<Dex>(); if (outArray != null) { dexes.add(new Dex(outArray)); } for (byte[] libraryDex : libraryDexBuffers) { dexes.add(new Dex(libraryDex)); } if (dexes.isEmpty()) { return null; } Dex merged = new DexMerger(dexes.toArray(new Dex[dexes.size()]), CollisionPolicy.FAIL, context).merge(); return merged.getBytes(); }
/** * Merges the dex files in library jars. If multiple dex files define the * same type, this fails with an exception. */ private byte[] mergeLibraryDexBuffers(byte[] outArray) throws IOException { ArrayList<Dex> dexes = new ArrayList<Dex>(); if (outArray != null) { dexes.add(new Dex(outArray)); } for (byte[] libraryDex : libraryDexBuffers) { dexes.add(new Dex(libraryDex)); } if (dexes.isEmpty()) { return null; } DexMerger dexMerger = new DexMerger( dexes.toArray(new Dex[dexes.size()]), CollisionPolicy.FAIL, context); Dex merged = dexMerger.merge(); return merged.getBytes(); }
/** * Merges the dex files in library jars. If multiple dex files define the * same type, this fails with an exception. */ private static byte[] mergeLibraryDexBuffers(byte[] outArray) throws IOException { for (byte[] libraryDex : libraryDexBuffers) { if (outArray == null) { outArray = libraryDex; continue; } Dex a = new Dex(outArray); Dex b = new Dex(libraryDex); Dex ab = new DexMerger(a, b, CollisionPolicy.FAIL).merge(); outArray = ab.getBytes(); } return outArray; }