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 su
Befehl 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 am
der 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 su
Befehl 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!
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/app
mit dem -p
Argument in den cp
Befehl, 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 !"