- Средства разработки для Android
- DDMS (Dalvik Debug Monitoring Service)
- AAPT (Android Asset Packaging Tool)
- ADB (Android Debug Bridge)
- Draw 9-patch
- Hierarchy Viewer
- Отключить сообщения об ошибках
- SQLite3
- TraceView
- MkSDCard
- Синтаксис
- Параметры
- Пример
- uiautomatorviewer
- Русские Блоги
- Файл ресурсов упаковки AAPT процесса упаковки Android
- Краткое описание процесса упаковки Android
- Подробная команда AAPT
- Анализ исходного кода AAPT
Средства разработки для Android
DDMS (Dalvik Debug Monitoring Service)
В Android Studio 2.3 утилита была удалена. Осталась заглушка ddms.bat, которая выводит сообщение об устаревшей программе.
AAPT (Android Asset Packaging Tool)
AAPT (Инструмент для создания пакетов) создает файлы пакетов для Android (.apk), готовые к распространению.
ADB (Android Debug Bridge)
Клиент-серверное приложение, которое предоставляет доступ к работающему эмулятору или устройству. С его помощью можно копировать файлы, устанавливать скомпилированные программные пакеты и запускать консольные команды. Используя консоль, вы можете изменять настройки журнала и взаимодействовать с базами данных SQLite, которые хранятся на устройстве. В старых версиях SDK программа находилась в папке /tools. Теперь находится в папке /platform-tools. Подробнее о ADB.
Draw 9-patch
Утилита Draw 9-patch находится в папке /tools (файл draw9patch.bat).
Утилита работает с png-файлами и сохраняет в формате .9.png
Hierarchy Viewer
В Android Studio 2.3 утилита была удалена. Осталась заглушка hierarchyviewer.bat, которая выводит сообщение об устаревшей программе.
Наверняка, в процессе разработки вы уже видели подсказки от утилиты Lint, которая встроена в Eclipse (ищите значок с галочкой на панели инструментов). Также её можно запустить отдельно через командную строку при помощи файла lint.bat. Утилита позволяет генерировать HTML-отчёт.
Некоторые возможности Lint:
- Анализ быстродействия Layouts (предотвращение множественных наложений)
- Проблемы с значками (отсутствие значков, дублированные значков и т.д.)
- Поиск различных дубликатов
- Автоматическое исправление большинства ошибок и предупреждений
- Проблемы пользовательского интерфейса
- Ошибки в манифесте
Отключить сообщения об ошибках
Иногда, сообщения об ошибках от Lint, мешают создать файл apk. Чтобы отключить Lint, откройте Window | Preferences. Выберите Android | Lint Error Checking и уберите флажок у элемента Run full error check when exporting app and abort if errors are found.
SQLite3
Утилита позволяет получить доступ к файлам базы данных SQLite, которые используются в Android.
TraceView
В Android Studio 2.3 утилита была удалена. Осталась заглушка traceview.bat, которая выводит сообщение об устаревшей программе. Следует использовать Android Device Monitor (tools/monitor).
MkSDCard
Утилита командной строки создает образ диска для SD-карты (FAT32). Может использоваться эмулятором для имитации флеш-накопителя.
После создания образа карточки ее нужно указать в настройках эмулятора, чтобы у вас была возможность работать с ней.
Синтаксис
Параметры
Пример
В настройках эмулятора подключение к карточке происходит следующим образом
Преобразует байт-код из формата Java (.class) в формат Android (.dex).
uiautomatorviewer
Новая утилита, которая появилась совсем недавно (Android 4.2 SDK). Находится в папке /tools. Утилита сканирует и анализирует GUI-компоненты вашего приложения.
Источник
Русские Блоги
Файл ресурсов упаковки AAPT процесса упаковки Android
Предыдущая:Управление ресурсами процесса упаковки Android
Наконец-то приложения Android установлены и запускаются на мобильных телефонах в форме apk, а инструмент, отвечающий за упаковку файлов ресурсов и кодов, называется appt, полное название — Android Asset Packaging Tool, переведено Это инструмент упаковки ресурсов Android, который является неотъемлемой частью процесса упаковки Android. Хотя в средствах сборки, отвечающих за упаковку apk, будет aapt.exe, нижний уровень по-прежнему управляется путем выполнения команды aapt, поэтому здесь вам необходимо понять соответствующие команды aapt, чтобы лучше понять процесс упаковки.
Краткое описание процесса упаковки Android
Сначала взгляните на официальную схему упаковки Чжана:
- Сначала файл ресурсов (в каталоге res) упаковывается в класс R.java (индекс ресурса) и файл ресурсов .arsc с помощью инструмента aapt.
- Если в проекте есть помощник, упакуйте помощник в класс интерфейса java с помощью вспомогательного инструмента.
- Файлы java, созданные R.java, aidl и исходный код в проекте, смешиваются и компилируются в файлы .class.
- Файл класса и сторонний jar или библиотека упаковываются в файлы dex с помощью инструмента dx. Основная функция инструмента dx — преобразовать байт-код Java в байт-код Dalvik. В этом процессе будет сжиматься пул констант, а некоторая избыточная информация удаляется.
- Упакуйте все некомпилированные ресурсы, ресурсы .arsc и файлы .dex в завершенный файл apk с помощью инструмента apkbuilder.
- Сгенерированный apk подписывается инструментом Jarsinger с использованием файла хранилища ключей, настроенного в разделе Relax или debug, чтобы получить подписанный файл apk.
- Выровняйте подписанный apk с помощью инструмента zipAlign. То есть смещение всех файлов ресурсов в пакете APK от начала файла является целым числом, кратным 4 байтам, поэтому скорость доступа к файлу apk через отображение памяти будет быстрее. Уменьшите использование оперативной памяти.
Это процесс упаковки Android в apk, а упаковка ресурсов включает в себя множество команд aapt.
Подробная команда AAPT
1、aapt l[ist] [-v] [-a] file.
Список всех файлов в сжатых пакетах (zip, jar, apk) и других типах, примеры:
Перечислите все файлы в app-debug.apk:
Печатный контент очень длинный, и его неудобно наблюдать в командной строке. Мы можем сохранить выходной контент в файле .txt для удобства просмотра. Пример:
Сохраните выходной контент в файле .txt.
Вы также можете добавить -v и -a после списка aapt. Например, добавьте параметр -v:
Он также перечислит все файлы в apk, но более подробно:
Значение каждого поля следующее:
Длина: длина файла.
Метод: алгоритм сжатия данных, есть Deflate и Stored. Просто знайте, что он используется для сжатия файлов.
Соотношение: степень сжатия.
Размер: размер, сохраняемый после сжатия файла. Это связано со степенью сжатия. Размер = (степень сжатия 1) * Длина.
Дата: дата.
Время: время.
CRC-32: Cyclic Redundancy Check, алгоритм шифрования.
Имя: имя файла.
Добавить параметр -a после списка aapt:
Перечислите весь список файлов, идентификатор ресурса, каждыйспецификаторИдентификатор и содержимое файла AndroidManifest, соответствующего файлу ресурсов.
Посмотрите на полосу прокрутки справа и убедитесь, что выводимый контент не должен быть слишком большим или слишком подробным. Содержимое файла манифеста Android указано внизу.
2、aapt d[ump] [–values] [–include-meta-data] WHAT file.
Список различной подробной информации в apk с помощью конфигурации параметров, такой как разрешения apk, символы, ресурсы и т. д.
в основном имеет следующие параметры:
- strings
Список всех символьных ресурсов в apk (включая различные языковые квалификаторы): Пример:
На других языках есть искаженные символы и символы. Вы можете попробовать сами.
badging
Распечатайте этикетку и значок приложения, объявленного в APK. Фактический контент — это больше, чем просто ярлыки и значки. Также есть имя пакета, versionCode, versionName, compileSdkVersion, targetSdkVersion и другая информация, вот небольшая часть:
permissions
Список всех разрешений, используемых apk. Пример:
В результате будут перечислены все разрешения, необходимые для apk, и здесь нет карты.
- resources。
Выводит всю информацию о ресурсах в apk, включая ресурсы, добавленные пользователем, системные ресурсы с разными квалификаторами и т. д., например:
- configurations
перечисляет все каталоги ресурсов в apk. Обратите внимание, что это только каталоги и не содержат никакого содержимого файла. Каталоги ресурсов соответствуют разным квалификаторам.
В этой статье о квалификаторах написано:спецификатор, Результаты приведены ниже:
5.xmltree
Распечатайте древовидную структуру документа указанного XML-файла. Например, чтобы распечатать древовидную структуру файла res / layout / activity_main.xml в проекте, вы можете написать:
Результат печати следующий:
Древовидная структура документа activity_main.xml указана сверху вниз.
6.xmlstrings
перечисляет имена элементов управления, имена атрибутов, значения элементов управления и т. д., содержащиеся в данном XML-файле. Пример:
3、aapt p[ackage]
— это команда, отвечающая за упаковку файлов ресурсов. Это основная и самая сложная команда в aapt:
Что ж, посмотрим, что означает каждый параметр:
Сложные протоколы этого приказа сводят людей с ума. —
Но на самом деле, если вы знаете, что делает эта команда, она используется для упаковки всех файлов ресурсов в проекте. В моей практике минимальная исполнительная единица выглядит следующим образом:
Это означает, что перед выполнением команды пакета aapt необходимо указать по крайней мере эти четыре значения. Итак, я выполнил здесь команду.
Затем я сообщил об этой ошибке, сказав, что ресурс не может быть найден. Вы можете открыть проект с помощью as, и эти ресурсы, очевидно, можно найти. На какое-то время я впал в отчаяние, а потом действительно не было возможности удалить эти ресурсы. Удалите эту строку кода в файле AndroidManifest.xml: android: theme = «@ style / TheTheme», чтобы выполнение могло быть успешным. Что касается того, почему было сообщено об ошибке при добавлении этих трех ресурсов и указанной темы, я искал много информации в Интернете, но не смог найти суть этой проблемы. Если бог знает решение этой проблемы, оставьте сообщение ниже, чтобы сообщить мне, Очень признателен
Я действительно хочу знать, почему он мяукает-. —
Что касается упакованного файла, то это сжатый файл out.apk.После того, как мы его распакуем, каталог будет следующим:
Внутри папки res находится наш каталог ресурсов:
Что касается resources.arsc, это пакет ресурсов.Пакетирование файлов ресурсов в файлы .arsc — это первый шаг нашей блок-схемы выше. Этот файл также будет упакован при упаковке apk в будущем. Также есть AndroidManifest.xml, куча нечитаемых после открытия:
Содержимое файла здесь обрабатывается, чтобы другие не могли отслеживать код. Что касается других параметров, к которым можно получить доступ, здесь показан только один:
Хорошо, тогда мы вставляем этот параметр в исходную команду:
Добавьте –rename-manifest-package com.aapt.demo в конец команды прямо сейчас, измените имя пакета в AndroidManifest.xml на com.aapt.demo, распакуйте и просмотрите файл AndroidManifest после завершения упаковки:
Хотя большинство из них искажены, мы все же можем видеть, что имя пакета было изменено на com.aapt.demo. Что касается остальных параметров, то здесь я не пробовал их по отдельности, на самом деле, только часто используемые параметры являются вспомогательными.
4、aapt r[emove] [-v] file.
используется для удаления файлов в упакованном apk. Например, удалите файл AndroidManifest.xml из упакованного apk:
Здесь удалите файл AndroidManifest.xml в out.apk, а затем выполните следующую команду:
Тогда появится следующая ошибка:
Подскажите, что файл найти не удалось, видно, что файл удалили.Но странно то, что после разархивирования apk я обнаружил, что файл AndroidManifest.xml все еще существует, но при выполнении команды он сообщает, что его нельзя найти. В чем причина? Пока не знаю. Если знаете, скажите, пожалуйста.
5、 aapt a[dd] [-v] file.
Добавьте файлы в упакованный apk. Пример: добавьте a.txt и b.txt в упакованный apk:
Просто разделите несколько файлов пробелами, а затем посмотрите на распакованный apk и посмотрите каталоги:
Успешно добавлены a.txt и b.txt в apk.
6、 aapt c[runch] [-v] -S resource-sources … -C output-folder …
выполняет предварительную обработку файла PNG и сохраняет результат в папке. Например, предварительно обработайте изображения в каталоге res и сохраните их в изображениях по любому пути:
Результаты после выполнения следующие:
Указывает на успешное выполнение, а затем мы смотрим на файлы в пути к картинкам:
Ну нечего сказать.
7、aapt s[ingleCrunch] [-v] -i input-file -o outputfile
Предварительно обработайте один файл PNG и выведите его в указанный файл:
Здесь заранее создайте новый файл a.txt в папке изображений, а затем измените суффикс на .png. В настоящее время невозможно открыть a.png. После выполнения этой команды можно ли открыть a.png? Отображаемое изображение ic_launcher.png в каталоге hdpi в res.
8、 aapt v[ersion]
Тут сказать нечего, покажи версию aapt
Команд для aapt. Выполните команду aapt в командной строке, вы можете просмотреть подробные сведения об использовании aapt. Заинтересованные друзья могут попробовать сами
Анализ исходного кода AAPT
Что касается исходного кода, то здесь просто контекст. Необходимо скачать исходный код системы Android и разархивировать его, адрес загрузки:Загрузка исходного кода системы для каждой версии, Я скачал здесь исходный код 6.0. Исходный код части aapt находится в папке frameworks \ base \ tools \ aapt. Его вход находится в основном методе в Main.cpp. В основном методе содержится около 500 строк, и только часть размещена здесь для анализа:
Исходный код более подробно, вот пример. Вся строка команды aapt будет разбита на массив строк. Затем перейдите к первому символу второго массива строк, например aapt package . и получите p, что означает, что это команда пакета aapt. Объект Bundle используется для хранения типа операции ввода и связанных параметров для последующего использования при выполнении подробных операций команды. Конечно, когда команда анализируется неправильно, она переходит к блоку кода залога через goto, например:
Блок кода залога:
Итак, будет вызвана функция usage (), которая распечатает документацию по использованию aapt.
Это код, посмотрите на вывод, когда мы выполним aapt:
Это что? Что ж, когда команда успешно проверена, будет выполнен метод handleCommand и будет передан объект Bundle. Посмотрите код метода handleCommand:
Неважно, просто определите, что за команда, например, package, dump, add, remove, а затем выполните определенные операции, такие как doPackage, doDump, doRemove и т. Д. Однако на эти методы ссылаются извне, и реальный код находится в файле Command.cpp в том же каталоге. Этот файл c реализует все конкретные коды команды aapt. Вот немного более простой пример doRemove, чтобы увидеть:
Во-первых, он определит, указан ли в команде сжатый пакет. Если нет, будет сообщено об ошибке. Имя сжатого пакета в команде будет получено, только если указан сжатый пакет. Если вы не укажете удаляемый файл, вам будет предложено указать, что удаляемый файл не указан. В противном случае откройте файл.Если файл открывается успешно, переберите файлы, которые нужно удалить, по очереди удалите файлы из сжатого пакета и обновите содержимое сжатого пакета после завершения всех операций.
Выше приведен подробный код, выполняемый внизу команды aapt remove.В конце концов, все команды внизу aapt являются рабочими файлами. Просто Google инкапсулирует эти сложные файловые операции в командные инструменты, которые мы можем использовать. Анализ исходного кода здесь рассматривает только общую структуру и более конкретную реализацию. Если вам интересно, вы можете просмотреть исходный код. Вам не обязательно владеть C ++. Вы можете понять его, имея небольшой фундамент или другие языковые основы. Другой вопрос, если только он не включает модификацию и перекомпиляцию в индивидуальную команду aapt.
Хорошо, это все о команде aapt. Если вы знаете, как ее использовать, вы, вероятно, сможете реализовать ее на нижнем уровне. Учащиеся с глубокими навыками C ++ могут попробовать изменить ее самостоятельно. Если в статье есть какие-либо недостатки или ошибки, друзья, которые ее видят, могут оставить сообщение ниже, чтобы сообщить мне, я очень благодарен за это
Источник