ホームページ > よくある問題 > AndroidManifest.xml の機能を簡単に説明します。

AndroidManifest.xml の機能を簡単に説明します。

青灯夜游
リリース: 2020-11-30 14:00:43
オリジナル
20137 人が閲覧しました

機能: 1. アプリのパッケージ名を記述します; 2. アプリが使用する Android システムのバージョン情報を記述します; 3. システムが区別できるように、アプリ自体のバージョン情報を記述します同じアプリの 2 つのバージョン間で、どちらが新しいバージョンでどちらが古いバージョンですか? 4. アプリケーションによって公開されるコンポーネントなどについて説明します。

AndroidManifest.xml の機能を簡単に説明します。

#APP を開発するときに、AndroidManifest.xml というファイルに遭遇します。 Android の開発を始めてから数か月が経過しましたが、このファイルについてはまだほとんど知識がなく、これが設定用であることだけを知っています。しかし、私はこのファイルにあるものの具体的な用途とその使用方法をまったく理解していません。プロジェクトに取り組む機会を利用して、このドキュメントを注意深く検討してください。

AndroidManifest.xml を学習する最良の方法は、公式ドキュメントに従ってプロジェクト内の各フィールドの役割を詳細に理解し、いくつかの変更を加えて検証することです。

AndroidManifest とは何ですか? AndroidManifest.xml とはどのようなファイルですか?

AndroidManifest の正式な説明は、アプリケーション マニフェストです (マニフェストとはマニフェストの意味です) )、各アプリケーションのルート ディレクトリにファイルが存在する必要があり、ファイル名はまったく同じである必要があります。このファイルには APP の構成情報が含まれています。システムは APP コードを実行し、内部のコンテンツに基づいてインターフェイスを表示する必要があります。

AndroidManifest.xml は、各 apk (zip) ファイルを解凍した後のルート ディレクトリにあるファイルです。各 apk には AndroidManifest.xml ファイルが含まれている必要があり、名前はまったく同じである必要があります。

AndroidManifest.xml の機能は何ですか?

  • アプリのパッケージ名を説明します:

    Android デバイスでは、さまざまなアプリが区別されます。各アプリが人物である場合、パッケージ名はそれですは、この人の名前に相当します (マルウェアによる他のアプリの偽造を防ぐため、新しいアプリのパッケージ名と署名が古いアプリと同じである場合にのみ、アップグレードの上書きインストールが成功します)。

  • アプリで使用される Android システムのバージョン情報を記述します。
  • Android システムは常にアップグレードされているため、新しいシステム バージョンには新しい API が追加されますが、古い Android デバイスにはこれらの API がありません。問題は、アプリケーションは新しい API を使用しますが、古いシステム上で実行されることです (古いシステム上で新しい API を呼び出すとアプリケーションがクラッシュします)。そのため、Android システムの最小バージョンを指定する必要があります。アプリケーションによってサポートされている場合、たとえば、minSdkVersion を 19 に設定すると、このアプリケーションは API 19 以降のデバイスで問題なく実行できることを意味します。

  • はアプリ自体のバージョン情報を記述します。システムは、同じアプリの 2 つのバージョンを区別できることを確認します。どちらが新しいバージョンで、どちらが古いバージョンですか?
  • 非常に重要な役割は、コンポーネント (またはインターフェイス) を記述することです) アプリケーションによって公開されます:
  • Activity、Service、Provider 。BroadcastReceiver の 4 つのコンポーネントはそれぞれ独立して実行でき、アプリ起動のエントリ ポイントとして使用できます。

    AndroidManifest.xml は、アプリケーション アイコンをクリックした後にどのアクティビティに入るかをシステムに伝えることができます。また、このアプリケーションの特定のクラス (BroadcastReceiver のサブクラス) がネットワークの変更やその他の情報を監視する必要があることをシステムに伝えることができます (ブロードキャスト); このアプリケーションが他のサービス (ContentProvider および Service) を提供できることをシステムに伝えることができます; このアプリケーションの特定のクラスが特定の要求 (PDF 拡張子を持つファイルを開くなど) を処理できることをシステムに通知します。

    その他のニーズ テキストを使用して、適用される権限、アプリケーションのテーマなどをシステムに直接通知します。
  • 最終的な分析では、Android システム アプリはテキストを通じてシステムに多すぎる情報を直接伝える必要があります。

実際の 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>
ログイン後にコピー
これは Google の公式サンプルの teapots プロジェクト内のファイルです。このファイルを基にフィールドの意味を解析していきます。フィールドの意味は公式ドキュメントを参照しています。

要素

まず、すべての XML には 要素が含まれている必要があります。これはファイルのルート ノードです。これには 要素が含まれ、xmlns:android および package 属性を指定する必要があります。

要素の属性

xmlns:android

この属性の定義Android の名前空間。 「http://schemas.android.com/apk/res/android」に設定する必要があります。手動で変更しないでください。

package

これは、完全な Java 言語スタイルのパッケージ名です。パッケージ名は、英語の文字 (大文字と小文字の両方)、数字、アンダースコアで構成されます。個々の名前は文字で始める必要があります。

