用于检查Android版本然后继续安装的脚本?

时间:2014-03-20 11:30:15

标签: android shell

我创建了一个脚本,首先检查android版本,然后将相应的文件安装到系统中(因为每个Android版本的文件都不相同)

这是脚本

#!/system/bin/sh

VER=$(echo $(getprop ro.build.version.release))
LIB=/system/lib/libncurses.so
XBINS=/system/xbin/sqlite3
XBINO=/system/xbin/openvpm
XBINZ=/system/xbin/zipalign
LIBD=/system/lib
XBIND=/system/xbin

mount -o rw,remount /system

case $VER in

"2.3"*)
cp tmp/binbox/2.3.*/lib/libncurses.so "$LIBD"
cp tmp/binbox/2.3.*/xbin/sqlite3 "$XBIND"
cp tmp/binbox/2.3.*/xbin/openvpm "$XBIND"
cp tmp/binbox/2.3.*/xbin/zipalign "$XBIND"
chmod 644 "$LIB"
chown 0.0 "$LIB"
chmod 6755 "$XBINS"
chown 0.0 "$XBINS"
chmod 6755 "$XBINO"
chown 0.0 "$XBINO"
chmod 6755 "$XBINZ"
chown 0.0 "$XBINZ"
;;
"4.0"*)
cp /tmp/binbox/4.0.*/lib/libncurses.so "$LIBD"
cp /tmp/binbox/4.0.*/xbin/sqlite3 "$XBIND"
cp tmp/binbox/4.0.*/xbin/openvpm "$XBIND"
cp tmp/binbox/4.0.*/xbin/zipalign "$XBIND"
chmod 644 "$LIB"
chown 0.0 "$LIB"
chmod 6755 "$XBINS"
chown 0.0 "$XBINS"
chmod 6755 "$XBINO"
chown 0.0 "$XBINO"
chmod 6755 "$XBINZ"
chown 0.0 "$XBINZ"
;;
"4.1"*)
cp /tmp/binbox/4.1.*/lib/libncurses.so "$LIBD"
cp /tmp/binbox/4.1.*/xbin/sqlite3 "$XBIND"
chmod 644 "$LIB"
chown 0.0 "$LIB"
chmod 6755 "$XBIN"
chown 0.0 "$XBIN"
;;
"4.2"*)
cp /tmp/binbox/4.2.*/lib/libncurses.so "$LIBD"
cp /tmp/binbox/4.2.*/xbin/sqlite3 "$XBIND"
chmod 644 "$LIB"
chown 0.0 "$LIB"
chmod 6755 "$XBIN"
chown 0.0 "$XBIN"
;;
"4.3"*)
cp /tmp/binbox/4.3.*/lib/libncurses.so "$LIBD"
cp /tmp/binbox/4.3.*/xbin/sqlite3 "$XBIND"
chmod 644 "$LIB"
chown 0.0 "$LIB"
chmod 6755 "$XBIN"
chown 0.0 "$XBIN"
;;
"4.4"*)
cp /tmp/binbox/4.4.*/lib/libncurses.so "$LIBD
cp /tmp/binbox/4.4.*/xbin/sqlite3 "$XBIND"
chmod 644 "$LIB"
chown 0.0 "$LIB"
chmod 6755 "$XBIN"
chown 0.0 "$XBIN" 
;;
esac

运行脚本我得到getprop:not found 此脚本在cwm恢复中运行 和文件放在tmp中 因为脚本是在恢复中运行的,所以我得不到脚本的确切结果 但是日志如下所示

Installing: /external_sd/a.zip
Finding update package...
I:Update location: /external_sd/a.zip
Opening update package...
Installing update...
minzip: Extracted file "/tmp/2.3/Arjun2.3.txt"
minzip: Extracted file "/tmp/4.0/Arjun4.0.txt"
minzip: Extracted file "/tmp/4.1/Arjun4.1.txt"
minzip: Extracted file "/tmp/4.2/Arjun4.2.txt"
minzip: Extracted file "/tmp/4.3/Arjun4.3.txt"
minzip: Extracted file "/tmp/4.4/Arjun4.4.txt"
minzip: Extracted file "/tmp/binbox.sh"
about to run program [/sbin/busybox] with 5 args
about to run program [/sbin/busybox] with 5 args
about to run program [/sbin/mount] with 2 args

Mounting /system 

about to run program [/tmp/binbox.sh] with 2 args

about to run program [/sbin/busybox] with 3 args
Unmounting partitions...

script result was [Installation is complete...]
Installation is complete... 

Install from sdcard complete.

这里的binbox.sh是脚本 希望有人能找到解决方案

1 个答案:

答案 0 :(得分:0)

鉴于您的系统遇到adb shell问题,并根据我们在评论中的调试,最好的解决方案似乎是std unix解决方案,如

VER=$(awk -F= '/ro\.build\.version\.release/{print $NF}' /system/build.prop) 
echo "VER=$VER"
VER=4.1.2

原始解决方案留给面临同样问题的其他人。

很清楚该行

VER=$(echo $(getprop ro.build.version.release))

正在创建错误消息。

several posting here on S.O.和谷歌搜索,看起来你需要使用

VER=$(echo $(adb shell getprop ro.build.version.release))

如果这不起作用,那么更通用的解决方案是进行一些挖掘并找出getprop的位置,然后添加名称的完整路径,例如

/usr/local/special/bin/getprop

或者将该路径添加到PATH env变量

PATH="/usr/local/special/bin:$PATH"

在这个脚本的顶部,或者在一个shell的.rc(.profile,.bashrc等等)中。文件。

IHTH