Не открывается android manifest

Файл манифеста 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
Читайте также:  Create your frisk android

объявляет базовое имя для дерева разрешений. Этот элемент объявляет не само разрешение, а только пространство имен, в которое могут быть помещены дальнейшие разрешения.

определяет имя для набора логически связанных разрешений. Это могут быть как объявленные в этом же манифесте с элементом

разрешения, так и объявленные в другом месте. Этот элемент не объявляет разрешение непосредственно, только категорию, в которую могут быть помещены разрешения. Разрешение можно поместить в группу, назначив имя группы в атрибуте 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-устройстве необходимо. Вполне возможно, что какая-то часть функционала перестанет работать, либо приложение просто перестанет запускаться.

Источник

Оцените статью