diff --git a/extract_utils.sh b/extract_utils.sh index 3c52f59..1c68169 100644 --- a/extract_utils.sh +++ b/extract_utils.sh @@ -838,16 +838,21 @@ function oat2dex() { fi elif [[ "$LINEAGE_TARGET" =~ .jar$ ]]; then JAROAT="$TMPDIR/system/framework/$ARCH/boot-$(basename ${OEM_TARGET%.*}).oat" - JARVDEX="$TMPDIR/system/framework/oat/$ARCH/$(basename ${OEM_TARGET%.*}).vdex" + JARVDEX="/system/framework/boot-$(basename ${OEM_TARGET%.*}).vdex" if [ ! -f "$JAROAT" ]; then - JAROAT=$BOOTOAT; + JAROAT=$BOOTOAT fi - # try to extract classes.dex from boot.vdex for frameworks jars # fallback to boot.oat if vdex is not available - if [ -f "$JARVDEX" ]; then - "$VDEXEXTRACTOR" -o "$TMPDIR/" -i "$JARVDEX" > /dev/null - mv "$TMPDIR/$(basename "${OEM_TARGET%.*}")_classes.dex" "$TMPDIR/classes.dex" + if get_file "$JARVDEX" "$TMPDIR" "$SRC"; then + "$VDEXEXTRACTOR" -o "$TMPDIR/" -i "$TMPDIR/$(basename "$JARVDEX")" + # Check if we have to deal with CompactDex + if [ -f "$TMPDIR/$(basename "${JARVDEX%.*}")_classes.cdex" ]; then + "$CDEXCONVERTER" "$TMPDIR/$(basename "${JARVDEX%.*}")_classes.cdex" &> /dev/null + mv "$TMPDIR/$(basename "${JARVDEX%.*}")_classes.cdex.new" "$TMPDIR/classes.dex" + else + mv "$TMPDIR/$(basename "${JARVDEX%.*}")_classes.dex" "$TMPDIR/classes.dex" + fi else java -jar "$BAKSMALIJAR" deodex -o "$TMPDIR/dexout" -b "$BOOTOAT" -d "$TMPDIR" "$JAROAT/$OEM_TARGET" java -jar "$SMALIJAR" assemble "$TMPDIR/dexout" -o "$TMPDIR/classes.dex"