3

開発中のアプリをエミュレーターから削除する2つの方法を知っています。

  1. エミュレータGUIの使用:[設定]>[アプリケーション]>[アプリケーションの管理]>[アンインストール]
  2. ADBの使用:adbアンインストール

'adb shell'を使用して、3番目の方法を発見した可能性があります。

rm /data/app/<package>.apk

ただし、アプリに関連する追加情報(登録?)がある可能性があるため、これはアプリを削除するための実際には良い方法ではないようです。

その情報は何ですか、そしてそれはどこで見つけることができますか?

4

5 に答える 5

4

あなたがこれについて言及するのは興味深いことです。私はあなたの質問にいくつかの光を当てるために簡単な自家製のテストを実行しました。

通常、.apkファイルをインストールすると、Androidは/ data / data/<起動アクティビティのパッケージ名>にそのファイルの内部ストレージ領域を作成します。これは主に、他のアプリや電話ユーザーがアクセスできない内部キャッシュ領域として使用されます。これについては、Androidのデータストレージセクションの内部ストレージの章でもう少し詳しく読むことができます。これはアプリ専用の領域であり、そこにプライベートデータを書き込むことができます。

理論的にアプリをアンインストールすると、この内部ストレージ領域も削除されます。あなたが概説した最初の2つの方法は確かにそれを行います:/ data /app/の.apkファイルと/data/data/の内部ストレージ領域が削除されます。

ただし、adbシェルを使用してrmコマンドを実行した場合、削除されるのは/ data /app/内の.apkファイルだけです。/ data /data/の内部ストレージ領域は削除されません。したがって、本質的には、アプリの追加情報が必ずしも削除されるとは限らないというのは正しいことです。ただし、逆に、コマンドの実行後にアプリを再インストールすると、既存の内部ストレージ領域は、その新しいコピーがインストールされているときに上書きされます。

于 2011-03-06T16:03:10.933 に答える
3

adb uninstall com.example.test

com.example.testは、アプリによって異なる場合があります。

于 2013-07-19T18:12:20.623 に答える
2

私もこれに問題がありました。携帯電話に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)、見つけたものを修正します。自己責任で実行し、ファイルをバックアップしてください。このコードが何らかの形で何かを破壊した場合、私は責任を負いません。

誰かがこれらのスクリプトを一緒に更新/マージしたい場合は、それで問題ありません。これらは私の問題を解決するために作られたものであり、私がそれらを共有すると思っただけです。

于 2011-10-23T05:29:44.723 に答える
1

アプリがSDカードに作成したファイルは削除されないと思います。

于 2011-02-26T18:53:24.617 に答える
0

別の方法があります-実際のデバイスのようにエミュレーターを使用する-エミュレーターでアプリを見つけ、それを上にドラッグしてアンインストールします。

于 2019-03-07T14:08:29.873 に答える