SH Script para renombrar archivos .apk.odex

He escrito un script para utilizar dexopt-wrapper para odexar una carpeta de .apk

#!/bin/sh

SYSAPP=/mnt/extSdCard/FilesToOdex/system/app/
SYSPRIVAPP=/mnt/extSdCard/FilesToOdex/system/priv-app/

for i1 in $SYSAPP*.apk ; do
        echo "Odexing $i1..."
        dexopt-wrapper $i1 $i1.odex
done

for i2 in $SYSPRIVAPP*.apk ; do
        echo "Odexing $i2..."
        dexopt-wrapper $i2 $i2.odex
done


for file1 in $SYSAPP*.apk.odex; do
    mv "$file1" "`basename $file1 .apk.odex`$file1.odex"
done
for file2 in $SYSPRIVAPP*.apk.odex; do
    mv "$file2" "`basename $file2 .apk.odex`$file2.odex"
done

La parte de odexación funciona, pero como puede ver, crea un montón de archivos .apk.odex

Entonces mi pregunta es:

  1. ¿Cómo puedo configurar la parte de odexación para que no escriba los archivos como *.apk.odex?
  2. O , ¿Cómo puedo mvcambiar correctamente el nombre de los archivos *.apk.odex para que sean solo archivos *.odex?

Lo intenté:

for file1 in $SYSAPP*.apk.odex; do
    mv "${file1}" "${file1%.odex}" 
done
for file2 in $SYSPRIVAPP*.apk.odex; do
    mv "${file2}" "${file2%.odex}"
done

pero convirtió todos mis archivos .apk.odex en .apk

Respuestas (1)

Esa es más bien una pregunta de secuencias de comandos de Shell que se le hará a Super User . Su respuesta se puede encontrar aquí: Extraiga el nombre del archivo y la extensión en bash :

for file1 in $SYSAPP*.apk.odex; do
    mv "${file1}" "${file1%.*}.odex" 
done
for file2 in $SYSPRIVAPP*.apk.odex; do
    mv "${file2}" "${file2%.*}.odex"
done

debería funcionar en la mayoría de las conchas, supuestamente.

Actualizar:

Incluso puede omitir la mitad de su secuencia de comandos adaptándola a sus declaraciones originales: dexopt-wrapper $i1 ${i1%.*}.odexdebe crear el archivo con el nombre correcto, por lo que no es necesario cambiarle el nombre más adelante. Para que su guión sea realmente breve y práctico:

#!/bin/sh
SYSAPP=/mnt/extSdCard/FilesToOdex/system/app/
SYSPRIVAPP=/mnt/extSdCard/FilesToOdex/system/priv-app/

for i1 in $SYSAPP*.apk $SYSPRIVAPP*.apk; do
    echo "Odexing $i1..."
    dexopt-wrapper $i1 ${i1%.*}.odex
done

Eso es todo lo que deberías necesitar :)

También pensé en la función de cambio de nombre... en mi dispositivo parece que está incluida. Voy a probar esto en unos minutos
Se puede hacer aún más fácil, mira mi actualización;)
digitidad caliente! Eso funcionó... ahora, si puedo averiguar cómo obtener este mismo script para abrir el .apk y eliminar las clases.dex, realmente estaré en el negocio LOL
Bueno, eso definitivamente está más allá de a) el alcance de este sitio yb) mi conocimiento (modificarlo .apkrompería su confianza, ya que no tiene la clave original para volver a firmarlo). Pero me alegro de haber podido ayudar un poco al menos;)
:) Sí, puedo revisarlos en mi caja de Linux, abrirlos para buscarlos como archivos .zip y eliminarlos de esa manera. ¡Muy agradecido por esto!