Maison  >  Article  >  Décrivez brièvement la fonction d'AndroidManifest.xml ?

Décrivez brièvement la fonction d'AndroidManifest.xml ?

青灯夜游
青灯夜游original
2020-11-25 14:21:5919963parcourir

Fonction : 1. Décrivez le nom du package de l'application ; 2. Décrivez les informations de version du système Android utilisé par l'application 3. Décrivez les informations de version de l'application elle-même, afin que le système puisse la distinguer. entre deux versions d'une même application. Quelle est la nouvelle version et quelle est l'ancienne version ? 4. Décrire les composants exposés par l'application, etc.

Décrivez brièvement la fonction d'AndroidManifest.xml ?

Nous rencontrons tous un fichier lors du développement d'une application : AndroidManifest.xml. Quelques mois se sont écoulés depuis que j'ai commencé à développer Android, et je connais encore peu ce fichier, je sais seulement qu'il est destiné à la configuration. Mais je n'ai jamais compris l'utilisation spécifique des éléments de ce fichier et comment les utiliser. Profitez de l’occasion de travailler sur le projet pour étudier attentivement ce document.

La meilleure façon d'étudier AndroidManifest.xml est naturellement de comprendre en détail le rôle de chaque champ dans le projet selon la documentation officielle, et d'apporter quelques modifications pour le vérifier.

Qu'est-ce qu'AndroidManifest ? Quel type de fichier est AndroidManifest.xml ?

L'explication officielle d'AndroidManifest est le manifeste de l'application (manifest signifie manifeste ), Chaque application doit en avoir un dans son répertoire racine et le nom du fichier doit être exactement le même. Ce fichier contient les informations de configuration de l'APP. Le système doit exécuter le code de l'APP et afficher l'interface en fonction du contenu qu'il contient.

AndroidManifest.xml est un fichier dans le répertoire racine de chaque fichier apk (zip) après décompression. Chaque apk doit contenir un fichier AndroidManifest.xml et le nom doit être exactement le même.

