Вопрос

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

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

Это было полезно?

Решение

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

        }
    }

В нем перечислены apk-файлы в моем укорененном htc magic и в emu.

Другие советы

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

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

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

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

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

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

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

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

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

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

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

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

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

Установка с торговой площадки

Поведение marketplace зависит от того, следует ли сохранять apk после установки.Google Play не сохраняет apk-файл после установки.Поведение других сторонних торговых площадок может отличаться.

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

Когда мы устанавливаем apk из debug tool, напрямую вызываем 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

Как система сохраняет apk

Конечно, система должна где-то хранить все apk-файлы.В системе есть три места для хранения базовых APK-файлов для различных типов apk.

  1. для стокового приложения

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

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

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

  1. приложение на SD-карте

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

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

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

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

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

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

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

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

тяга adb /mnt/asec

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

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

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

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

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

Другой способ получить apks, который вы не можете найти, на корневом устройстве находится с ящик для инструментов rom.

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top