it-swarm.com.ru

Android хранит файлы .apk? если так где?

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

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

170
Gubatron

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

113
Macarse

Вы можете использовать менеджер пакетов (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 скачать апк.

adb pull data/app/com.king.candycrushsaga-1/base.apk
91
Mariusz Jamro

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

  1. Получить AirDroid из Google Play
  2. Получите доступ к своему телефону с помощью AirDroid через веб-браузер на вашем ПК
  3. Зайдите в Приложения и выберите установленное приложение
  4. Нажмите кнопку «скачать», чтобы загрузить APK-версию этого приложения с вашего телефона.

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

90
Jan Przybylo

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

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

25
hackbod

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

17
xmaslatte

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

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

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

8
tomwhipple

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

Это поведение маркета, сохранять ли apk после установки. Гугл плей не сохраняет апк после установки. Другие сторонние торговые площадки могут иметь другое поведение.

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

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

Как система держит апк

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

  1. для фондового приложения

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

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

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

  1. приложение на SDCard

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

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

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

7
alijandro

Вы можете тянуть приложения с АБР. Они находятся в/data/App /, я считаю.

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

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

7
Bryan Denny

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

4
Tanzer

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

adb bugreport | grep 'package name="' | grep 'codePath="/data' | cut -d'"' -f4
3
gilm
  • данные/приложения
  • система/приложение
  • система/собств-приложение
  • mnt/Asec (при установке в SDCard)

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

adb pull/mnt/asec

3
Ignorante

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

3
Robby Pond

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

1
vgokul129

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

1
Jawad Amjad

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

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

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

0
DeAviator

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

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

0
load

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

0
Prem

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

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

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

0
android developer

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

0
Sergio Abreu