0 votos

Script SH para renombrar archivos .apk.odex

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

#!/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 odexing funciona, pero como puedes ver crea un montón de archivos .apk.odex

Así que mi pregunta es:

  1. ¿Cómo puedo configurar la parte de odexing para que no escriba los archivos como *.apk.odex?
  2. O ¿Cómo puedo obtener el mv para renombrar correctamente los archivos *.apk.odex para que sean sólo 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

2voto

Izzy Puntos 45544

Eso es más bien una pregunta de shell scripting que se hace en Súper Usuario . Su respuesta se puede encontrar aquí: Extraer 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.

Actualización:

Incluso puede omitir la mitad de su guión adaptándolo a sus declaraciones originales: dexopt-wrapper $i1 ${i1%.*}.odex debería crear el archivo con el nombre correcto, por lo que no es necesario renombrarlo después. Para hacer su secuencia de comandos muy corto 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 :)

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X