Intereting Posts
В Visual Studio Emulator для Android по-прежнему поддерживается установка пакета перетаскивания? Проблема с 9 патч-изображением в качестве фона Производительность Android достигла более поздних версий, чем 2.3.5 (phonegap / cordova) Оверлей экрана обнаружены блоки Android-разрешения Eclipse зацикливается на «стартовой активности» при отправке приложения на устройство. Как это решить? Разница между CHOICE_MODE_MULTIPLE и CHOICE_MODE_MULTIPLE_MODAL? С помощью приемника широковещательной передачи для запуска AlarmManager в Android? Как создать прозрачную полосу прокрутки в android? На тестирование блока Android, когда использовать тестовые примеры? Показывать только одного ребенка расширяемого списка за раз Android 4.1 – RTSP с использованием VideoView и MediaController Firebase Deep-link открывает игру, даже когда приложение установлено Android: добавление лицензии на простое приложение hello world на эмуляторе Как Android Studio проверяет XML на экране настроек? Использование веб-просмотра для просмотра фотогалереи

Как просмотреть кеш приложения, специфичного для Android?

Есть ли способ динамически просматривать кэш приложений в Android? Я сохраняю изображения в кеш (/ data / data / my_app_package / cache), и я на 99% уверен, что они там сохраняются, но не уверены, как долго они остаются.

Когда я смотрю в кеш с помощью Проводника DDMS в Eclipse, он всегда пуст. Я также попытался изучить соответствующий кеш-каталог в ADB, и снова он всегда пуст.

Какие-либо предложения?

Solutions Collecting From Web of "Как просмотреть кеш приложения, специфичного для Android?"

Если ADB не работает как root (как это было бы на эмуляторе), вы вообще не можете просматривать что-либо под / данными, если приложение, которое его владеет, сделало его общедоступным для чтения. Кроме того, вы не можете просматривать структуру каталогов – вы можете только перечислить файлы, как только вы попадете в каталог, где у вас есть доступ, путем явного ввода его пути.

В общем, у вас есть пять вариантов:

  • Сделайте расследование в собственном приложении

  • Отметьте соответствующие файлы как общедоступные и используйте что-то (оболочка adb или adb pull), где вы можете ввести полное имя пути, вместо того, чтобы пытаться просмотреть дерево

  • Попросите владельца приложения скопировать весь каталог на SD-карту

  • Используйте эмулятор или корневое устройство, где adb (и, следовательно, доступ браузера ddms) может выполняться как root (или использовать корневой файловый проводник или корневое устройство)

  • Используйте adb и инструмент run-as с отлаживаемым apk, чтобы получить оболочку командной строки, запущенную как идентификатор пользователя приложения. Для тех, кто знаком с командной строкой unix, это может быть наиболее эффективным (хотя панель инструментов sh на Android ограничена и использует свой крошечный словарь сообщений об ошибках обманчивыми способами)

Вы можете использовать эту команду для перечисления файлов для собственного отлаживаемого apk:

 adb shell run-as com.corp.appName ls /data/data/com.corp.appName/cache 

И этот скрипт для вытаскивания из кеша:

 #!/bin/sh adb shell "run-as com.corp.appName cat '/data/data/com.corp.appNamepp/$1' > '/sdcard/$1'" adb pull "/sdcard/$1" adb shell "rm '/sdcard/$1'" 

Затем вы можете вытащить файл из кеша следующим образом:

 ./pull.sh cache/someCachedData.txt 

Корень не требуется.

Кэшированные файлы действительно хранятся в / data / data / my_app_package / cache

Обязательно сохраните файлы, используя следующий метод:

 String cacheDir = context.getCacheDir(); File imageFile = new File(cacheDir, "image1.jpg"); FileOutputStream out = new FileOutputStream(imageFile); out.write(imagebuffer, 0, imagebufferlength); 

Где imagebuffer [] содержит данные изображения в байтовом формате, а длина изображения – длина содержимого, которое должно быть записано в FileOutputStream.

Теперь вы можете посмотреть в DDMS File Explorer или сделать «adb shell» и cd to / data / data / my_app_package / cache и сделать «ls». Вы найдете файлы изображений, которые вы сохранили с помощью кода в этом каталоге.

Кроме того, из документации для Android:

Если вы хотите кэшировать некоторые данные, а не сохранять их настойчиво, вы должны использовать getCacheDir (), чтобы открыть файл, который представляет собой внутренний каталог, в котором ваше приложение должно сохранять временные файлы кеша.

Когда устройство находится на низком внутреннем пространстве памяти, Android может удалить эти кеш-файлы для восстановления пространства. Однако вы не должны полагаться на систему, чтобы очистить эти файлы для вас. Вы всегда должны хранить файлы кеша самостоятельно и оставаться в пределах разумного предела потребляемого пространства, например 1 МБ. Когда пользователь удаляет ваше приложение, эти файлы удаляются.

Вот код: замените имя_пакета на ваше конкретное имя пакета.

 Intent i = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS); i.addCategory(Intent.CATEGORY_DEFAULT); i.setData(Uri.parse("package:package_name")); startActivity(i); 

Вопрос : Где находится конкретный кэш приложений, расположенный на Android?

Ответ : / данные / данные