【问题标题】:Script for checking the Android version and then carry on installation?检查Android版本然后进行安装的脚本?
【发布时间】:2014-04-27 05:13:18
【问题描述】:

我创建了一个脚本,它首先检查 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 是脚本 希望有人能找到解决办法

【问题讨论】:

  • 您可能只需要提供getprop 的完整路径 - 假设即使在运行恢复分区时也可以使用。
  • 请注意,我在 original solution 部分中建议这样做。

标签: android shell


【解决方案1】:

鉴于您的系统在使用adb shell 时遇到问题,并且根据我们在 cmets 中的调试,对您来说最好的解决方案似乎是 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 环境变量中

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

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

IHTH

【讨论】:

  • 好吧,我尝试在两者之间添加 adb shell 并得到 adb:not found 和更多信息 getprop 是一个命令,它提供来自位于 /system 的 android 系统的 build.prop 文件的可用信息/build.prop
  • 好的,也许VER=$(grep ro.build.version.release/system/build.prop) 可以解决您的问题?祝你好运。
  • 添加 VER=$(grep ro.build.version.release/system/build.prop) 显示运行没有错误,但无法将文件从 tmp 复制到它们的文件夹所以脚本什么也不做现在 !有什么想法吗?
  • 我看到我有一个错字,你发现并纠正了吗?缺少空格字符。试试VER=$(grep ro.build.version.release /system/build.prop) 并且,我现在意识到,这会返回整行,所以试试VER=$( awk '/ro.build.version.release/{sub(/^.*=/,"",$0);print $0)}' /system/build.prop)。这假设在键和值之间有一个equals (=) 符号。如果这不起作用,请编辑您的问题以包含 awk '/ro.build.version.release/{print}' /system/build.prop 的结果。祝你好运。
  • 是的,我发现了...首先尝试了一个空格,然后又没有,,,但没有进展
猜你喜欢
  • 2023-01-20
  • 1970-01-01
  • 1970-01-01
  • 2018-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-22
  • 2019-06-28
相关资源
最近更新 更多