Berechtigung während der Installation einer System-App mit SSH verweigert

Ich habe die APK-Datei für eine Anwendung, die ich als Systemanwendung über SSH auf gerooteten Android-Tablets installieren möchte. Ich kann diese Anwendung über ADB mit einem Skript installieren, aber die Installation schlägt fehl, wenn ich sie über SSH mache. Die installierte SSH-Anwendung heißt QuickSSHd und ich melde mich als root an. Bei ADB bin ich mit dem Shell-Account verbunden, den ich als root mit dem suBefehl eröffne.

Hier ist das Installationsskript:

if [[ $EUID -ne 0 ]]; then
   echo ">> This script must be run as root."
   exit 1
fi

echo ">> Remounting /system in write mode..."
mount -o rw,remount /system

echo ">> Installing Manager..."
wget -P /system/app http://update.esmart.net/apk/Manager.apk
chmod 777 /system/app/Manager.apk
chown system:system /system/app/Manager.apk

echo ">> Removing smanager..."
rm /system/app/smanager*

echo ">> Remounting /system in read mode..."
mount -o ro,remount /system

echo ">> Starting Manager..."
sleep 2
am start -W -n ch.esmart.managerapp/.MainActivity

echo ">> Finished !"

Das Anwendungssymbol wird nicht angezeigt und amder Befehl funktioniert nicht.

Nach dem Einchecken von logcat:

$ logcat | grep Manager
W/zipro   ( 3308): Unable to open zip '/system/app/Manager.apk': Permission denied
D/asset   ( 3308): failed to open Zip archive '/system/app/Manager.apk'
W/PackageParser( 3308): Unable to read AndroidManifest.xml of /system/app/Manager.apk

Ich habe den suBefehl auch in SSH ausprobiert, aber es ändert nichts.

Die Berechtigungen sehen gut aus:

$ stat /system/app/Manager.apk
  File: "/system/app/Manager.apk"
  Size: 370990      Blocks: 728        IO Block: 4096   regular file
Device: 13h/19d Inode: 1448        Links: 1    
Access: (0777/-rwxrwxrwx)  Uid: ( 1000/  system)   Gid: ( 1000/  system)
Access: 2014-10-24 12:10:05.000000000
Modify: 2014-10-24 12:10:05.000000000
Change: 2014-10-24 12:10:05.000000000

Was bedeutet dieser Fehler? Vielen Dank!

Antworten (1)

Ich habe herausgefunden, wo das Problem liegt. Wenn ich die Rechte an der Datei ändern möchte, hat die Installation bereits begonnen. Ich weiß nicht genau, was bei der Installation passiert. Also habe ich die APK in das Root-Dateisystem heruntergeladen, ich ändere die Berechtigungen und kopiere die APK /system/appmit dem -pArgument in den cpBefehl, um die Dateiberechtigungen auf dem Ziel zu behalten.

if [[ $EUID -ne 0 ]]; then
   echo ">> This script must be run as root."
   exit 1
fi

echo ">> Remounting /system in write mode..."
mount -o rw,remount /system

echo ">> Installing Manager..."
wget -P / http://update.esmart.net/apk/Manager.apk
chmod 777 /Manager.apk
chown system:system /Manager.apk
cp -p -f /Manager.apk /system/app

echo ">> Removing smanager..."
rm /system/app/smanager*

echo ">> Remounting /system in read mode..."
mount -o ro,remount /system

echo ">> Starting Manager..."
sleep 2
am start -W -n ch.esmart.managerapp/.MainActivity

echo ">> Finished !"