私もこれに問題がありました。携帯電話にLink2SDがありますが、SDカードのext4パーティションが破損しているため、再フォーマットしましたが、リンクされたファイルはすべて/ data/appフォルダーに残っていました。だから私はすべての壊れたリンクを削除するスクリプトを作成しました、そしてあなたと同じ問題に遭遇しました、アプリマネージャーはそれらがまだインストールされていると言いました!そこで、携帯電話のpmプログラムを使用して、それを修正する別のスクリプトを作成しました。
アプリフォルダから壊れたリンクを削除するための私のコードは次のとおりです。
fixln.sh
#!/system/bin/sh
#follow and fix symlinks
appfolder="/data/app/"
files=`ls ${appfolder}*`
fix=$1
badstring="No such file or directory"
for i in $files
do
if [ -h $i ]
then
if [ -a `readlink $i` ]
then
echo -e "\e[32m$i is good\033[0m";
else
if [ $fix == "fix" ]
then
`rm $i`
echo -e "\e[31m$i is bad, and was removed\033[0m";
else
echo -e "\e[31m$i is bad\033[0m";
if
fi
else
echo -e "\e[36m$i is not a symlink\033[0m";
fi
done
そして、apkを持たないアプリをアンインストールするための私のコードは次のとおりです。
fixmissing.sh
#!/system/bin/sh
#searches through a list of installed apps, and removes the ones that have no apk file
appfolder="/data/app/"
fix=$1
installed=`pm list packages -f -u`
for i in $installed
do
usefull=${i#*:}
filename=${usefull%=*}
package=${usefull#*=}
if [ -a $filename ]
then
echo -e "\e[32m$package ($filename) is good\033[0m"
else
if [ "$fix" == "fix" ]
then
uninstall=`pm uninstall $package`
if [ "$uninstall" == "Success" ]
then
echo -e "\e[31m$package ($filename) is bad, and was removed\033[0m"
else
echo -e "\e[31m$package ($filename) is bad, and COULD NOT BE REMOVED\033[0m"
fi
else
echo -e "\e[31m$package ($filename) is bad\033[0m"
fi
fi
done
これらのファイルを携帯電話にコピーし、引数なしで実行して何が見つかるかを確認するか、最後に修正を追加して(fixmissing.sh fix)、見つけたものを修正します。自己責任で実行し、ファイルをバックアップしてください。このコードが何らかの形で何かを破壊した場合、私は責任を負いません。
誰かがこれらのスクリプトを一緒に更新/マージしたい場合は、それで問題ありません。これらは私の問題を解決するために作られたものであり、私がそれらを共有すると思っただけです。