Android хранит файлы.apk? если так где?
После того, как android устанавливает приложение из Marketplace, сохраняет ли он файл.apk?
Есть ли стандартное место, где Android будет хранить такие файлы?
20 ответов
Предустановленные приложения находятся в /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 и в эму.
Вы можете использовать менеджер пакетов (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
Если вы просто хотите получить APK-файл ранее установленного вами файла, сделайте следующее:
- Получить AirDroid из Google Play
- Получите доступ к своему телефону с помощью AirDroid через веб-браузер на вашем ПК
- Зайдите в Приложения и выберите установленное приложение
- Нажмите кнопку "Загрузить", чтобы загрузить APK-версию этого приложения с вашего телефона.
Вам не нужно рутировать свой телефон, используйте adb
или напишите что-нибудь.
Стандартного местоположения не существует, однако вы можете использовать PackageManager, чтобы узнать о пакетах, и класс ApplicationInfo, который вы можете получить оттуда, содержит различную информацию о конкретном пакете: путь к его.apk, путь к его каталогу данных, путь к.apk только для ресурсов (для приложений с заблокированной пересылкой) и т. д. Обратите внимание, что у вас может быть или не быть разрешения на чтение этих каталогов в зависимости от ваших отношений с другим приложением; однако все приложения могут читать ресурс.apk (который также является реальным.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).
Установить с торговой площадки
Это поведение маркета, сохранять ли 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.
- для фондового приложения
Они обычно поставляются на устройстве изготовителем, включая основное приложение для работающей системы и сервис Google, вы можете найти их в каталоге /system/app
а также /system/priv-app
,
- приложение, установленное пользователем
Большинство apks попадают в эту категорию. Эти апки обычно устанавливаются с рынка пользователями или adb install
без -s
вариант. Вы можете найти их в каталоге /data/app
для корневого устройства.
- приложение на 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.
Если вы ищете путь к конкретному приложению, быстрое и грязное решение - просто просмотреть отчет об ошибке:
$ adb bugreport | grep 'dir=/data/app'
Я не знаю, что это даст исчерпывающий список, так что это может помочь запустить приложение в первую очередь.
Вы можете тянуть приложения с АБР. Они находятся в /data/App/, я считаю.
adb pull (location on device) (where to save)
Обратите внимание, что вы должны получить root права на свой телефон, чтобы получить защищенные от копирования приложения.
В /data/app, но для защиты от копирования я не думаю, что вы можете получить к нему доступ.
Если вы рутированы, скачайте приложение Root Explorer. Лучший файловый менеджер для рутированных пользователей. В любом случае, System/app имеет все apks по умолчанию, которые поставляются с телефоном, а data/apk содержит все apks установленных приложений. Просто нажмите и удерживайте нужный файл (находясь в Root Explorer), перейдите в папку /sdcard и просто вставьте.
- данные / приложения
- система / приложение
- Система / собств-приложение
- Mnt/ Asec (при установке в SDCard)
Вы можете извлечь.apks из любого из них:
adb pull / mnt/ asec
Используйте это, чтобы перечислить все.apks в /data/app/
adb bugreport | grep 'package name="' | grep 'codePath="/data' | cut -d'"' -f4
Файлы.apk могут находиться в каталоге /data/app/. Используя ES File Explorer, мы можем получить доступ к этим файлам.APK.
Если вы используете eclipse, перейдите в DDMS, а затем в проводник, там вы увидите папку System/Apps и там есть apks
В отличие от того, что написано в выбранном ответе, вам не нужен root, и можно получить APK-файлы установленных приложений, как я это сделал в своем приложении ( здесь). Пример:
List<PackageInfo> packages=getPackageManager().getInstalledPackages(0);
Затем для каждого из элементов списка вы можете получить доступ к packageInfo.applicationInfo.sourceDir, который является полным путем APK установленного приложения.
Еще один способ получить apk
Если вы не можете найти это устройство на рут-сервере с ящиком для инструментов.
Сделайте резервную копию с помощью диспетчера приложений, затем перейдите на storage/emulated/appmanager
и проверьте или резервное копирование системного приложения или пользовательского приложения.
Когда я установил свое приложение на эмулятор, он показал мой файл.apk в
data / app Затем я использовал ls data / app //, чтобы увидеть, существует он или нет
После установки приложения просто используйте команду ls vie shell и проверьте нужный каталог, но это зависит от того, какое приложение вы пытаетесь установить. Я использовал этот метод для установки точки, если что-то не так.
- Установить
Total Commander
. - Открытым
Installed apps
на главной странице.
Чтобы найти apk
, загрузите и установите отправителя приложения Bluetooth из магазина Play. После завершения установки откройте отправителя приложения Bluetooth. Он покажет все приложения (.apk)
установлен на вашем устройстве, то вы можете легко перенести приложение на ПК через Bluetooth.
Я пришел к этому посту, потому что хотел переустановить какое-то приложение, которое мне очень понравилось. Если это ваш случай, просто перейдите в Google Play и найдите "Мои приложения", вкладку "Все", и вы найдете способ переустановить понравившееся вам приложение. Я столкнулся с проблемой, которую не смог найти при поиске по одному приложению, но это было в Моих приложениях, поэтому я мог переустановить свой новый мобильный телефон;)