APK をビルドするとき、ビルド システムはこのプロパティを使用して 2 つのことを行います:

  • 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

显示给用户看的版本号。

AndroidManifest.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引用的就是下面的资源

AndroidManifest.xml の機能を簡単に説明します。

android:label

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

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

AndroidManifest.xml の機能を簡単に説明します。

android:theme

この属性は、アプリケーションで使用されるテーマを定義します。これは、スタイル リソースへの参照です。各アクティビティは、独自のテーマ属性を使用して独自のテーマを設定することもできます。

AndroidManifest.xml の機能を簡単に説明します。

#android:name

Application サブクラスの完全な名前。以前のパスが含まれます。たとえば、com.sample.teapot.TeapotApplication。アプリケーションが起動すると、最初にこのクラスのインスタンスが作成されます。この属性はオプションであり、ほとんどのアプリではこの属性は必要ありません。この属性がない場合、Android は Application クラスのインスタンスを開始します。

要素

この要素は、アプリケーションのビジュアル インターフェイスを実装するアクティビティ (Activity クラスのサブクラス) を宣言します。これは、 要素の必須の子要素です。すべてのアクティビティは、マニフェスト ファイル内の 要素で表す必要があります。そこで宣言されていないアクティビティはシステムには表示されず、決して実行されません。

android:name

Activity クラスのサブクラスである、Activity クラスの名前。プロパティ値は、com.sample.teapot.TeapotNativeActivity などの完全修飾クラス名です。便宜上、最初の文字がドット (「.」) の場合は、 要素にパッケージ名を追加する必要があります。アプリが公開された後は、名前を変更しないでください。

デフォルト値はありません。名前を指定する必要があります。

android:label

ユーザーが読み取ることができるアクティビティ ラベル。このラベルは、アクティビティがアクティブ化されると画面に表示されます。設定されていない場合は、 の label 属性が使用されます。プロパティを設定するための要件は、 の場合と同じです。

android:configChanges

アクティビティが独自に処理する構成変更メッセージをリストします。実行時に構成変更が発生すると、アクティビティはデフォルトで閉じられ、再起動されますが、この属性を使用して構成を宣言すると、アクティビティが再起動されなくなります。代わりに、アクティビティは実行されたままになり、その onConfigurationChanged() メソッドが呼び出されます。

: この属性の使用は避け、最後の手段としてのみ使用してください。構成変更による再起動を適切に処理する方法の詳細については、「ランタイム変更の処理」を参照してください。

この属性には設定できる項目が多数ありますが、よく使われる項目は次のとおりです:

    orientation
  • 画面が変わりましたのでご安心ください。たとえば、ユーザーがデバイスを回転します
  • keyboardHidden
  • キーボードのアクセシビリティが変更されました。たとえば、ユーザーにハードウェア キーボードが表示されます
  • android:launchMode
  • 手順アクティビティを起動します。命令は合計 4 つあります。
    "standard"
    "singleTop"
    "singleTask"
    "singleInstance"
    デフォルトは standard です。これらのモードは 2 つのカテゴリに分類されます。「標準」と「シングルトップ」は 1 つのカテゴリです。このモードのアクティビティは複数回インスタンス化できます。インスタンスは任意のタスクに属することができ、アクティビティ スタック内のどこにでも配置できます。 「singleTask」と「singleInstance」は同じクラスです。このモードでは、常にアクティビティ スタックのルートにあるタスクのみを開始できます。さらに、デバイスは一度に 1 つのアクティビティ インスタンスのみを保持できます。
    singleTask に設定した後、システムは新しいタスクのルートにアクティビティを作成し、それにインテントを送信します。 Activity インスタンスがすでに存在する場合、システムは新しい Activity インスタンスを作成する代わりに、インスタンスの onNewIntent() メソッドを呼び出して、そのインスタンスにインテントを転送します。

android:theme

のテーマと同様に、テーマの形式を設定します。

要素

追加のデータ項目を指定します。これは、親コンポーネントに提供される名前と値のペアです。これらのデータは Bundle オブジェクトを形成し、PackageItemInfo.metaData フィールドで使用できます。複数の 要素タグを使用することは可能ですが、これはお勧めできません。指定するデータ項目が複数ある場合、複数のデータ項目を 1 つのリソースに結合し、 を使用してそれらを含めることをお勧めします。

この要素には 3 つの属性があります:

  • android:name

    データ項目名。これは一意の値です。

  • #android:resource

    リソースへの参照。

  • #android:value
  • データ項目の値。

    要素

は、このアクティビティを開始できるインテント (インテント) を指定します。この要素には複数の子要素を含めることができます。まず、遭遇した 2 つを紹介しましょう:

要素

はアクティビティがどのようなアクションとして開始されるかを示し、android.intent.action.MAIN はどのようなアクションを示しますアクティビティの開始に時間がかかります。メインのアクティビティが開始されます。

要素

これは、アクション要素の追加のカテゴリ情報です。android.intent.category.LAUNCHER は、このアクティビティが、現在のアプリケーション、アクティビティ。

プログラミング関連の知識について詳しくは、プログラミング学習をご覧ください。 !

以上がAndroidManifest.xml の機能を簡単に説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート