202

Android が Marketplace からアプリケーションをインストールした後、.apk ファイルは保持されますか?

Android がそのようなファイルを保持する標準的な場所はありますか?

4

19 に答える 19

157

パッケージ マネージャー ( pm) を使用して、パッケージadb shellを一覧表示できます。

adb shell pm list packages | sort

ファイルの場所を表示するに.apkは:

adb shell pm path com.king.candycrushsaga
package:/data/app/com.king.candycrushsaga-1/base.apk

そしてadb pull、apkをダウンロードします。

adb pull data/app/com.king.candycrushsaga-1/base.apk
于 2015-03-15T11:53:16.750 に答える
130

プリインストールされたアプリケーションは、/system/appフォルダにあります。ユーザーがインストールしたアプリケーションは にあり/data/appます。ルート化された電話を持っていないとアクセスできないと思います。ここにはルート化された電話はありませんが、次のコードを試してください。

public class Testing extends Activity {
    private static final String TAG = "TEST";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        File appsDir = new File("/data/app");

        String[] files = appsDir.list();

        for (int i = 0 ; i < files.length ; i++ ) {
            Log.d(TAG, "File: "+files[i]);

        }
    }

ルート化されたhtcマジックとエミュのapkをリストします。

于 2010-03-24T13:48:37.273 に答える
100

以前にインストールしたものの APK ファイルを取得したいだけの場合は、次のようにします。

  1. Google Play から AirDroid を入手する
  2. PC の Web ブラウザーから AirDroid を使用して電話にアクセスする
  3. アプリに移動し、インストールされているアプリを選択します
  4. 「ダウンロード」ボタンをクリックして、このアプリの APK バージョンを携帯電話からダウンロードします。

adb電話をルート化する必要も、を使用する必要も、何も書く必要もありません。

于 2012-08-10T19:47:22.007 に答える
26

標準の場所はありませんが、PackageManager を使用してパッケージについて調べることができ、そこから取得できる ApplicationInfo クラスには、特定のパッケージに関するさまざまな情報 (.apk へのパス、データ ディレクトリへのパス、パス) があります。リソースのみの .apk (フォワード ロックされたアプリの場合) など。他のアプリとの関係に応じて、これらのディレクトリを読み取る権限がある場合とない場合があることに注意してください。ただし、すべてのアプリはリソース .apk を読み取ることができます (これは、フォワード ロックされていないアプリの実際の .apk でもあります)。

シェルをいじっているだけの場合、現在、前方ロックされていないアプリは /data/app/.apk にあります。シェル ユーザーは特定の .apk を読み取ることができますが、ディレクトリを一覧表示することはできません。将来のリリースでは命名規則が若干変更される予定なので、同じままであるとは考えないでください。ただし、パッケージ マネージャーから .apk のパスを取得すると、それをシェルで使用できます。

于 2010-03-24T17:11:14.263 に答える
18

通常、プレインストールされたアプリは /system/app にあり、ユーザーがインストールしたアプリは /data/app にあります。

「adb pull」を使用できますが、APK ファイルのフル パスを知っている必要があります。エミュレーターでは、「adb shell」+「ls」を使用してディレクトリ一覧を取得できます。ただし、Android デバイスでは、セキュリティ上の理由により、「/data」フォルダーでそれを行うことはできません。では、APK ファイルのフル パスをどのように特定するのでしょうか。

PackageManager を照会するプログラムを作成することで、インストールされているすべてのアプリの完全なリストを取得できます。以下の短いコード スニペット:

PackageManager  pm = getPackageManager();
List<PackageInfo> pkginfo_list = pm.getInstalledPackages(PackageManager.GET_ACTIVITIES);
List<ApplicationInfo> appinfo_list = pm.getInstalledApplications(0);
for (int x=0; x < pkginfo_list.size(); x++){             
  PackageInfo pkginfo = pkginfo_list.get(x);
  pkg_path[x] = appinfo_list.get(x).publicSourceDir;  //store package path in array
}

そのような情報を提供するアプリも見つけることができます。それらはたくさんあります。 これを試してください(AppSender)。

于 2011-05-24T14:42:37.477 に答える
11

マーケットプレイスからインストール

インストール後に apk を保持するかどうかは、マーケットプレイスの動作です。Google Play は、インストール後に apk を保持しません。他のサードパーティのマーケットプレイスでは、動作が異なる場合があります。

開発・デバッグツール(adb、eclipse、android studio)からインストール

デバッグ ツールから直接呼び出すadb installか、Eclipse/Android Studio から apk をインストールすると、apk はadb push読み取りおよび書き込み可能なパブリック ディレクトリ (通常は ) に転送 () され/data/local/tmp/ます。その後、ツールはコマンドを使用してインストールし、インストールが成功した後にpm一時 apk を削除します。/data/local/tmp/

これらの情報は、次のようなデバッグ出力から取得できます。

$ adb install bin/TestApplication.apk 
3155 KB/s (843375 bytes in 0.260s)
    pkg: /data/local/tmp/TestApplication.apk
Success

システムが apk を保持する方法

