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