Где сохраняются загруженные приложения при установке на SD-карту?

Вчера у меня было около 40 МБ свободного места на моем Android 2.2.1 Samsung GT-S5570. Я хотел установить Facebookприложение, поэтому я загрузил его, Play Storeа затем оно установилось автоматически. Его размер был ~20 МБ.

Это приложение установлено на SD-карту. Однако после всего процесса я получил предупреждающее сообщение о нехватке внутренней памяти. Я проверил свободное пространство и, что удивительно, теперь оно составляет ~ 20 МБ ... Я предполагаю, что 20 МБ - это загруженное приложение (что-то вроде .exe в Windows).

Я просмотрел .temp и загрузки, чтобы увидеть, есть ли там «.exe», но я не смог его найти. Я просмотрел настройки браузера (браузер Android по умолчанию), чтобы увидеть, где сохраняются загрузки, но я не смог найти никаких ссылок на загрузки.

Где сохраняются загруженные файлы «.exe»?

Танос, я только что добавил insufficient-memoryтег к твоему вопросу. Пожалуйста, взгляните на его tag-wiki для получения подробной информации, включая предложение babelmonk (которое довольно подробно описано в tag-wiki app2sd ).

Ответы (2)

Приложения для Android не являются файлами .exe — это файлы .apk, которые фактически являются файлами Java .jar с дополнительной включенной информацией.

Пакеты устанавливаются в одном из нескольких мест:

  1. /system/app- для системных приложений - вы не можете изменить эту папку.
  2. /data/app- сюда устанавливаются любые приложения, установленные из маркета, и вы, как пользователь, можете изменить папку.
  3. /sdcard/.android_secure- здесь хранятся приложения, перемещенные на SD-карту

Обратите внимание, что приложения также будут размещать данные в нескольких местах, и не все из них находятся на SD-карте, даже если само приложение установлено на SD-карте; это, вероятно, ваша проблема с приложением на вашем устройстве, и, к сожалению, без рутирования устройства и использования чего-то вроде a2sd , который позволяет вам перемещать другие разделы на SD-карту.

Для справки также см. этот вопрос на StackOverflow , в котором есть дополнительная информация.

Большое спасибо за ваш ответ! Я действительно рутировал свой телефон, но я действительно не понимаю, что будет делать a2sd. Ссылка, которую вы предоставили - поправьте меня, если я ошибаюсь - это руководство по переносу ОС на SD-карту ... Я считаю, что это не самый безопасный способ, верно?
Правильно, это сопряжено с определенным риском и требует значительного понимания системы Android, чтобы максимально использовать ее - я бы, конечно, не рекомендовал ее слабонервным :) Чтобы ответить на ваш вопрос о переносе ОС на SD-карта в целом верна, но вы можете быть весьма избирательны в отношении того, какие разделы перемещаются и как, поэтому она довольно мощная.
Мощный? Это звучит вкусно! Есть ли у вас в виду учебник или руководство, чтобы помочь сделать это? Я могу сказать, что эти предупреждения о памяти действительно раздражают!
Иззи дал ссылку на вики-тег app2sd , с которой можно начать (спасибо, Иззи, я не знал об этом!)
Честно говоря, я уже испробовал все эти советы. Я рутировал свой телефон, создал ext2раздел ~ 250 МБ на SD-карте, переместил все подвижные приложения с помощью Link2SD, создал символические ссылки на неподвижные приложения (например maps, play store), удалил «системные» приложения, такие как gmailи, youtubeно снова у меня есть только ~ 20 МБ бесплатно космос...

Фактическое местоположение (или путь) внешней SD-карты (не внутренней, иногда доступное пользователю внутреннее хранилище считается внешним хранилищем (в разработке Android)) варьируется от одного устройства к другому. Так что, предположительно, путь установленных приложений на sd карту тоже отличается от устройства к устройству. Если вы действительно хотите узнать фактическое расположение установленных приложений (на SD-карте), вам придется немного попрограммировать.

Но в большинстве случаев (устройства Samsung, работающие на lolipop) пакет приложения находится внутри /mnt/asec/[имя_пакета], а файл .apk находится внутри /mnt/asec/[имя_пакета]/[имя_приложения].apk . Если вы действительно хотите знать, где оно находится, поместите приведенный ниже код в метод onCreate() и запустите приложение на нужном вам устройстве. Он покажет вам все местоположения приложения, которые находятся внутри SD-карты....

Надеюсь поможет...

PackageManager pm=getPackageManager();
    List<ApplicationInfo> infos=pm.getInstalledApplications(0);
    for(int i=0;i<infos.size();++i){
       String src_path=infos.get(i).sourceDir;
       if(!src_path.contains("/system") &&
               !src_path.contains("/data")){
           // showing path as toast message
           // you can even print it with System.out.println()
           Toast.makeText(this, src_path, Toast.LENGTH_SHORT).show();
       }
    }