もちろん、システムはすべての apk をどこかに保存する必要があります。さまざまなタイプの apk に基づいて、システムが apk を保持する場所が 3 つあります。

  1. ストックアプリ用

    これらは通常、システム実行用のコア アプリや Google サービスを含め、製造元によってデバイスに同梱されており、ディレクトリ/system/appとの下にあり/system/priv-appます。

  2. ユーザーがインストールしたアプリ

    ほとんどの APK はこのカテゴリに分類されます。これらの apk は通常、ユーザーまたはオプションadb installなしでマーケットプレイスからインストールされ-sます。/data/appそれらは、ルート化されたデバイスのディレクトリの下にあります。

  3. SD カード上のアプリ

    apkandroid:installLocation="auto"がそのマニフェストで SD カードのインストール場所を有効にすると、システムのアプリ マネージャー メニューからアプリを SD カードに移動できます。これらの apk は通常、sdcard のセキュア フォルダーにあります/mnt/sdcard/asec

    インストール場所を sdcard に強制するもう 1 つの方法は、コマンドを使用することadb install -s apk-to-install.apkです。

注意として、プリインストールされたアプリのファイルは、.apkもはや単一のファイルではありません。/system/appディレクトリにプリインストールされているすべてのアプリまたは/system/priv-app最新の Android リリースのファイルを含むフォルダーがあります。

于 2015-05-08T07:18:05.497 に答える
9

特定のアプリのパスを探している場合、迅速で汚い解決策は、バグレポートをgrepすることです。

$ adb bugreport | grep 'dir=/data/app' 

これが完全なリストを提供するかどうかはわかりませんので、最初にアプリを実行すると役立つ場合があります。

于 2012-08-15T17:44:02.283 に答える
8

ADB を使用してアプリをプルできます。それらは /data/App/ にあると思います。

adb pull (location on device) (where to save)

コピー保護されたアプリをプルするには、電話をルート化する必要があることに注意してください。

于 2010-03-24T13:34:00.690 に答える
5

/data/app にありますが、コピー防止のためにアクセスできないと思います。

于 2010-03-24T13:32:15.093 に答える
5

ルート化されている場合は、アプリ Root Explorer をダウンロードします。ルート化されたユーザーに最適なファイル マネージャー。とにかく、System/app には電話に付属のすべてのデフォルトの apk があり、data/apk にはインストールしたアプリのすべての apk があります。(ルート エクスプローラーで) 必要な apk を長押しし、/sdcard フォルダーに移動して貼り付けます。

于 2011-03-01T01:49:41.537 に答える
4
  • データ/アプリ
  • システム/アプリ
  • システム/プライベートアプリ
  • mnt/asec (sdcardにインストールした場合)

それらのいずれかから .apk を取得できます。

adb プル /mnt/asec

于 2015-07-16T17:24:23.887 に答える
4

これを使用して、/data/app/ の下にあるすべての .apk を一覧表示します

adb bugreport | grep 'package name="' | grep 'codePath="/data' | cut -d'"' -f4
于 2013-01-31T09:48:58.157 に答える
3

.apk ファイルは /data/app/ ディレクトリの下に配置できます。ES File Explorerを使用して、これらの .APK ファイルにアクセスできます。

于 2015-08-31T13:18:17.123 に答える
2

Eclipse Goto DDMS を使用してからファイル エクスプローラーを使用している場合は、System/Apps フォルダーが表示され、apk がそこにあります。

于 2011-10-28T12:30:42.500 に答える
0

を見つけるにはapk、Play ストアから Bluetooth App Sender をダウンロードしてインストールします。インストールが完了したら、Bluetooth App Sender を開きます。デバイスにインストールされているすべてのアプリが表示(.apk)され、Bluetooth を介してアプリを PC に簡単に転送できます。

于 2014-07-25T12:10:54.017 に答える
0

選択した回答に書かれていることとは対照的に、ルートは必要ありません。インストールされているアプリの APK を取得することは可能です。これは、私が自分のアプリで行った方法です (こちら)。例:

List<PackageInfo> packages=getPackageManager().getInstalledPackages(0);

次に、リストの項目ごとに、インストール済みアプリの APK のフル パスであるpackageInfo.applicationInfo.sourceDirにアクセスできます。

于 2015-05-05T18:20:25.963 に答える
0

apkroot化されたデバイスで見つからないsを取得する別の方法は、 romツールボックスを使用することです。

アプリ マネージャーを使用してバックアップを作成してから、 system app backupまたはuser app backupstorage/emulated/appmanagerに移動して確認します。

于 2014-04-26T04:21:53.833 に答える
0

エミュレーターにアプリをインストールすると、.apk ファイルが表示されました

data/app 次に、ls data/app //を使用して、存在するかどうかを確認しました

アプリをインストールしたら、シェルで ls コマンドを使用して目的のディレクトリを確認するだけですが、インストールしようとしているアプリケーションの種類によって異なります。 何か問題がある場合は、この方法を使用して Point をインストールしました。

于 2010-06-10T21:11:52.450 に答える
-1

とても気に入ったアプリを再インストールしたかったので、この投稿に来ました。このような場合は、Google Play にアクセスし、[マイ アプリ] タブの [すべて] を探してください。お気に入りのアプリを再インストールする方法が見つかります。1 つのアプリを検索しても見つからないという問題に直面しましたが、それは [マイ アプリ] にあったので、新しいモバイルに再インストールできました ;)

于 2016-07-26T03:08:25.270 に答える