- Правильная работа с файлами в Android
- Сборка приложений под Android с использованием AIR SDK 3.6 в Linux
- Введение
- FlexSDK и AIR SDK
- ADL, AAPT и ADB
- Android SDK Platform Tools
- Запуск ADL
- Создание ссылок на AAPT и ADB
- Резюме
- What Is an AIR File?
- How to open, edit, and convert AIR files
- How to Open an AIR File
- How to Convert an AIR File
- Still Can’t Open the File?
Правильная работа с файлами в Android
Сегодня я бы хотел рассказать вам о правильной работе с файлами в ОС Android. Итак, чаще всего у новичков возникают ситуации, когда обычные Java функции не могут корректно создать тот или иной файл в системе Android.
Во-первых, вам нужно обратить внимание на интересную особенность ОС:
когда вы устанавливаете apk приложение в эмулятор или телефон, система Linux (на которой базируется ядро Android) выделяет ему специальный User-ID, который является неким ключом доступа к (sandbox). То есть другие приложения в телефоне не смогут получить доступ к чтению файлов вашего приложения просто так. Кончено, всё это сделано в целях безопасности.
В общем, если вы запустите следующий код:
FileWriter f = new FileWriter(«impossible.txt»);
То этот код вызовет исключение: ‘java.io.FileNotFoundException: /impossible.txt ‘
Тогда как должен в случае отсутствия файла создать его.
Далее стоит отметить, что данное ограничение не распространяется на файлы, записываемые на SDCard. Туда можно писать любые файлы без всяких проблем, правда предварительно нужно добавить в AndroidManifest разрешение на запись:
Код файла на карту:
File fileName = null;
String sdState = android.os.Environment.getExternalStorageState();
if (sdState.equals(android.os.Environment.MEDIA_MOUNTED)) <
File sdDir = android.os.Environment.getExternalStorageDirectory();
fileName = new File(sdDir, «cache/primer.txt»);
> else <
fileName = context.getCacheDir();
>
if (!fileName.exists())
fileName.mkdirs();
try <
FileWriter f = new FileWriter(fileName);
f.write(«hello world»);
f.flush();
f.close();
> catch (Exception e) <
>
Как уже ранее было сказано мною, android приложение находится в некой песочнице, изолированной от воздействия со стороны других приложений по умолчанию. Для того, чтобы создать файл внутри этой песочницы, следует использовать функцию openFileOutput(). Хочу отметить 2 аргумента:
1. имя файла
2. режим доступа к нему со стороны чужих приложений
С первым аргументом все ясно, что касается второго, то режимов существует два: MODE_WORLD_READABLE и/или MODE_WORLD_WRITEABLE.
И ещё, чтобы записать файл можно использовать следующий код:
final String TESTSTRING = new String(«Hello Android»);
FileOutputStream fOut = openFileOutput(«samplefile.txt», MODE_WORLD_READABLE);
OutputStreamWriter osw = new OutputStreamWriter(fOut);
// записываем строку в файл
osw.write(TESTSTRING);
/* проверяем, что все действительно записалось и закрываем файл */
osw.flush();
osw.close();
Для чтения файлов используется метод openFileInput():
FileInputStream fIn = openFileInput(«samplefile.txt»);
InputStreamReader isr = new InputStreamReader(fIn);
char[] inputBuffer = new char[TESTSTRING.length()];
isr.read(inputBuffer);
String readString = new String(inputBuffer);
Для удаления используется метод deleteFile() в контексте приложения/активити. На этом я бы хотел закончить полезный пост, спасибо за внимание!
Источник
Сборка приложений под Android с использованием AIR SDK 3.6 в Linux
Введение
Linux как систему для работы я использую недавно. Раньше работал в Windows. Причина перехода очень проста и банальна — надоели глюки и лаги Windows. Я разрабатываю приложения с использованием технологий Adobe Flash и Adobe AIR как для веб, так и под Android. Поэтому при переходе очень важно было решить вопрос, смогу ли я работать в Linux также продуктивно, как в Windows. Порывшись на форумах и на официальном сайте, узнал, что FlexSDK поддерживается, а вот поддержка AIR окончена еще с версии 2.6. Печально однако. Но у нас же есть возможность запускать windows-приложения в среде Linux, почему бы не воспользоваться этим. Эта статья как раз о том, как настроить работу в Linux с AIR SDK 3.6 — последней версией на момент публикации.
У меня на компьютере установлен ArchLinux, поэтому все описанные в статье действия будут рассмотрены именно для этого дистрибутива. В других дистрибутивах для выполнения этих операций может потребоваться вводить немного другие команды, но последовательность команд будет точно такая же.
Команды, приведенные в статье, будут начинаться с символа $ либо #. Если команда начинается с $, такие команды нужно запускать от имени обычного пользователя. Если же команда начинается с #, эти команды нужно вводить только от рута. Будьте внимательны!
В Linux не так уж много способов запустить приложение для Windows. Одним из самых распространенных решений является использование wine. Дополнительную информацию по этому программному продукту можно почерпнуть в интернете, например, тут http://www.winehq.org.
Итак, для начала нам нужно установить wine, если он еще не установлен. Обычно пакет так и называется wine, но если у вас в репозитории он отсутствует, его можно скачать с официального сайта в виде исходников и собрать у себя на компьютере. Команда установки пакета в ArchLinux выглядит так:
# pacman -S wine
После ее выполнения из репозитория будет скачан и установлен уже готовый к запуску wine. Нам нужно только немного его настроить. Запускать wine и все, что с ним связано, нужно только под обычным пользователем и ни в коем случае не от рута. Для настройки wine имеется специальная программа, запуск которой выполняется командой:
$ winecfg
После выполнения этой команды появится меню, где можно настроить некоторые параметры wine. Из настроек по умолчанию я поменял только версию операционной системы с Windows XP на Windows 7, все остальное оставил, как есть. Также важно проверить, чтобы во вкладке «Диски» был создан диск Z:, указывающий на корневую директорию. У меня это выглядит так:
Этот диск понадобится при настройке скрипта для запуска отладчика AIR, о котором будет упомянуто позднее. Если все готово, нажимаем ОК и выходим из конфигуратора. Теперь, когда wine настроен, можно приступать к установке FlexSDK и AIR SDK.
FlexSDK и AIR SDK
airdownload.adobe.com/air/win/download/latest/AIRSDK_Compiler.zip
Указанная команда скачает файл в домашнюю папку. Далее нам нужно его распаковать и скопировать в папку с установленным FlexSDK. Переходим в домашнюю папку и распаковываем архив. Распаковать архив можно программой file-roller — архиватором с графическим интерфейсом на базе GTK, либо консольной утилитой unzip. Допустим, вы распаковали его в папку AIRSDK_Compiler, которая была сохранена в домашней директории. После распаковки накатываем содержимое этой папки на папку с FlexSDK:
# cp -R
/AIRSDK_Compiler/* /opt/flex-sdk
Если у вас FlexSDK установлен в папку, отличную от /opt/flex-sdk, то в качестве папки назначения конечно указываем свою. После копирования папку AIRSDK_Compiler можно удалить, она нам больше не понадобится, весь набор файлов уже скопирован во FlexSDK.
ADL, AAPT и ADB
Вeсь AIR SDK, как и FlexSDK, написан на Java, то есть является кроссплатформенным и может функционировать на любой системе, для которой существует JRE, в том числе и на Linux. Однако в AIR SDK отсутствуют linux-версии следующих программ: отладчик (adl), паковщик (aapt) и программа-мост для отладки (adb), а без них ничего запустить и собрать не получится.
ADL (Adobe Debug Launcher) — это отладчик, используемый для отладки приложений и их запуска.
AAPT (Android Asset Packaging Tool) — это упаковщик для сборки приложения, библиотек и ресурсов в единый apk-файл.
ADB (Android Debug Bridge) — программа-мост для отладки и удаленного управления эмулятором Android или реальным устройством на базе этой системы. Поскольку другого вменяемого перевода для этой программы я не нашел, далее в статье я буду называть эту программу просто «мостом».
В SDK все три программы присутствуют только для двух операционных систем: Windows и Mac OS. Поэтому для запуска отладчика мы будем использовать wine, паковщик и мост возьмем из Android SDK Platform Tools, поскольку в этом программном наборе присутствуют обе эти программы под Linux.
Android SDK Platform Tools
Это набор программ, упрощающих разработку приложений под Android. В нем присутствуют две необходимые нам программы: паковщик и мост. Я устанавливал его тоже из AUR. Набор по умолчанию ставится в /opt/android-sdk/platform-tools.
$ yaourt -S android-sdk-platform-tools
При отсутствии такого пакета в репозитории вашего дистрибутива его без проблем можно скачать с официального сайта http://developer.android.com/sdk/index.html.
Запуск ADL
В качестве среды разработки я использую Intellij IDEA. Как настроить ее на использование нашего вновь установленного FlexSDK, в статье не описывается, поскольку читатель наверняка подкован в таких вопросах, если читает это. Будем считать, что вы это уже сделали и в вашем тестовом AIR-проекте используется вновь установленный FlexSDK. Эта среда при компиляции AIR-проекта пытается запустить отладчик по пути ‘папка_с_flex_sdk/bin/adl’. При условии, что FlexSDK установлен в папку /opt/flex-sdk, полный путь будет иметь вид /opt/flex-sdk/bin/adl. Cейчас там присутствует исполняемый файл для Windows adl.exe. Чтобы заставить его выполнять наши задачи, нам нужно сделать следующее:
1. Отладчик под Windows понимает в качестве пути только пути вида «C:\директория\путь_к_файлу», при сборке же проекта под Linux путь к файлу имеет вид “/директория/путь_к_файлу». То есть нам нужно привести второе к первому, чтобы отладчик нас понял и запустил нужный нам файл. Тут то нам и пригодится диск Z:, который в wine указывает на корневую директорию операционной системы.
2. Нужно передать отладчику все параметры, которые были переданы из среды разработки.
Для решения этой задачи мы создадим скрипт, который будет делать две вещи: 1. Конвертировать путь к файлу из windows-версии в linux-версию, причём так, чтобы путь указывал на реальный файл в системе; 2. Запускать отладчик под wine с теми же параметрами, с которыми этот отладчик пытается запустить нама среда разработки. Я уже написал черновой вариант такого скрипта на bash и выкладываю его тут. Он достаточно простой:
Сейчас он рассчитан на то, что все ваши проекты находятся в домашней директории, что не всегда так. Скрипт явно нуждается в доработке, но у меня пока физически не хватает времени, чтобы довести его до ума. Буду очень благодарен всем, кто поможет его унифицировать.
Чтобы сохранить скрипт, переходим в /opt/flex-sdk/bin. Тут уже присутствует Mac OS версия adl-файла. Можно этот файл просто удалить:
# rm /opt/flex-sdk/bin/adl
Вместо него создаем новый пустой файл:
# touch /opt/flex-sdk/bin/adl
Открываем его в любом текстовом редакторе (я использую nano):
# nano /opt/flex-sdk/bin/adl
и вставляем туда приведенные выше строки скрипта. Сохраняем и выходим из редактора. Осталось сделать файл исполняемым. Для этого назначаем ему права маской 755:
# chmod 755 /opt/flex-sdk/bin/adl
После этого файл готов к использованию.
Создание ссылок на AAPT и ADB
Паковщик запускается по пути /opt/flex-sdk/lib/android/bin/aapt. Переходим в папку /opt/flex-sdk/lib/android/bin и видим, что тут тоже присутствует aapt-файл и он тоже скомпилирован для Mac OS. Удаляем его:
# rm /opt/flex-sdk/lib/android/bin/aapt
На его месте должен присутствовать файл из Android SDK Platform Tools, поэтому мы просто создадим символическую ссылку на исполняемый файл паковщика /opt/android-sdk/platform-tools/aapt. Сделать это можно следующей командой:
# ln -s /opt/android-sdk/platform-tools/aapt /opt/flex-sdk/lib/android/bin/aapt
Аналогичные команды нужно выполнить и для моста:
# rm /opt/flex-sdk/lib/android/bin/adb
# ln -s /opt/android-sdk/platform-tools/adb /opt/flex-sdk/lib/android/bin/adb
Вот пожалуй и все. Поздравляю, теперь вы можете разрабатывать AIR-приложения под Android в Linux с использованием последней версии AIR SDK!
Резюме
Мне удалось заставить работать отладчик под wine, отладка работает полностью: работают точки останова, отображается содержимое переменных и т. д. Но некоторые вещи я еще пока проверить не успел. Например, как будут работать в таком отладчике приложения, использующие Stage3D, не пытался отлаживать приложение на реальном устройстве и, может быть что-то еще. Как только я это сделаю, обязательно дополню статью, если будет такая возможность. Также буду благодарен всем, кто сможет разобраться со сборкой AIR-приложений под iOS, поскольку этим я тоже пока не занимался.
Источник
What Is an AIR File?
How to open, edit, and convert AIR files
A file with the .AIR file extension is most likely an AIR (Adobe Integrated Runtime) Installer Package file that stores web-based applications programmed using ActionScript or Apache Flex. They’re usually ZIP-compressed and can be used across all desktop and mobile operating systems that support the Adobe AIR runtime, like Windows, macOS, Android, iOS, and BlackBerry Tablet OS.
The M.U.G.E.N. video game engine uses the AIR file extension as a plain text file that stores animation settings. It may explain how a character should move or how a background scene should simulate movement. They also explain how M.U.G.E.N. Sprite files (.SFF) are animated.
AIR is also an acronym for Automated Image Registration.
How to Open an AIR File
Since some Adobe AIR files are ZIP-based files, you should be able to pull them apart using PeaZip, 7-Zip, or any other free zip/unzip programs. However, to have full access to the original application files, a decompiler may be necessary.
Take great care when opening executable file formats like .AIR files that you’ve received via email or downloaded from websites you’re not familiar with. See our List of Executable File Extensions for a listing of file extensions to avoid and why.
To actually use .AIR files on your computer, you need to install an environment for them to run in, which is done through the free Adobe AIR. This is a prerequisite before you can use the AIR application. After it’s installed, the application will run like any other software program or video game.
AIR applications can be built using Adobe Animate (previously called Adobe Flash Professional).
Depending on whether the application is meant for mobile or desktop use, Adobe AIR applications can be built using Adobe Flex, HTML, JavaScript, or Ajax. Building Adobe AIR Applications is a PDF file from Adobe that explains all of this in detail.
For more information on using AIR applications on a desktop, Android, BlackBerry Tablet OS, and iOS devices, see Adobe’s Packaging Adobe AIR Applications.
M.U.G.E.N. Animation files are used with Elecbyte’s M.U.G.E.N. You can edit one or view the text settings inside with a text editor like the Notepad program built-in to Windows. However, if you want something more advanced, or a program that can open AIR text files on a Mac, see our Best Free Text Editors list for our favorites.
If you have an AIR file that’s associated with Automated Image Registration files, you should be able to open it with the program suite by the same name.
How to Convert an AIR File
See Adobe’s article on packing a desktop native installer to learn how you can make an EXE, DMG, DEB, or RPM installer file from an AIR application using AIR Developer Tool (ADT). Converting the AIR file to one of these formats means the application can be opened even if the Adobe AIR runtime isn’t installed.
To create client-side PDF files from an AIR application using AlivePDF, see this tutorial from Murray Hopkins.
I don’t see any reason why you’d want to convert M.U.G.E.N. Animation files to any other format because doing so would make them stop working with M.U.G.E.N. However, since they’re just text files, they technically can be converted to other text-based formats like HTML and TXT, with most text editors.
If any program can convert an Automated Image Registration AIR file, it’s going to be the program mentioned above.
Still Can’t Open the File?
Some file formats use a file extension that closely resembles a suffix used for other file formats. For example, even though an ARI file looks an awful lot like an AIR file, the two aren’t at all related.
ARI files are ARRIRAW Image files captured by ARRI digital cameras, and are opened with an image viewer/editor like Adobe Photoshop. Other ARI files are archives compressed with algorithms like PPM or LZP. Neither of these file formats work in the same way that AIR files do.
This same mistake could be made with any file format that uses a file extension that’s spelled like .AIR. If you’re not dealing with an AIR file, be sure to research the true file extension so that you can find out which programs are able to open your specific file.
No. In 2020, Adobe officially handed over development and support for AIR to HARMAN, which is a subsidiary of Samsung Electronics. If you want support for AIR, you should go to HARMAN’s Adobe AIR support page.
You can get Adobe AIR from HARMAN. Accept the terms of use to download it for your system, then run the installer file.
Источник