Поддерживает ли Android файлы .apk? если да где?

После того, как Android установит приложение из Marketplace, он сохраняет файл .apk?

Есть ли стандартное место, где Android будет хранить такие файлы?

Ответ 1

Предварительно установленные приложения находятся в папке /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]);

        }
    }

Он перечисляет apks в моей корневой магии htc и в emu.

Ответ 2

Если вы просто хотите получить APK файл того, что вы ранее установили, сделайте следующее:

  • Получить AirDroid из Google Play.
  • Доступ к телефону с помощью AirDroid с веб-браузера вашего ПК.
  • Откройте приложение и выберите установленное приложение.
  • Нажмите кнопку "Загрузить", чтобы загрузить версию приложения APK с вашего телефона.

Вам не нужно корневать свой телефон, использовать adb или написать что-нибудь.

Ответ 3

Вы можете использовать диспетчер пакетов (pm) поверх adb shell для отображения пакетов:

adb shell pm list packages

и отобразить, где находится файл .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

Ответ 4

Нет стандартного расположения, однако вы можете использовать PackageManager, чтобы узнать о пакетах, и класс ApplicationInfo, из которого вы можете получить, имеет различную информацию о конкретном пакете: путь к его .apk, путь к его каталогу данных, путь к ресурсу только .apk(для приложений с прямой подпиской) и т.д. Обратите внимание, что у вас может быть или не быть разрешения на чтение этих каталогов в зависимости от ваших отношений с другим приложением; однако все приложения могут читать ресурс .apk(который также является реальным .apk для приложения без пересылки).

Если вы просто кусаетесь в оболочке, в настоящее время приложения, не связанные с пересылкой, находятся в /data/app/.apk. Пользователь оболочки может прочитать определенный .apk, хотя он не может перечислить каталог. В будущей версии соглашение об именах будет немного изменено, поэтому не рассчитывайте на то, что оно останется тем же, но если вы получите путь из .apk из диспетчера пакетов, вы можете использовать его в оболочке.

Ответ 5

Предварительно установленные приложения обычно находятся в /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).

Ответ 6

Если вы ищете путь к определенному приложению, быстрое и грязное решение - просто grep bugreport:

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

Я не знаю, что это предоставит исчерпывающий список, поэтому сначала может помочь запустить приложение.

Ответ 7

Вы можете загружать приложения с помощью ADB. Они находятся в /data/App/, я полагаю.

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

Обратите внимание, что вы должны зарубить свой телефон, чтобы извлекать защищенные от копирования приложения.

Ответ 8

Установить с рынка

Это поведение рынка, следует ли поддерживать apk после установки. Игра Google не поддерживает apk после установки. Другие сторонние рынки могут иметь разные типы поведения.

Установить из инструмента разработки/отладки (adb, eclipse, android studio)

Когда мы устанавливаем apk из инструмента отладки, непосредственно вызываем adb install или из студии eclipse/android, 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

Конечно, система должна хранить все апки где-то. Есть три места для системы, чтобы поддерживать apks basic на разных типах apks.

  • для бесплатного приложения

Обычно они отправляются в устройство по производству, включая основное приложение для работы в системе и службу google, вы можете найти их в каталоге /system/app и /system/priv-app.

  1. Установленное пользователем приложение

Большинство apks попадают в эту категорию. Эти apks обычно устанавливаются с рынка пользователями или adb install без опции -s. Их можно найти в каталоге /data/app для корневого устройства.

  1. app on sdcard

Если apk позволяет установить местоположение своей установки в sdcard с помощью android:installLocation="auto" в своем манифесте, приложение можно перенести на SD-карту из меню диспетчера системных приложений. Эти apks обычно находятся в защищенной папке sdcard /mnt/sdcard/asec.

Пытливый способ заставить место установки на SD-карте использовать команду adb install -s apk-to-install.apk.

В качестве примечания, файлы для предустановленного приложения больше не находятся в одном файле .apk. Существует папка, содержащая файлы для каждого предустановленного приложения в каталоге /system/app или /system/priv-app для новейшей версии Android.

Ответ 9

Если вы укоренились, загрузите приложение Root Explorer. Лучший менеджер файлов для корневых пользователей. В любом случае, System/app имеет все apks по умолчанию, которые поставляются вместе с телефоном, а data/apk - все apks приложений, которые вы установили. Просто нажмите на APK, который вы хотите (в то время как в Root Explorer), зайдите в папку /sdcard и просто вставьте.

Ответ 10

В/data/app, но для защиты от копирования я не думаю, что вы можете получить к нему доступ.

Ответ 11

Используйте это, чтобы отобразить все .apks под /data/app/

adb bugreport | grep 'package name="' | grep 'codePath="/data' | cut -d'"' -f4

Ответ 12

  • данные/приложение
  • Система/приложение
  • Система/собств-приложение
  • mnt/asec (при установке на SD-карте)

Вы можете вытащить .apks из любого из них:

adb pull/mnt/asec

Ответ 13

если вы используете eclipse goto DDMS, а затем файл-проводник там увидите папку System/Apps и apks есть

Ответ 14

.apk файлы могут находиться в каталоге /data/app/. Используя ES File Explorer, мы можем получить доступ к этим файлам .APK.

Ответ 15

Когда я установил свое приложение в эмулятор, он показал мой файл .apk в

данные/приложения Затем я использовал ls data/app//, чтобы узнать, существует ли она или не

После установки приложения просто используйте команду ls vie shell и проверьте нужный каталог, но зависит от того, какое приложение вы пытаетесь установить. Я использовал этот метод для Install Укажите, если что-то не так.

Ответ 16

Еще один способ получить apk, который вы не можете найти, на корневом устройстве - это ром инструмент.

Сделайте резервную копию с помощью диспетчера приложений, затем перейдите в storage/emulated/appmanager и проверьте резервное копирование системного приложения или резервное копирование пользовательских приложений.

Ответ 17

Чтобы найти apk, загрузите и установите Bluetooth App Sender из Play. По завершении установки откройте приложение Bluetooth App Sender. Он покажет все приложения (.apk), установленные на вашем устройстве, и вы можете легко перенести приложение на свой компьютер через Bluetooth.

Ответ 18

В отличие от того, что написано на выбранном вами ответе, вам не нужен root, и можно получить APK установленных приложений, что я сделал в своем приложении ( здесь). Пример:

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

Затем для каждого из элементов списка вы можете получить доступ к packageInfo.applicationInfo.sourceDir, который является полным путем APK установленного приложения.

Ответ 19

Ну, я пришел на этот пост, потому что хотел переустановить приложение, которое мне очень понравилось. Если это ваш случай, просто зайдите в Google Play и найдите "Мои приложения", вкладку "Все", и вы найдете способ переустановить понравившееся вам приложение. Я столкнулся с проблемой, которую я не смог найти, выполнив поиск по одному приложению, но он был там в Моих приложениях, чтобы я мог переустановить на своем новом мобильном устройстве;)