機能: 1. アプリのパッケージ名を記述します; 2. アプリが使用する Android システムのバージョン情報を記述します; 3. システムが区別できるように、アプリ自体のバージョン情報を記述します同じアプリの 2 つのバージョン間で、どちらが新しいバージョンでどちらが古いバージョンですか? 4. アプリケーションによって公開されるコンポーネントなどについて説明します。
#APP を開発するときに、AndroidManifest.xml というファイルに遭遇します。 Android の開発を始めてから数か月が経過しましたが、このファイルについてはまだほとんど知識がなく、これが設定用であることだけを知っています。しかし、私はこのファイルにあるものの具体的な用途とその使用方法をまったく理解していません。プロジェクトに取り組む機会を利用して、このドキュメントを注意深く検討してください。
AndroidManifest.xml を学習する最良の方法は、公式ドキュメントに従ってプロジェクト内の各フィールドの役割を詳細に理解し、いくつかの変更を加えて検証することです。
AndroidManifest とは何ですか? AndroidManifest.xml とはどのようなファイルですか?
AndroidManifest の正式な説明は、アプリケーション マニフェストです (マニフェストとはマニフェストの意味です) )、各アプリケーションのルート ディレクトリにファイルが存在する必要があり、ファイル名はまったく同じである必要があります。このファイルには APP の構成情報が含まれています。システムは APP コードを実行し、内部のコンテンツに基づいてインターフェイスを表示する必要があります。
AndroidManifest.xml は、各 apk (zip) ファイルを解凍した後のルート ディレクトリにあるファイルです。各 apk には AndroidManifest.xml ファイルが含まれている必要があり、名前はまったく同じである必要があります。
AndroidManifest.xml の機能は何ですか?
アプリのパッケージ名を説明します:
Android デバイスでは、さまざまなアプリが区別されます。各アプリが人物である場合、パッケージ名はそれですは、この人の名前に相当します (マルウェアによる他のアプリの偽造を防ぐため、新しいアプリのパッケージ名と署名が古いアプリと同じである場合にのみ、アップグレードの上書きインストールが成功します)。
Android システムは常にアップグレードされているため、新しいシステム バージョンには新しい API が追加されますが、古い Android デバイスにはこれらの API がありません。問題は、アプリケーションは新しい API を使用しますが、古いシステム上で実行されることです (古いシステム上で新しい API を呼び出すとアプリケーションがクラッシュします)。そのため、Android システムの最小バージョンを指定する必要があります。アプリケーションによってサポートされている場合、たとえば、minSdkVersion を 19 に設定すると、このアプリケーションは API 19 以降のデバイスで問題なく実行できることを意味します。
Activity、Service、Provider 。BroadcastReceiver の 4 つのコンポーネントはそれぞれ独立して実行でき、アプリ起動のエントリ ポイントとして使用できます。
AndroidManifest.xml は、アプリケーション アイコンをクリックした後にどのアクティビティに入るかをシステムに伝えることができます。また、このアプリケーションの特定のクラス (BroadcastReceiver のサブクラス) がネットワークの変更やその他の情報を監視する必要があることをシステムに伝えることができます (ブロードキャスト); このアプリケーションが他のサービス (ContentProvider および Service) を提供できることをシステムに伝えることができます; このアプリケーションの特定のクラスが特定の要求 (PDF 拡張子を持つファイルを開くなど) を処理できることをシステムに通知します。
その他のニーズ テキストを使用して、適用される権限、アプリケーションのテーマなどをシステムに直接通知します。<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
この属性の定義Android の名前空間。 「http://schemas.android.com/apk/res/android」に設定する必要があります。手動で変更しないでください。
package
これは、完全な Java 言語スタイルのパッケージ名です。パッケージ名は、英語の文字 (大文字と小文字の両方)、数字、アンダースコアで構成されます。個々の名前は文字で始める必要があります。
APK をビルドするとき、ビルド システムはこのプロパティを使用して 2 つのことを行います:包名也代表着唯一的application ID,用来发布应用。但是,要注意的一点是:在APK构建过程的最后一步,package名会被build.gradle文件中的applicationId属性取代。如果这两个属性值一样,那么万事大吉,如果不一样,那就要小心了。
android:versionCode
内部的版本号。用来表明哪个版本更新。这个数字不会显示给用户。显示给用户的是versionName。这个数字必须是整数。不能用16进制,也就是说不接受"0x1"这种参数
android:versionName
显示给用户看的版本号。
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引用的就是下面的资源
android:label
一个用户可读的标签,以及所有组件的默认标签。子组件可以用他们的label属性定义自己的标签,如果没有定义,那么就用这个标签。
标签必须设置成一个字符串资源的引用。这样它们就能和其他东西一样被定位,比如@string/app_name。当然,为了开发方便,你也可以定义一个原始字符串。
android:theme
この属性は、アプリケーションで使用されるテーマを定義します。これは、スタイル リソースへの参照です。各アクティビティは、独自のテーマ属性を使用して独自のテーマを設定することもできます。
#android:name
Application サブクラスの完全な名前。以前のパスが含まれます。たとえば、com.sample.teapot.TeapotApplication。アプリケーションが起動すると、最初にこのクラスのインスタンスが作成されます。この属性はオプションであり、ほとんどのアプリではこの属性は必要ありません。この属性がない場合、Android は Application クラスのインスタンスを開始します。android:name
Activity クラスのサブクラスである、Activity クラスの名前。プロパティ値は、com.sample.teapot.TeapotNativeActivity などの完全修飾クラス名です。便宜上、最初の文字がドット (「.」) の場合は、android:label
ユーザーが読み取ることができるアクティビティ ラベル。このラベルは、アクティビティがアクティブ化されると画面に表示されます。設定されていない場合は、android:configChanges
アクティビティが独自に処理する構成変更メッセージをリストします。実行時に構成変更が発生すると、アクティビティはデフォルトで閉じられ、再起動されますが、この属性を使用して構成を宣言すると、アクティビティが再起動されなくなります。代わりに、アクティビティは実行されたままになり、その onConfigurationChanged() メソッドが呼び出されます。この属性には設定できる項目が多数ありますが、よく使われる項目は次のとおりです:注 : この属性の使用は避け、最後の手段としてのみ使用してください。構成変更による再起動を適切に処理する方法の詳細については、「ランタイム変更の処理」を参照してください。
android:theme
android:name
データ項目名。これは一意の値です。リソースへの参照。
データ項目の値。
は、このアクティビティを開始できるインテント (インテント) を指定します。この要素には複数の子要素を含めることができます。まず、遭遇した 2 つを紹介しましょう:
はアクティビティがどのようなアクションとして開始されるかを示し、android.intent.action.MAIN はどのようなアクションを示しますアクティビティの開始に時間がかかります。メインのアクティビティが開始されます。
これは、アクション要素の追加のカテゴリ情報です。android.intent.category.LAUNCHER は、このアクティビティが、現在のアプリケーション、アクティビティ。 プログラミング関連の知識について詳しくは、プログラミング学習をご覧ください。 !
以上がAndroidManifest.xml の機能を簡単に説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。