Android:在app数据目录上撤消chmod

时间:2014-08-19 21:17:43

标签: android adb chmod

在尝试将某些应用数据备份到外部位置时,我愚蠢地在我的Nexus 10上adb shell执行此操作:

run-as my.app.package
cd /data/data/my.app.package
chmod -R 666 .

现在我当然无法将其修复为默认用户:

shell@manta $ chmod 751 /data/data/my.app.package
Unable to chmod /data/data/my.app.package: Operation not permitted

但我不能再run-as

shell@manta:/ $ run-as my.app.package                     
run-as: Package 'my.app.package' has corrupt installation

我有一个无根的平板电脑(我更喜欢保持这种方式),我仍然想要获取数据(然后修复应用程序)。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

可以从/data/system/packages.xml文件中提取app uid。请注意,此方法受root权限限制。

#!/system/bin/sh
#Restore app data owner and permissions
app_name=$1; data_dir=/data/data/
if [ $(pm list packages | grep $app_name) ]; then
   app_uid=$(cat /data/system/packages.xml | grep "$app_name" | \
   grep 'user' | sed -e 's/.*userId="//' -e 's/".*//')
   chown $app_uid:$app_uid $data_dir$app_name; chmod -R 751 $data_dir$app_name
else
   echo 'Doh! specified app is either not installed or mis-spelt.'
fi

答案 1 :(得分:0)

你可以做的默认用户是删除/data/data/my.app.package中的所有文件!这可能是你最好的选择。显然你丢失了该应用程序的所有设置,你可能不得不重新安装它,但它应该可以解决你的问题。

您也可以尝试通过设置应用以常规方式清除该应用的数据。

我能想到的唯一选择就是根植平板电脑。