各位大侠好
目前碰到的问题是我在客户端进行OTA升级时,但却只是重启,而进不了recovery.apk具体情况如下:
String cmd = "/system/xbin/walking_umfota 20130724104031169.zip";
// String cmd = "reboot recovery";
String cmdOutPut = "\n";
try {
Process p = Runtime.getRuntime().exec(cmd);
Log.v("Fota", "p = " + p);
BufferedReader in = new BufferedReader(new InputStreamReader(
p.getInputStream()));
Log.v("Fota", "in = " + in);
String line = null;
while ((line = in.readLine()) != null) {
cmdOutPut += line + "\n";
Log.v("Fota", "cmdOutPut = " + cmdOutPut);
}
} catch (IOException e) {
Log.v("Fota", "CommandUtil do_exec catch (IOException e)");
e.printStackTrace();
}其中/system/xbin/walking_umfota(这个是我的调用umfota.sh启动reboot recovery) 20130724104031169.zip(我们的升级包)
umfota.sh 如下:#!/system/bin/sh
# for sp6820 ota update.mkdir /cache/recovery command_file=/cache/recovery/commandcase "$#" in
"0")
echo "usage: $ sh /cache/recovery/ota.sh filename"
exit 0
;;
esacls /sdcard/walking/$1 > /dev/null
case "$?" in
"0")
;;
*)
echo "$1 not exist"
exit 0
esacecho --update_package=SDCARD:walking/$1 >$command_filesyncecho "flush command file" > /dev/null
reboot recovery现在的问题是,我用apk执行的时候,就只是重启,没有进recovery,连last_log都没有。(当然,升级包我是放在SDCARD:walking/20130724104031169.zip)
而我在手动用命令:
adb shell
/system/xbin/walking_umfota 20130724104031169.zip
却又是可以升级成功的。另外我在其它项目的代码都是一样,也是成功的,现在我搞不明白究竟是哪里出了问题?是不是还有apk的权限和adb的权限不一样导致的呢?
请各位大侠帮忙呀!另外,我也尝试了将umfota.sh的最后一句reboot recovery去掉了。
用apk执行后,我再用
adb shell
reboot recovery。这样也是成功的。所以现在怀疑是不是apk调用 reboot recovery没有权限,应该怎么去排除!谢谢
目前碰到的问题是我在客户端进行OTA升级时,但却只是重启,而进不了recovery.apk具体情况如下:
String cmd = "/system/xbin/walking_umfota 20130724104031169.zip";
// String cmd = "reboot recovery";
String cmdOutPut = "\n";
try {
Process p = Runtime.getRuntime().exec(cmd);
Log.v("Fota", "p = " + p);
BufferedReader in = new BufferedReader(new InputStreamReader(
p.getInputStream()));
Log.v("Fota", "in = " + in);
String line = null;
while ((line = in.readLine()) != null) {
cmdOutPut += line + "\n";
Log.v("Fota", "cmdOutPut = " + cmdOutPut);
}
} catch (IOException e) {
Log.v("Fota", "CommandUtil do_exec catch (IOException e)");
e.printStackTrace();
}其中/system/xbin/walking_umfota(这个是我的调用umfota.sh启动reboot recovery) 20130724104031169.zip(我们的升级包)
umfota.sh 如下:#!/system/bin/sh
# for sp6820 ota update.mkdir /cache/recovery command_file=/cache/recovery/commandcase "$#" in
"0")
echo "usage: $ sh /cache/recovery/ota.sh filename"
exit 0
;;
esacls /sdcard/walking/$1 > /dev/null
case "$?" in
"0")
;;
*)
echo "$1 not exist"
exit 0
esacecho --update_package=SDCARD:walking/$1 >$command_filesyncecho "flush command file" > /dev/null
reboot recovery现在的问题是,我用apk执行的时候,就只是重启,没有进recovery,连last_log都没有。(当然,升级包我是放在SDCARD:walking/20130724104031169.zip)
而我在手动用命令:
adb shell
/system/xbin/walking_umfota 20130724104031169.zip
却又是可以升级成功的。另外我在其它项目的代码都是一样,也是成功的,现在我搞不明白究竟是哪里出了问题?是不是还有apk的权限和adb的权限不一样导致的呢?
请各位大侠帮忙呀!另外,我也尝试了将umfota.sh的最后一句reboot recovery去掉了。
用apk执行后,我再用
adb shell
reboot recovery。这样也是成功的。所以现在怀疑是不是apk调用 reboot recovery没有权限,应该怎么去排除!谢谢
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货