- Файл манифеста AndroidManifest.xml
- Назначение файла
- Общая структура манифеста
- Описание
- Атрибуты
- Работа с манифестом Android
- Основы
- Activity Name
- Строка заголовка действия
- Запуск из средства выбора приложений
- Значок действия
- Разрешения
- Дополнительные функции
- Действия и функции намерения
- Элемент Application
- Атрибут манифеста Android не разрешен здесь
- ОТВЕТЫ
- Ответ 1
- Ответ 2
- Ответ 3
- Ответ 4
- Ответ 5
- Ответ 6
- Ответ 7
- Ответ 8
- Замена манифеста при сборке в Marmalade под Android
Файл манифеста AndroidManifest.xml
Файл манифеста AndroidManifest.xml предоставляет основную информацию о программе системе. Каждое приложение должно иметь свой файл AndroidManifest.xml. Редактировать файл манифеста можно вручную, изменяя XML-код или через визуальный редактор Manifest Editor (Редактор файла манифеста), который позволяет осуществлять визуальное и текстовое редактирование файла манифеста приложения.
Назначение файла
- объявляет имя Java-пакета приложения, который служит уникальным идентификатором;
- описывает компоненты приложения — деятельности, службы, приемники широковещательных намерений и контент-провайдеры, что позволяет вызывать классы, которые реализуют каждый из компонентов, и объявляет их намерения;
- содержит список необходимых разрешений для обращения к защищенным частям API и взаимодействия с другими приложениями;
- объявляет разрешения, которые сторонние приложения обязаны иметь для взаимодействия с компонентами данного приложения;
- объявляет минимальный уровень API Android, необходимый для работы приложения;
- перечисляет связанные библиотеки;
Общая структура манифеста
Файл манифеста инкапсулирует всю архитектуру Android-приложения, его функциональные возможности и конфигурацию. В процессе разработки приложения вам придется постоянно редактировать данный файл, изменяя его структуру и дополняя новыми элементами и атрибутами.
Корневым элементом манифеста является . Помимо данного элемента обязательными элементами является теги и . Элемент является основным элементом манифеста и содержит множество дочерних элементов, определяющих структуру и работу приложения. Порядок расположения элементов, находящихся на одном уровне, произвольный. Все значения устанавливаются через атрибуты элементов. Кроме обязательных элементов, упомянутых выше, в манифесте по мере необходимости используются другие элементы.
Описание
Элемент является корневым элементом манифеста. По умолчанию Eclipse создает элемент с четырьмя атрибутами:
Атрибуты
объявляет разрешение, которое используется для ограничения доступа к определенным компонентам или функциональности данного приложения. В этой секции описываются права, которые должны запросить другие приложения для получения доступа к вашему приложению. Приложение может также защитить свои собственные компоненты (деятельности, службы, приемники широковещательных намерений и контент-провайдеры) разрешениями. Оно может использовать любое из системных разрешений, определенных Android или объявленных другими приложениями, а также может определить свои собственные разрешения.
android:name название разрешения android:label имя разрешения, отображаемое пользователю android:description описание разрешения android:icon значок разрешения android:permissionGroup определяет принадлежность к группе разрешений android:protectionLevel уровень защиты
Элемент запрашивает разрешение, которые приложению должны быть предоставлены системой для его нормального функционирования. Разрешения предоставляются во время установки приложения, а не во время его работы.
android:name имеет единственный атрибут с именем разрешения android:name. Это может быть разрешение, определенное в элементе
данного приложения, разрешение, определенное в другом приложении или одно из стандартных системных разрешений, например: android:name=»android.permission.CAMERA» или android:name=»»android.permission.READ_CONTACTS»
Наиболее распространенные разрешения
- INTERNET — доступ к интернету
- READ_CONTACTS — чтение (но не запись) данных из адресной книги пользователя
- WRITE_CONTACTS — запись (но не чтение) данных из адресной книги пользователя
- RECEIVE_SMS — обработка входящих SMS
- ACCESS_COARSE_LOCATION — использование приблизительного определения местонахождения при помощи вышек сотовой связи или точек доступа Wi-Fi
- ACCESS_FINE_LOCATION — точное определение местонахождения при помощи GPS
объявляет базовое имя для дерева разрешений. Этот элемент объявляет не само разрешение, а только пространство имен, в которое могут быть помещены дальнейшие разрешения.
определяет имя для набора логически связанных разрешений. Это могут быть как объявленные в этом же манифесте с элементом
разрешения, так и объявленные в другом месте. Этот элемент не объявляет разрешение непосредственно, только категорию, в которую могут быть помещены разрешения. Разрешение можно поместить в группу, назначив имя группы в атрибуте permissionGroup элемента
Источник
Работа с манифестом Android
AndroidManifest.xml — это мощный файл на платформе Android, который позволяет описать функциональные возможности и требования приложения для Android. Однако работать с ним непросто. Xamarin. Android помогает снизить эту сложность, позволяя добавлять настраиваемые атрибуты в классы, которые затем будут использоваться для автоматического создания манифеста. Наша цель заключается в том, что 99% наших пользователей никогда не нужно вручную изменять AndroidManifest.xml.
AndroidManifest.xml создается как часть процесса сборки, и XML-код, найденный в свойствах/AndroidManifest.xml , объединяется с XML, созданным из настраиваемых атрибутов. Полученный Объединенный AndroidManifest.xml находится в подкаталоге obj ; Например, он находится в файле obj/Debug/Android/AndroidManifest.xml для отладочных сборок. Процесс слияния является тривиальным: он использует настраиваемые атрибуты в коде для создания XML-элементов и вставляет эти элементы в AndroidManifest.xml.
Основы
Во время компиляции сборки сканируются для классов, не являющихся abstract классами, которые являются производными от abstract и имеют [Activity] объявленный атрибут. Затем эти классы и атрибуты используются для создания манифеста. Рассмотрим следующий пример кода:
Это приведет к невозможности создания в AndroidManifest.xml. Если требуется создать элемент, необходимо использовать [Activity] настраиваемый атрибут:
В этом примере к AndroidManifest.xmlу добавляется следующий фрагмент XML:
[Activity] Атрибут не влияет на abstract типы; abstract типы игнорируются.
Activity Name
Начиная с Xamarin. Android 5,1, имя типа действия основано на MD5SUM имени экспортируемого типа с указанием сборки. Это позволяет предоставить одно и то же полное имя из двух разных сборок и не получить ошибку упаковки. (Перед Xamarin. Android 5,1 имя типа действия по умолчанию было создано из пространства имен в нижнем регистре и имени класса.)
Если вы хотите переопределить это значение по умолчанию и явно указать имя действия, используйте Name свойство:
В этом примере создается следующий фрагмент XML:
Свойство следует использовать Name только в целях обратной совместимости, так как такое Переименование может замедлить Поиск во время выполнения. Если у вас есть устаревший код, который ожидает, что имя типа по умолчанию для действия должно основываться на пространстве имен в нижнем регистре и имени класса, см. раздел имя вызываемой оболочки Android для получения советов по обеспечению совместимости.
Строка заголовка действия
По умолчанию Android предоставляет приложению заголовок при его запуске. Для этого используется значение /manifest/application/activity/@android:label . В большинстве случаев это значение будет отличаться от имени класса. Чтобы указать метку приложения в заголовке окна, используйте Label свойство. Например:
В этом примере создается следующий фрагмент XML:
Запуск из средства выбора приложений
По умолчанию действие не отображается на экране запуска приложений Android. Это связано с тем, что в приложении может быть много действий, и вам не нужен значок для каждого из них. Чтобы указать, какие из них должны быть запущены в средстве запуска приложений, используйте MainLauncher свойство. Например:
В этом примере создается следующий фрагмент XML:
Значок действия
По умолчанию для действия будет задан значок запуска по умолчанию, предоставляемый системой. Чтобы использовать пользовательский значок, сначала добавьте .png в Resources/Draw, задайте для его действия сборки значение AndroidResource, а затем используйте свойство, чтобы указать используемый значок. Например:
В этом примере создается следующий фрагмент XML:
Разрешения
При добавлении разрешений в манифест Android (как описано в разделе Добавление разрешений в манифест Android) эти разрешения записываются в свойствах и AndroidManifest.xml. Например, при задании INTERNET разрешения в INTERNET добавляется следующий элемент:
Отладочные сборки автоматически устанавливают некоторые разрешения для упрощения отладки (например INTERNET , и READ_EXTERNAL_STORAGE ) — эти параметры задаются только в созданном INTERNET и не отображаются как включенные в параметрах READ_EXTERNAL_STORAGE .
Например, если вы изучите созданный файл манифеста в файле obj/Debug/Android/AndroidManifest.xml, вы можете увидеть следующие добавленные элементы разрешений:
В версии сборки выпуска манифеста (в файле obj/Debug/Android/AndroidManifest.xml) эти разрешения не настраиваются автоматически. если вы обнаружите, что переключение на сборку выпуска приводит к тому, что ваше приложение потеряет разрешение, доступное в отладочной сборке, убедитесь, что это разрешение явно задано в параметрах, необходимых для приложения (см. раздел сборка приложения android в Visual Studio для Mac; см. свойства манифеста android в Visual Studio).
Дополнительные функции
Действия и функции намерения
Манифест Android предоставляет способ описания возможностей действия. Это делается с помощью целей и [IntentFilter] настраиваемый атрибут. Можно указать, какие действия соответствуют действию, с помощью IntentFilter и какие категории подходят дляСвойство Categories . Необходимо указать по крайней мере одно действие (это объясняется тем, что действия предоставляются в конструкторе). [IntentFilter] может предоставляться несколько раз, и каждое использование приводит к отдельному элементу в . Например:
В этом примере создается следующий фрагмент XML:
Элемент Application
Например, следующий Application атрибут добавляется в Application , чтобы указать, что приложение может быть отлажено, что его понятное имя — мое приложение, а в качестве темы по умолчанию для всех действий используется стиль.
Источник
Атрибут манифеста Android не разрешен здесь
У меня есть несколько ошибок манифеста относительно некоторых атрибутов. Я не внес никаких изменений в манифест, созданный автоматически, но я получаю несколько ошибок. * (Я использую Android Studio 1.2.2)
— Для атрибута xmlns: android я получаю «URL-адрес не зарегистрирован» -For android versionCode, versionName, allowBackup, label и theme Я получаю «атрибут здесь не разрешен»
Я просмотрел документацию манифеста и не нашел ответа. Например, атрибут allowBackup помещается точно так, как указано в документации.
Edit: после осмотра еще нескольких я обнаружил, что в android: тема «@style/AppTheme» я получаю, что ресурс не соответствует указанному имени. Это единственное, что появляется в Gradle Build. Я несколько раз очищал и перестраивал проект.
ОТВЕТЫ
Ответ 1
Просто закройте файл манифеста и закройте его. Это сработало для меня.
Ответ 2
Для вашей проблемы с атрибутом, не разрешенным здесь, versionCode , versionName и allowBackup должны быть помещены в файл build.gradle , а не в манифест Android. Это должно решить проблему.
Во-вторых, для проблемы » @style/AppTheme no resource matches to given name» вам нужно будет проверить ваш файл styles.xml и убедиться, что существует стиль с именем AppTheme .
Надеюсь, это поможет вам или любому, кто рассматривает этот ответ.
Ответ 3
В Android Studio просто закройте файл манифеста и откройте его снова. Это решит проблему. Кстати, Studio дает слишком много таких глупых ошибок.
Ответ 4
Просто откройте файл AndroidManifest.xml в другом редакторе, например блокнот ++, и примените некоторые изменения, а затем сохраните его. это может работать как трюк!
Ответ 5
Простая вещь — скопировать копию backup.xml в проект или сохранить код в блокноте и сохранить с тем же manifest.xml и переопределить старый файл manifest.xml
Ответ 6
Скорее всего, вы изменяете неправильный Manifest.xml. Когда вы пытаетесь запустить свой код, он создает временные файлы, которые могут быть тем, что вы редактируете.
Ответ 7
Закройте студию andorid и откройте файл AndroidManifest.xml из папки приложения в любом из локальных редакторов, например, Notepad, notepad ++, sublime и т.д. Внесите изменения и сохраните файл манифеста. Теперь откройте андродистудию. Ваша проблема будет решена.
Ответ 8
В моем случае, закрытие AndroidManifest.xml И выбор файлa > Invalidate Caches/Restart решил проблему.
Не знаю, почему мне пришлось сделать последний шаг, но он разобрал все эти ошибки для меня.
Источник
Замена манифеста при сборке в Marmalade под Android
В связи с вопросом, заданным Nonameface, я хочу опубликовать небольшое руководство, которое, возможно, окажется для кого-то полезным. Многим, рассматриваемый вопрос может показаться элементарным. Я прошу не судить меня строго, поскольку этот материал адресован начинающим разработчикам.
Суть описываемой проблемы в том, что при сборке под Android, в манифест включаются все права которые только могут понадобиться приложению, разработанному в Marmalade. При этом, не выполняется никаких проверок, используются ли эти права приложением на самом деле. В результате, у пользователя, устанавливающего приложение, возникают законные вопросы: «Для чего приложение требует права на чтение и отправку SMS, если оно, совершенно очевидно, не работает с этим функционалом?».
Пользователь, совершенно резонно, может посчитать приложение небезопасным и отказаться от его установки. Давайте посмотрим, как с этим можно бороться.
Очевидно, что нам необходимо выполнить сборку, каким-то образом подменив файл AndroidManifest.xml. Для начала, нам нужно получить оригинальный AndroidManifest.xml, формируемый инструментальными средствами Maramalade. Хотя apk-файл, по сути представляет собой zip-архив и извлечь из него требуемый файл не составляет труда, задача несколько осложняется тем, что файл храниться не в текстовом, а в двоичном виде. Извлечь файл манифеста в текстовом представлении нам поможет apktool.
Выкачиваем apktool1.5.1.tar.bz2 и apktool-install-windows-r05-ibot.tar.bz2 (в случае, если используется Windows) к себе на компьютер, и распаковываем в какой-нибудь локальный каталог. Также потребуется установленная на компьютер Java (у меня установлена jdk1.6.0_23). Распаковать apk-файл можно следующей командой:
Затем, находим в созданном каталоге AndroidManifest.xml преобразованный в текстовую форму и открываем его:
Далее, мы можем отредактировать этот файл, на свой вкус, например убрав не используемые permission-ы. Для того, чтобы при последующих сборках использовалась отредактированная версия манифеста, в mkb-файл необходимо добавить следующий раздел:
Вот, в принципе, и все. После описанной замены манифеста, тестирование сборки на Android-устройстве необходимо. Вполне возможно, что какая-то часть функционала перестанет работать, либо приложение просто перестанет запускаться.
Источник