在尝试将某些应用数据备份到外部位置时,我愚蠢地在我的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
我有一个无根的平板电脑(我更喜欢保持这种方式),我仍然想要获取数据(然后修复应用程序)。有什么想法吗?
答案 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中的所有文件!这可能是你最好的选择。显然你丢失了该应用程序的所有设置,你可能不得不重新安装它,但它应该可以解决你的问题。
您也可以尝试通过设置应用以常规方式清除该应用的数据。
我能想到的唯一选择就是根植平板电脑。