Куда сохраняет файлы android studio
Хватит об Intent и Activity. Поговорим о хранении данных. В Android есть несколько способов хранения данных:
Preferences - в качестве аналогии можно привести виндовые INI-файлы
SQLite - база данных, таблицы
обычные файлы - внутренние и внешние (на SD карте)
Мы начнем с самого простого – Preferences. Значения сохраняются в виде пары: имя, значение. Так же, как и например extras в Intent.
Разработаем приложение. В нем будет поле для ввода текста и две кнопки – Save и Load. По нажатию на Save мы будем сохранять значение из поля, по нажатию на Load – загружать.
Project name: P0331_SharedPreferences
Build Target: Android 2.3.3
Application name: SharedPreferences
Package name: ru.startandroid.develop.p0331sharedpreferences
Create Activity: MainActivity
Откроем main.xml и создадим такой экран:
Поле ввода и две кнопки.
Теперь пишем код в MainActivity.java:
Определение элементов экрана, присвоение обработчиков и реализация onClick – тут все понятно и как обычно. Нам интересны методы, которые мы вызываем в onClick
Все сохраняем, запускаем приложение.
Для начала, давайте убедимся, что сохранение в принципе нужно. Введите какой-нить текст в поле ввода
Теперь найдите приложение в общем списке приложений эмулятора
и запустите снова.
Поле ввода пустое. То, что мы вводили – пропало при закрытии программы. Нажатие на Load тоже ничего не даст – мы ничего не сохраняли.
Давайте попробуем сохранять. Снова введите значение и нажмите Save.
Значение сохранилось в системе.
Давайте сделаем так, чтобы сохранение и загрузка происходили автоматически при закрытии и открытии приложения и не надо было жать кнопки. Для этого метод loadText будем вызывать в onCreate.
(Добавляете только строку 8)
а метод saveText - в onDestroy
Все сохраним, запустим. Теперь можно вводить данные, закрывать приложение, снова открывать и данные не потеряются. Кнопки Save и Load также работают. В какой момент сохранять данные в ваших приложениях – решать только вам. По нажатию кнопки, при закрытии программы или еще по какому-либо событию. Главное – теперь вы это умеете.
Еще немного слов по этой теме.
Preferences-данные сохраняются в файлы и вы можете посмотреть их. Для этого в Eclipse откройте меню Window > Show View > Other и выберите Android > File Explorer. Отобразилась файловая система эмулятора.
Открываем папку data/data/ru.startandroid.develop.p0331sharedpreferences/shared_prefs и видим там файл MainActivity.xml. Если его выгрузить на комп и открыть - увидим следующее:
Все верно, имя - saved_text и значение - abcdefg.
Обратите внимание, что в пути к файлу используется наш package.
Теперь разберемся, откуда взялось наименование файла MainActivity.xml. Кроме метода getPreferences, который мы использовали, есть метод getSharedPreferences. Он выполняет абсолютно те же функции, но позволяет указать имя файла для хранения данных. Т.е., например, если бы мы в saveText использовали для получение SharedPreferences такой код:
То данные сохранились бы в файле MyPref.xml, а не в MainActivity.xml.
Теперь если мы посмотрим исходники метода getPreferences, то видим следующее:
Используется метод getSharedPreferences, а в качестве имени файла берется имя класса текущего Activity. Отсюда и появилось имя файла MainActivity.xml.
- используете getPreferences, если работаете с данными для текущего Activity и не хотите выдумывать имя файла.
- используете getSharedPreferences, если сохраняете, например, данные - общие для нескольких Activity и сами выбираете имя файла для сохранения.
Кстати, в File Explorer вы можете видеть юниксовые rwx-права доступа к файлу. Попробуйте при сохранении данных использовать не MODE_PRIVATE, а MODE_WORLD_READABLE или MODE_WORLD_WRITEABLE и посмотрите, как будут меняться права.
Полный код MainActivity.java:
На следующем уроке:
- хранение данных с помощью SQLite
- в чатах решаем возникающие вопросы и проблемы по различным темам: Android, Kotlin, RxJava, Dagger, Тестирование
- ну и если просто хочется поговорить с коллегами по разработке, то есть чат Флудильня
- новый чат Performance для обсуждения проблем производительности и для ваших пожеланий по содержанию курса по этой теме
Работа с настройками уровня activity и приложения позволяет сохранить небольшие данные отдельных типов (string, int), но для работы с большими массивами данных, такими как графически файлы, файлы мультимедиа и т.д., нам придется обращаться к файловой системе.
ОС Android построена на основе Linux. Этот факт находит свое отражение в работе с файлами. Так, в путях к файлам в качестве разграничителя в Linux использует слеш "/", а не обратный слеш "\" (как в Windows). А все названия файлов и каталогов являются регистрозависимыми, то есть "data" это не то же самое, что и "Data".
Приложение Android сохраняет свои данные в каталоге /data/data/<название_пакета>/ и, как правило, относительно этого каталога будет идти работа.
Для работы с файлами абстрактный класс android.content.Context определяет ряд методов:
boolean deleteFile (String name) : удаляет определенный файл
String[] fileList () : получает все файлы, которые содержатся в подкаталоге /files в каталоге приложения
File getCacheDir() : получает ссылку на подкаталог cache в каталоге приложения
File getDir(String dirName, int mode) : получает ссылку на подкаталог в каталоге приложения, если такого подкаталога нет, то он создается
File getExternalCacheDir() : получает ссылку на папку /cache внешней файловой системы устройства
File getExternalFilesDir(String type) : получает ссылку на каталог /files внешней файловой системы устройства
File getFileStreamPath(String filename) : возвращает абсолютный путь к файлу в файловой системе
FileInputStream openFileInput(String filename) : открывает файл для чтения
FileOutputStream openFileOutput (String name, int mode) : открывает файл для записи
Все файлы, которые создаются и редактируются в приложении, как правило, хранятся в подкаталоге /files в каталоге приложения.
Для непосредственного чтения и записи файлов применяются также стандартные классы Java из пакета java.io.
Итак, применим функционал чтения-записи файлов в приложении. Пусть у нас будет следующая примитивная разметка layout:
Поле EditText предназначено для ввода текста, а TextView - для вывода ранее сохраненного текста. Для сохранения и восстановления текста добавлены две кнопки.
Теперь в коде Activity пропишем обработчики кнопок с сохранением и чтением файла:
При нажатии на кнопку сохранения будет создаваться поток вывода FileOutputStream fos = openFileOutput(FILE_NAME, MODE_PRIVATE)
В данном случае введенный текст будет сохраняться в файл "content.txt". При этом будет использоваться режим MODE_PRIVATE
Система позволяет создавать файлы с двумя разными режимами:
MODE_PRIVATE : файлы могут быть доступны только владельцу приложения (режим по умолчанию)
MODE_APPEND : данные могут быть добавлены в конец файла
Поэтому в данном случае если файл "content.txt" уже существует, то он будет перезаписан. Если же нам надо было дописать файл, тогда надо было бы использовать режим MODE_APPEND:
Для чтения файла применяется поток ввода FileInputStream :
В итоге после нажатия кнопки сохранения весь текст будет сохранен в файле /data/data/название_пакета/files/content.txt
Где физически находится созданный файл? Чтобы увидеть его на подключенном устройстве перейдем в Android Stud в меню к пункту View -> Tool Windows -> Device File Explorer
После этого откроектся окно Device File Explorer для просмотра файловой системы устройства. И в папке data/data/[название_пакета_приложения]/files мы сможем найти сохраненный файл.
Я начал использовать новую Android Studio и не могу найти APK приложения в IDE, где он фактически находится?
чтобы помочь людям, которые могут искать ответ на этот же вопрос, важно знать, какие проекты вы используете в Studio.
ш
тип проекта по умолчанию при создании нового проекта и рекомендуемый в целом-Gradle.
для нового проекта под названием "Foo" структура под главной папкой будет
где внутренняя папка" Foo " является основным модулем (эта структура позволяет вы создадите больше модулей позже в той же структуре без изменений).
в этой настройке местоположение сгенерированного APK будет находиться под
обратите внимание, что каждый модуль может генерировать свой собственный выход, поэтому истинный выход больше
редактировать В новейшей версии Android Studio путь к местоположению для сгенерированного вывода -
IntelliJ
если вы являетесь пользователем IntelliJ перед переключением в Studio и импортированием вашего проекта IntelliJ напрямую, ничего не изменилось. Расположение выходных данных будет одинаковым в разделе:
Примечание: это станет устаревшим иногда вокруг 1.0
затмение
если вы импортируете проект Android Eclipse напрямую,не делай этого! Как только у вас есть зависимости в вашем проекте (jars или проекты библиотеки), это не будет работать и ваш проект не будет правильно настроена. Если у вас нет зависимостей, то apk будет находиться в том же месте, что и в Eclipse:
однако я не могу подчеркнуть важность не делаешь это.
Я Android Studio 0.6 и apk был создан в
Он включает все библиотеки, чтобы я мог поделиться им.
обновление Android Studio 0.8.3 Бета. Apk теперь в
обновление Android Studio 0.8.6-2.0. Apk теперь в
на самом деле нет причин копать пути; IDE передает его вам (по крайней мере, с версией 1.5.1).
на выберите Build APK :
появится диалоговое окно:
если вы используете более новую версию Android Studio, он может выглядеть так:
нажатием Show in Explorer или locate ссылке, вы будет представлен файловый проводник, расположенный где-то рядом, где Android Studio поместила файл APK:
в моем случае я использую Android Studio 1.0.2, я получаю файл APK от:
Если кто-то пропустит свой APK и не сможет найти его в местах, указанных в других ответах (я нашел этот вопрос, так как я тоже не мог его найти), это может быть просто в этой папке (моя была)
у меня также был там этот файл:
Я не совсем уверен, является ли apk на самом деле полномасштабным apk, который должен быть сгенерирован, но я пробовал его на различных устройствах (не только целевое устройство, но и те, которые поддерживали только минимальный SDK) и это сработало.
надеюсь, это поможет кому-то.
Это Project_Location / app / build / outputs / apk для проекта Gradle
найти apk используя следующие действия:-
- перейти к папке проекта.
- открыть папку проекта.
- открыть build папка.
- открыть .
- открыть .
- теперь вы видите, что ваши apk .
надеюсь, что это поможет некоторым телом.
таким образом, apk в Android studio генерируется внутри на app модуль.
правильный путь к apk будет \app\build\outputs\apk . Я использую Android Studio версии 1.4.1. Так что apk можно найти в app/build/apk/ или \app\build\outputs\apk база на версии Android studio, которую вы используете. Обратитесь к приведенному ниже изображению
также найти более подробную ссылку на эти ссылки.
Я использую Android Studio и gradle. Он создал build / apk/ файл только при запуске проекта. Для запуска проекта нажмите кнопку Alt+u, u
Android Studio: 0.5.3 Gradle в: 0.9.+
вы можете найти APK в:
в новой Android Studio подписанный apk помещается непосредственно в папку модуля, для которого построен apk.
например: для проекта ProjectA, содержащего 2 модуля Mod1 и Mod2, файлы apk будут найдены в
/путь-к-Projectа/в mod1/файле mod1.apk
/путь-к-Projectа/в mod2/в mod2.apk
создайте свой проект и получить apk с your_project\app\build\apk
на .apk файл находится по адресу [your project]\out\production\[your project name]
расположение apk в Android Studio:
по состоянию на версия 0.8.6 Android Studio создание файла APK (подписанного и, я считаю, неподписанного тоже) будет помещено внутрь имя проекта / устройство / сборка / выходы / apk
например, я делаю что-то для Google Glass, и мой подписанный APK попадает в / пользователи / MyName / AndroidStudioProjects/HelloGlass/стекло/сборка/выходы / apk
Я получил .APK файлы в parent_folder/out/production/имяпроекта / имяпроекта.apk
вы можете найти свой файл apk следующим образом:
система сборки Android-это инструментарий, который вы используете для сборки, тестирования, запуска и пакет приложений. Система сборки может работать как интегрированный инструмент из меню Android Studio и независимо от командной строки. Вы можете использовать функции системы сборки для:
- настройка, Настройка и расширение процесса сборки.
- создать несколько APKs для вашего приложения с различными с помощью тот же проект и модули.
процесс сборки включает в себя множество инструментов и процессов, которые генерируют промежуточные файлы на пути к созданию .apk . Если вы разрабатываете в Android Studio, полный процесс сборки выполняется каждый раз, когда вы запускаете задачу сборки Gradle для своего проекта или модулей.
процесс сборки очень гибкий, поэтому полезно, однако, понять, что происходит под капотом, так как большая часть процесс сборки настраивается и расширяется. На следующей диаграмме показаны различные инструменты и процессы, участвующие в сборке:
строить версии
теперь вы можете использовать параметры меню сборки для создания версии вашего приложения для распространения.
сборка генерирует APK для каждого варианта сборки: app/build/apk/ (или app/build/outputs/apk ) каталог содержит пакеты с именем app--.АПК; например, приложение-полный релиз.apk и app-demo-debug.АПК.
вывод
сборка генерирует APK для каждого варианта сборки в app/build folder : the app/build/outputs/apk/ directory содержит пакеты с именем app--.АПК; например, app-полный выпуск.apk и app-demo-debug.apk.
вежливость идет к Обзор Системы Сборки
Если вы импортировали в проект из Eclipse и новом Android Studio и Каталог
существует (возможно, здесь есть старые двоичные файлы) С последним обновлением Android Studio фактическое текущий apk хранящийся в
добавьте это в файл модуля gradle. Его нет в проекте по умолчанию. Тогда u обязательно найдет APK в / build / outputs / apk/
Я использую Android Studio 3.0 canary 6.
клик Build->Build APK(s) .
после сборки apk перейдите по ссылке:
для Gradle смотрите здесь:https://docs.gradle.org/current/dsl/org.gradle.api.tasks.SourceSetOutput.html. "например: плагин Java будет использовать эти dirs при вычислении путей к классам и для jarring контента; идея и Eclipse Плагины поместят эти папки на соответствующий путь к классам."
поэтому его зависит от сборки плагина в конфигурациях, если вы не определяете их явно в файле конфигурации.
нажмите маленький значок шестеренки в представлении проекта и убедитесь, что установлен флажок "Показать исключенные файлы". В противном случае IDE скроет output и несколько других важных каталогов в разделе $project/$module/build/ .
app--> app.iml файл и найдите в нем строку ниже: -
--> после удаление в этой строке вы можете увидеть выходную папку его просто добавление дополнительной информации к вышеуказанным ответам в соответствии с моим опытом :)
Для Android Studio 2.0
здесь UserName-имя пользователя вашего компьютера и MyAppName-это ваше имя приложения для android
начиная с Android Studio 3.0 / Gradle Build Tools 3.0.0, артефакты APK теперь можно найти в foo/bar/build/outputs/apk/flavorName/buildType Что касается названия вашего проекта, foo , и имя вашего модуля, bar . Теперь для каждого apk файл сортируется, организованный сначала по вкусу (относительно размеров вкуса), а затем по типу сборки.
- открыть журнал событий
- найти строку: модуль "приложение":найти или проанализировать APK.
- нажмите на ссылку найти, чтобы открыть папку с файлом apk!
В конце концов: "все встроенные APKs сохраняются в project-name / module-name / build / outputs / apk/ создайте свой проект LINK
Как и для многих разработчиков, папка .idea в Android Studio для меня всегда была, как черный ящик: я знал, что она существует, я знал, что её всегда добавляют в .gitignore, но я решил узнать, для чего же там нужны те или иные файлы и папки, чтобы у меня была возможность обрабатывать иногда возникающие git-конфликты, и для того, чтобы точно знать, какой файл можно безопасно добавить в .gitignore, а какой нет.
Разобрал я это на примере проекта, над которым работаю. И решил поделиться результатом того, что выяснил, т.к. не нашел никакой документации по этому вопросу.
указывает путь, который следует добавить в .gitignore
указывает путь, который Android Studio уже добавила в .gitignore , и вам не следует его версионировать.
указывает путь, который вы должны хранить в git.
assetWizardSettings.xml
Этот файл хранит последнюю иконку, добавленную с помощью интерфейса Android Studio. Его можно безопасно удалить из VCS.
caches
Кэши, как следует из названия, могут быть безопасно добавлены в .gitignore .
Не вижу никаких оснований держать его в VCS, но по умолчанию эта папка в .gitignore не добавлена.
caches/build_file_checksums.ser
По факту, этот файл представляет собой сериализированный экземпляр ProjectBuildFilesChecksums.
Файл необходим, чтобы проверить, изменились ли build.gradle , settings.gradle , local.properties ,
/.gradle/gradle.properties , gradle.properties или файлы build.gradle ваших модулей.
Android Studio использует этот файл для того, чтобы сообщить вам о том, что нужно синхронизировать gradle-файлы.
codeStyles
В этой папке содержатся настройки стилей кода проекта. Его полезно версионировать, если вы меняли стили кода по умолчанию.
dictionaries
Папка содержит запись, которую вы добавили в словарь для проверки кода. Этот словарь важен, если у вас есть строгие правила в вашей CI-системе.
gradle.xml
Рекомендую удалить этот файл из git. Он может содержать локальный путь к вашей версии gradle, а также путь к вашему модулю. Например, вы можете разработать модуль в отдельном репозитории, поэтому путь к модулю может быть специфичным для каждого пользователя.
По всем этим причинам я окончательно удаляю файл gradle.xml из VCS.
inspectionProfiles
Эта папка содержит конкретные Lint-правила для вашего проекта. Поэтому так же, как и папка dictionaries , она должна храниться в git.
libraries
Здесь содержится файл, который указывает, где хранятся jar-файлы ваших библиотек. Поскольку путь загрузки может быть специфичным для каждого пользователя, вы не должны хранить эту папку в VCS.
misc.xml
Файл содержит информацию о проекте: версия Java, тип проекта и др.
Эти сведения касаются проекта и не зависят от пользователя. Поэтому его следует хранить в git.
modules.xml
Этот файл содержит пути к .iml -файлам ваших модулей. Поэтому по аналогии с gradle.xml его нельзя хранить в git.
navEditor.xml
Здесь хранится расположение ваших элементов в редакторе навигации. Если эта информация имеет отношение к вашему проекту, то стоит сохранить этот файл в git. В противном случае смело добавляйте его в .gitignore , чтобы избежать конфликтов в будущем.
runConfigurations.xml
Имя файла может вам намекнуть, что в нём хранятся конфигурации, которые вы можете добавить, нажав «Изменить конфигурации». Этот файл обязательно нужно хранить в VCS.
vcs.xml
Этот файл содержит информацию о VCS, которую вы используете в своём проекте. Он используется для того, чтобы вы могли использовать графический интерфейс для выполнения операций, связанных с управлением версиями. Его тоже стоит добавить в git.
workspace.xml
Здесь содержится информация о вашем рабочем пространстве в Android Studio. Например, последняя позиция курсора на открытом вами файле. Так что это определенно пользовательская информация, которую нет необходимости хранить в git.
Итоги
Я бы предложил вам добавить всего три строки к файлу .gitignore по умолчанию:
Как я уже сказал в начале этой статьи, я не нашёл никакой документации о содержимом папки .idea , поэтому статья может быть неполной и/или не точна на 100%. Если вы знаете ещё что-то, чего нет в этой статье, то пишите об этом в комменнтарии.
Читайте также: