SH-Skript zum Umbenennen von .apk.odex-Dateien

Ich habe ein Skript geschrieben, um dexopt-wrapper zu verwenden, um einen Ordner mit .apk-Dateien zu odexieren

#!/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

Der Odexing-Teil funktioniert, aber wie Sie sehen können, erstellt er eine Reihe von .apk.odex-Dateien

Also meine Frage ist:

  1. Wie kann ich den Odexing-Teil so einrichten, dass die Dateien nicht als *.apk.odex geschrieben werden?
  2. ODER , Wie kann ich mvdie *.apk.odex-Dateien richtig umbenennen, damit sie nur *.odex-Dateien sind?

Ich habe es versucht:

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

aber es hat alle meine .apk.odex-Dateien in .apk umgewandelt

Antworten (1)

Das ist eher eine Shell-Scripting-Frage, die bei Super User gestellt werden sollte . Ihre Antwort finden Sie hier: Dateinamen und Erweiterung in bash extrahieren :

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

sollte angeblich auf den meisten Granaten funktionieren.

Aktualisieren:

Sie können sogar die Hälfte Ihres Skripts weglassen, indem Sie dies an Ihre ursprünglichen Aussagen anpassen: dexopt-wrapper $i1 ${i1%.*}.odexsollte die Datei mit der richtigen Benennung erstellen, sodass Sie sie später nicht umbenennen müssen. Um Ihr Skript wirklich kurz und handlich zu machen:

#!/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

Das ist alles, was Sie brauchen sollten :)

Ich habe auch an die Umbenennungsfunktion gedacht ... auf meinem Gerät scheint sie enthalten zu sein. Ich werde das in ein paar Minuten ausprobieren
Es geht noch einfacher, siehe mein Update ;)
heiße Digit! Das hat den Trick getan ... jetzt, wenn ich herausfinden kann, wie ich dasselbe Skript bekomme, um die .apk zu öffnen und dieclasses.dex daraus zu entfernen, bin ich wirklich im Geschäft, LOL
Nun, das geht definitiv über a) den Rahmen dieser Site und b) mein Wissen (das Ändern der Site .apkselbst würde ihr Vertrauen brechen, da Sie nicht den Originalschlüssel haben, um sie neu zu signieren). Aber schön, dass ich wenigstens ein bisschen helfen konnte ;)
:) Ja, ich kann sie auf meiner Linux-Box durchgehen, sie öffnen, um sie als .zip-Dateien zu durchsuchen, und sie auf diese Weise entfernen. Sehr verpflichtet dafür!