- Файл манифеста AndroidManifest.xml
- Назначение файла
- Общая структура манифеста
- Описание
- Атрибуты
- Android Studio: Android Manifest не существует или имеет неправильный корневой тег
- Как я понял:
- Редактировать:
- Как разрешить ошибку Android Studio, где он не может найти файл манифеста проекта?
- Android Manifest
- How Unity produces the Android Manifest
- Overriding the Android manifest
- Permissions
- Runtime permissions in Android 6.0 (Marshmallow)
- Examining the resulting 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
объявляет базовое имя для дерева разрешений. Этот элемент объявляет не само разрешение, а только пространство имен, в которое могут быть помещены дальнейшие разрешения.
определяет имя для набора логически связанных разрешений. Это могут быть как объявленные в этом же манифесте с элементом
разрешения, так и объявленные в другом месте. Этот элемент не объявляет разрешение непосредственно, только категорию, в которую могут быть помещены разрешения. Разрешение можно поместить в группу, назначив имя группы в атрибуте permissionGroup элемента
Источник
Android Studio: Android Manifest не существует или имеет неправильный корневой тег
Я получил эту ошибку в Android Studio (AS):
Как я понял:
Я создал проект AS с нуля, и все было в порядке. Затем появилось всплывающее окно, и (если я правильно помню) говорил что-то вроде: « Android Framework detected ». Я нажал «Да», и некоторые изменения произошли с проектом / модулем. И после этого я получил вышеуказанную ошибку
Редактировать:
В моем случае проблема не была связана с Gradle . Это связано с настройкой IntelliJ / Android Studio , в частности .iml файлом. Я понял, что после прочтения этого информационного сообщения здесь .
На Android Studio v0.8.2 нажатие на Sync project with Gradle files кнопки Sync project with Gradle files решило мою проблему.
Обновить
Благодаря комментарию jaumard . Если Sync project with Gradle files не отображается, вам нужно открыть панель Gradle и щелкнуть значок синхронизации сверху панели инструментов.
Просто позвоните (в любом случае) File -> Invalidate Caches и Restart ….
Файл settings.gradle был пуст. Я добавил код defualt:
Затем начинается запуск проекта.
Что помогло мне:
- Удалить .gradle / folder
- Удалить .idea / folder
- Удалить ****. Идея *** файл
- Повторно открыть Android Studio
- Импортировать из градиента, так как Android Studio предлагает
Дважды проверьте, что в структуре проекта / модуле / файле манифеста он указывает на правильный файл манифеста в вашем коде, а не на источник в сгенерированных источниках.
Это справедливо как для Android Studio, так и для Intelli J. Иногда, когда вы импортируете проект из существующих источников, он предпочитает файл манифеста внутри каталога источников.
У меня возникла аналогичная проблема. Похоже, мой каталог … / src по какой-либо причине перемещен в моем каталоге … / lib. Я переместил его из каталога / lib. Теперь оба / lib и / src находятся на одном уровне. После нескольких чистых перестроек и перезапуска студии Android все возвращается к норме. Мой эмулятор начал нормально.
Возможно, вы захотите проверить структуру своего каталога. Сравните структуру каталогов с рабочим проектом. Возможно, вы сможете увидеть разницу.
Источник
Как разрешить ошибку Android Studio, где он не может найти файл манифеста проекта?
Я переношу свой старый проект с Eclipse на студию Android. Я сделал следующее:
- Экспорт и генерация файлов сборки градиента в eclipse
- Импортирован файл Gradle.build в Android Studio
- Изменены зависимости зависимостей версии gradle от: classpath ‘com.android.tools.build:gradle:0.9.+’
Моя корневая папка проекта содержит 3 проекта библиотеки: Actionbarsherlock , Authbahn и библиотеку . Моя корневая папка также содержит основной проект JohelpenHulpverlener .
После устранения большого количества ошибок я получаю следующую ошибку:
Мой root build.gradle выглядит так:
Мой build.gradle в основном проекте выглядит следующим образом:
Я пытаюсь понять это, надеюсь, кто-то может помочь мне здесь!
У вас есть куча вещей в файле сборки Gradle на корневом уровне, который заставляет систему сборки думать, что там есть модуль Android (это не так, это подкаталог ниже внутри JohelpenHulpverlener ), и он терпит неудачу, потому что он не находит манифест.
Я думаю, если вы возьмете много материала из своего файла build.gradle на корневом уровне и замените его версией по умолчанию для новых проектов, то есть:
это будет работать.
Убедитесь, что у вас есть теги снаружи:
В файле build.gradle укажите имя пакета, например
applicationId «com.myapp» Здесь «com.myapp» – это пакетное имя моего приложения. Я надеюсь, что это поможет вам.
У меня была такая же проблема при переносе проекта eclipse в студию Android. Проблема в том, что файл сборки корневого Gradle, созданный студией Android, ошибочен, и он должен выглядеть следующим образом:
Обновление: похоже, проблема была устранена последней версией Android Studio 1.4, теперь мы можем легко импортировать проект eclipse в студию
Build-> Rebuild решил это для меня.
Я знаю, что это старый пост, но я помог другу, который новичок в программировании с этой проблемой вчера вечером. Ваши предложения были рассмотрены, но не применялись. Их последним действием перед ошибкой было добавление макета списка в проект. Я попросил их удалить его, и ошибки исчезли через несколько мгновений.
Я не нашел другого сообщения с этим сценарием и этого вывода, поэтому я думал, что его совместное использование может помочь кому-то другому.
Вывод: добавление нового компонента в неправильное место может быть еще одной причиной такой ошибки.
Источник
Android Manifest
The Android Manifest is an XML file which contains important metadata about the Android app. This includes the package name, activity names, main activity (the entry point to the app), Android version support, hardware features support, permissions, and other configurations.
For more information about the Android Manifest file, see the Android Developer documentation on Android Manifests.
How Unity produces the Android Manifest
In Unity 2019.3 and newer versions, the Android Gradle An Android build system that automates several build processes. This automation means that many common build errors are less likely to occur. More info
See in Glossary project that Unity generates has two template manifest files:
- LauncherManifest.xml — Located in the exported project, at root/launcher/src/main/AndroidManifest.xml. This file contains the app’s:
- icons
- name
- starting activity and its Intents
- install location
- supported screen sizes
- isGame setting
- LibraryManifest.xml — Located in the exported project at root/unityLibrary/src/main/AndroidManifest.xml. You can override this manifest with a custom_ AndroidManifest.xml_ that you add in the Plugins/Android folder. This file declares the:
- Unity activity
- permissions
- theme used by the Unity activity
- VR modes
- VR performance
- making the activity non-resizable (for VR)
- setting max aspect ratio
- reacting to configuration changes
- orientations
- launch modes
- Android UI (User Interface) Allows a user to interact with your application. More info
See in Glossary hardware acceleration - used features (like gamepad or graphics API)
- notch support
- initial window size
- ability to resize the window
When Unity builds your app, it automatically generates the Android manifest files, following the steps below:
- Unity uses LibraryManifest.xml or AndroidManifest.xml as the main manifest.
- It then finds all of the Android manifests of your plug-ins A set of code created outside of Unity that creates functionality in Unity. There are two kinds of plug-ins you can use in Unity: Managed plug-ins (managed .NET assemblies created with tools like Visual Studio) and Native plug-ins (platform-specific native code libraries). More info
See in Glossary (.aar files and Android Libraries). - It uses Google’s manifmerger class to merge plug-in manifests into the main manifest.
- Unity modifies the manifest files in the launcher and library modules. It automatically adds permissions, configuration options, features used, and other information.
Overriding the Android manifest
Although Unity generates a correct manifest for your app, you might want direct control over its contents.
To use an Android manifest you created outside of Unity, import your Android Manifest file to the following location: Assets/Plugins/Android/AndroidManifest.xml. This overrides the default LibraryManifest.xml.
In this situation, Unity merges the manifests of your Android libraries into your main manifest, and ensures that the resulting manifest’s configuration is correct. For full control of the manifest, including permissions, you must export the Project and modify the final manifest in Android Studio.
Note: Unity only supports the [launchMode — singleTask](https://developer.android.com/guide/topics/manifest/activity-element.html#lmode) launch mode.
Permissions
Unity automatically adds the necessary permissions to the manifest based on the Android Player Settings and Unity APIs that your app calls from the script. For example:
- Network classes add the INTERNET permission
- Using vibration (such as Handheld.Vibrate ) adds VIBRATE
- The InternetReachability ] property adds ACCESS_NETWORK_STATE
- Location APIs (such as LocationService ) adds ACCESS_FINE_LOCATION
- WebCamTexture APIs add CAMERA A component which creates an image of a particular viewpoint in your scene. The output is either drawn to the screen or captured as a texture. More info
See in Glossary permission - The Microphone class adds RECORD_AUDIO
- NetworkDiscovery and NetworkTransport.SetMulticastLock add CHANGE_WIFI_MULTICAST_STATE
For more information about permissions, see Android developer documentation on Android Manifest Permissions.
If your plug-ins require a permission by declaring it in their manifests, Unity automatically adds the permission to the resulting Android manifest during the merge stage. All Unity APIs that plug-ins call also contribute to the permissions list.
Runtime permissions in Android 6.0 (Marshmallow)
If your app is running on a device with Android 6.0 (Marshmallow) or later and also targets Android API level 23 or higher, your app uses the Android Runtime Permission System.
The Android Runtime Permission System asks the user to grant permissions while the app is running, instead of when they first install the app. App users can usually grant or deny each permission when the app needs it while the app is running (for example, requesting camera permission before taking a picture). This allows an app to run with limited functionality without permissions. You can use the Android.Permission class in Unity to check whether the user granted or denied specific permissions. If a permission your app needs has been denied, you can inform the user why the app needs it and ask them to approve the permission. For more information, see documentation on Requesting Permissions.
Your app normally prompts the user to allow what Android calls “dangerous” permissions on its startup. For more information, see Android developer documentation on dangerous permissions. If you don’t want your app to ask for permissions on startup, you can add the following code to your manifest, in either the Application or Activity sections:
Note: This code suppresses the permission dialog the app shows on startup, but you must handle runtime permissions carefully to avoid crashes. This is an advanced method of dealing with runtime permissions.
For more information about the Runtime Permission System and handling permissions, see Android developer documentation on Requesting Permissions.
Examining the resulting Android manifest
To examine the final Android manifest that Unity generates for your app, open the Temp/StagingArea/AndroidManifest.xml file after you build your Project but before you close the Unity Editor.
The Manifest is stored in binary format in the output package (.apk). To check the contents of a Manifest inside an . apk The Android Package format output by Unity. An APK is automatically deployed to your device when you select File > Build & Run. More info
See in Glossary , you can use the Android Studio APK Analyzer, or another third-party tool such as Apktool.
- Unity as a Library for Android added in 2019.3. NewIn20193
- Added support for Android Runtime Permissions in 2018.3.
- Updated functionality in 5.5
Источник