Quelle est la fonction d'AndroidManifest.xml ?

  • Décrivez le nom du package de l'application :

    Les appareils Android distinguent les différentes applications en conséquence. Si chaque application est une personne, le nom du package est celui-ci. est équivalent au nom de cette personne (afin d'empêcher les logiciels malveillants de contrefaire d'autres applications, la mise à niveau et l'installation par écrasement ne peuvent réussir que si le nom du package et la signature de la nouvelle application sont les mêmes que ceux de l'ancienne application

  • Décrivez les informations sur la version du système Android utilisées par l'application :

    Étant donné que le système Android est constamment mis à niveau, les nouvelles versions du système ajouteront de nouvelles API, mais les anciens appareils Android ne disposent pas de ces API. , puis de nouvelles versions apparaîtront. Le problème est que l'application utilise la nouvelle API mais s'exécute sur l'ancien système (l'application plantera lors de l'appel de la nouvelle API sur l'ancien système), il est donc nécessaire d'indiquer la version minimale du système Android prise en charge par l'application, par exemple, définir minSdkVersion sur 19 signifie que cette application n'a aucun problème à fonctionner sur les appareils dotés de l'API 19 et supérieure.

  • décrit les informations de version de l'application elle-même, de sorte que. pour deux versions de la même application, le système peut distinguer laquelle est la nouvelle version et laquelle est l'ancienne version

  • Un rôle très important est de décrire les composants (ou interfaces) exposées par l'application :

    Activity, Service, Provider , chacun des quatre composants de BroadcastReceiver peut s'exécuter indépendamment et peut être utilisé comme point d'entrée pour le démarrage de l'application.

    AndroidManifest.xml peut indiquer au système quelle activité entrer après avoir cliqué sur l'icône de l'application ; il peut indiquer au système qu'une certaine classe de cette application (une sous-classe de BroadcastReceiver) doit surveiller les modifications du réseau et d'autres informations ( diffusion); il peut indiquer au système que cette application peut d'autres L'application fournit des services (ContentProvider et Service) ; informe le système que certaines classes de cette application peuvent gérer certaines demandes (comme l'ouverture de fichiers avec des extensions pdf, etc.) ; >

  • Autres besoins Utiliser du texte pour informer directement le système : comme les autorisations demandées, le thème de l'application, etc.
  • En dernière analyse, l'application système Android doit fournir au système trop d'informations directement par texte

Un vrai fichier AndroidManifest.xml

<manifest>

  <uses-feature></uses-feature>

  <application>

    <!-- Our activity is the built-in NativeActivity framework class.
         This will take care of integrating with our NDK code. -->
    <activity>
      <!-- Tell NativeActivity the name of our .so -->
      <meta-data></meta-data>
      <intent-filter>
        <action></action>
        <category></category>
      </intent-filter>
    </activity>
  </application>
</manifest>
Il s'agit d'un fichier du projet teapots dans l'exemple officiel de Google. Nous analyserons la signification des champs en fonction de ce fichier. La signification des champs fait référence à la documentation officielle.

Élément Tout d'abord, tout XML doit contenir l'élément Il s'agit du nœud racine du fichier. Il doit contenir l'élément et spécifier les attributs xmlns:android et package.

Attributs dans l'élément

xmlns:android

Cette définition d'attribut Espace de noms Android. Doit être défini sur "http://schemas.android.com/apk/res/android". Ne le modifiez pas manuellement.

package

Il s'agit d'un nom complet de package de style langage Java. Le nom du package est composé de lettres anglaises (majuscules et minuscules), de chiffres et de traits de soulignement. Chaque nom individuel doit commencer par une lettre.

Lors de la création d'un APK, le système de construction utilise cette propriété pour faire deux choses :

  • 1、生成R.java类时用这个名字作为命名空间(用于访问APP的资源)
    比如:package被设置成com.sample.teapot,那么生成的R类就是:com.sample.teapot.R
  • 2、用来生成在manifest文件中定义的类的完整类名。比如package被设置成com.sample.teapot,并且activity元素被声明成,完整的类名就是com.sample.teapot.MainActivity。

包名也代表着唯一的application ID,用来发布应用。但是,要注意的一点是:在APK构建过程的最后一步,package名会被build.gradle文件中的applicationId属性取代。如果这两个属性值一样,那么万事大吉,如果不一样,那就要小心了。

android:versionCode

内部的版本号。用来表明哪个版本更新。这个数字不会显示给用户。显示给用户的是versionName。这个数字必须是整数。不能用16进制,也就是说不接受"0x1"这种参数

android:versionName

显示给用户看的版本号。

Décrivez brièvement la fonction dAndroidManifest.xml ?

元素中的元素

元素

Google Play利用这个元素的值从不符合应用需要的设备上将应用过滤。

这东西的作用是将APP所依赖的硬件或者软件条件告诉别人。它说明了APP的哪些功能可以随设备的变化而变化。

使用的时候要注意,必须在单独的元素中指定每个功能,如果要多个功能,需要多个元素。比如要求设备同时具有蓝牙和相机功能:

<uses-feature></uses-feature>
<uses-feature></uses-feature>

的属性

android:name

该属性以字符串形式指定了APP要用的硬件或软件功能。

android:required

这项属性如果值为true表示需要这项功能否则应用无法工作,如果为false表示应用在必要时会使用该功能,但是如果没有此功能应用也能工作。

android:glEsVersion

指明应用需要的Opengl ES版本。高16位表示主版本号,低16位表示次版本号。例如,如果是要3.2的版本,就是0x00030002。如果定义多个glEsVersion,应用会自动启用最高的设置。

元素

此元素描述了应用的配置。这是一个必备的元素,它包含了很多子元素来描述应用的组件,它的属性影响到所有的子组件。许多属性(例如icon、label、permission、process、taskAffinity和allowTaskReparenting)都可以设置成默认值。

的属性

android:allowBackup

表示是否允许APP加入到备份还原的结构中。如果设置成false,那么应用就不会备份还原。默认值为true。

android:fullBackupContent

这个属性指向了一个xml文件,该文件中包含了在进行自动备份时的完全备份规则。这些规则定义了哪些文件需要备份。此属性是一个可选属性。默认情况下,自动备份包含了大部分app文件。

android:supportsRtl

声明你的APP是否支持RTL(Right To Left)布局。如果设置成true,并且targetSdkVersion被设置成17或更高。很多RTL API会被集火,这样你的应用就可以显示RTL布局了。如果设置成false或者targetSdkVersion被设置成16或更低。哪些RTL API就不起作用了。

该属性的默认的值是false。

android:icon

APP的图标,以及每个组件的默认图标。可以在组价中自定义图标。这个属性必须设置成一个引用,指向一个可绘制的资源,这个资源必须包含图片。系统不设置默认图标。例如mipmap/ic_launcher引用的就是下面的资源

Décrivez brièvement la fonction dAndroidManifest.xml ?

android:label

一个用户可读的标签,以及所有组件的默认标签。子组件可以用他们的label属性定义自己的标签,如果没有定义,那么就用这个标签。

标签必须设置成一个字符串资源的引用。这样它们就能和其他东西一样被定位,比如@string/app_name。当然,为了开发方便,你也可以定义一个原始字符串。

Décrivez brièvement la fonction dAndroidManifest.xml ?

android:theme

Cet attribut définit le thème utilisé par l'application. C'est une référence à la ressource de style. Chaque activité peut également définir son propre thème à l'aide de son propre attribut de thème.

Décrivez brièvement la fonction dAndroidManifest.xml ?

android:name

Le nom complet de la sous-classe Application. Inclut le chemin précédent. Par exemple com.sample.teapot.TeapotApplication. Lorsque l'application démarre, une instance de cette classe est créée en premier. Cet attribut est facultatif et la plupart des applications ne nécessitent pas cet attribut. En l’absence de cet attribut, Android démarrera une instance de la classe Application.

Élément

Cet élément déclare une activité (sous-classe de la classe Activity) qui implémente l'interface visuelle de l'application. Il s'agit d'un élément enfant obligatoire de l'élément Toutes les activités doivent être représentées par un élément Toute activité qui n'y est pas déclarée n'est pas visible par le système et ne sera jamais exécutée.

android:name

Le nom de la classe Activity, qui est une sous-classe de la classe Activity. La valeur de la propriété est le nom de classe complet, tel que com.sample.teapot.TeapotNativeActivity. Pour plus de commodité, si le premier caractère est un point ('.'), vous devez ajouter le nom du package dans l'élément Une fois l’application publiée, le nom ne doit pas être modifié.

Il n'y a pas de valeur par défaut, le nom doit être précisé.

android:label

Étiquette d'activité, qui peut être lue par l'utilisateur. Cette étiquette s'affichera à l'écran lorsque l'activité sera activée. S’il n’est pas défini, l’attribut label dans Les conditions requises pour définir les propriétés sont les mêmes que dans .

android:configChanges

Répertorie les messages de changement de configuration que l'activité gérera seule. Lorsqu'un changement de configuration se produit au moment de l'exécution, l'activité est fermée et redémarrée par défaut, mais déclarer la configuration avec cet attribut empêchera le redémarrage de l'activité. Au lieu de cela, l'activité reste en cours d'exécution et sa méthode onConfigurationChanged() est appelée.

Remarque  : L'utilisation de cet attribut doit être évitée et ne doit être utilisée qu'en dernier recours. Pour plus d’informations sur la façon de gérer correctement les redémarrages dus à des modifications de configuration, lisez Gestion des modifications d’exécution.

De nombreux éléments peuvent être définis pour cet attribut. Voici les éléments couramment utilisés :

  • orientation
    Ne vous inquiétez pas, l'écran a changé. , par exemple, l'utilisateur fait pivoter l'appareil
  • keyboardHidden
    La fonction d'accessibilité du clavier a changé, par exemple, l'utilisateur affiche le clavier matériel
  • android:launchMode
    instructions sur la façon dont pour lancer l'activité. Il y a quatre instructions au total :
    "standard"
    "singleTop"
    "singleTask"
    "singleInstance"
    La valeur par défaut est standard. Ces modes sont divisés en deux catégories : « standard » et « singleTop » constituent une seule catégorie. L'activité dans ce mode peut être instanciée plusieurs fois. Les instances peuvent appartenir à n’importe quelle tâche et peuvent être situées n’importe où dans la pile d’activités. "singleTask" et "singleInstance" sont la même classe. Ce mode ne peut démarrer que des tâches, qui sont toujours à la racine de la pile d'activités. De plus, l'appareil ne peut contenir qu'une seule instance d'activité à la fois.
    Après l'avoir défini sur singleTask, le système crée une activité à la racine de la nouvelle tâche et lui envoie l'intention. Si une instance d'activité existe déjà, le système lui transférera l'intention en appelant la méthode onNewIntent() de l'instance au lieu de créer une nouvelle instance d'activité.

android:theme

Définissez le format du thème, similaire au thème dans . L'élément

spécifie un élément de données supplémentaire, qui est une paire nom-valeur fournie à son composant parent. Ces données formeront un objet Bundle, qui pourra être utilisé par le champ PackageItemInfo.metaData. Bien qu'il soit possible d'utiliser plusieurs balises d'éléments , cela n'est pas recommandé. Si plusieurs éléments de données doivent être spécifiés, l'approche recommandée consiste à combiner les plusieurs éléments de données en une seule ressource, puis à les inclure à l'aide d'une .

Cet élément a trois attributs :

  • android:name

    Nom de l'élément de données, qui est une valeur unique.

  • android:resource

    Une référence à une ressource.

  • android:value

    La valeur de l'élément de données. L'élément

précise avec quelle intention (intention) cette activité peut être démarrée. Cet élément peut contenir plusieurs éléments enfants. Présentons d'abord les deux que nous rencontrons : l'élément

indique l'action sous laquelle l'activité est lancée, android.intent.action.MAIN indique l'action l'activité est démarrée comme. L'activité principale démarre.

Élément

Il s'agit d'informations de catégorie supplémentaires de l'élément d'action android.intent.category.LAUNCHER qui indique que cette activité est la plus haute priorité pour le. Activité actuelle de l’application.

Pour plus de connaissances sur la programmation, veuillez visiter : Apprendre la programmation ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn