기능: 1. 앱의 패키지 이름을 설명합니다. 2. 앱에서 사용하는 Android 시스템의 버전 정보를 설명합니다. 3. 동일한 앱의 두 버전에 대해 앱 자체의 버전 정보를 설명합니다. 시스템은 어느 것이 새 버전인지, 이전 버전인지 구분할 수 있습니다. 4. 애플리케이션에 의해 노출되는 구성 요소를 설명합니다.
우리 모두는 앱을 개발할 때 AndroidManifest.xml 파일을 만나게 됩니다. 안드로이드 개발을 처음 시작한 지 몇 달이 지났지만, 아직 이 파일에 대해서는 설정용이라는 것만 알고 있습니다. 하지만 저는 이 파일에 있는 내용의 구체적인 용도와 사용 방법을 전혀 이해하지 못했습니다. 이 문서를 주의 깊게 연구하기 위해 프로젝트를 진행하는 기회를 가지십시오.
AndroidManifest.xml을 공부하는 가장 좋은 방법은 당연히 공식 문서를 참고하여 프로젝트 내 각 필드의 역할을 자세히 이해하고, 이를 수정하기 위해 약간의 수정을 가하는 것입니다.
AndroidManifest란 무엇인가요? AndroidManifest.xml은 어떤 파일인가요?
AndroidManifest에 대한 공식적인 설명은 각 애플리케이션의 루트 디렉터리에 포함되어야 하는 애플리케이션 매니페스트(manifest는 매니페스트를 의미함)입니다. 파일 이름은 정확히 동일해야 합니다. 이 파일에는 APP의 구성 정보가 포함되어 있습니다. 시스템은 APP 코드를 실행하고 내부 콘텐츠를 기반으로 인터페이스를 표시해야 합니다.
AndroidManifest.xml은 압축을 푼 후 각 apk(zip) 파일의 루트 디렉터리에 있는 파일입니다. 각 apk에는 AndroidManifest.xml 파일이 포함되어야 하며 이름은 정확히 동일해야 합니다.
AndroidManifest.xml이란? 기능?
앱의 패키지 이름 설명:
Android 기기는 그에 따라 서로 다른 앱을 구분합니다. 각 앱이 사람인 경우 패키지 이름은 사람의 이름과 동일합니다(맬웨어가 다른 앱을 모방하는 것을 방지하기 위해). 새 앱의 패키지 이름과 서명이 이전 앱과 동일한 경우에만 업그레이드 및 적용 범위 설치가 성공할 수 있습니다.
앱에서 사용하는 안드로이드 시스템 버전 정보를 설명하세요.
안드로이드이기 때문에 시스템이 지속적으로 업그레이드되고 있으므로 새 시스템 버전이 업데이트될 예정입니다. 새 API가 추가되었지만 이전 Android 기기에서 이러한 API를 사용할 수 없는 경우 새 버전의 애플리케이션이 새 API를 사용하지만 이전 시스템에서 실행되는 문제가 발생합니다. (이전 시스템에서 새 API를 호출하는 애플리케이션은 충돌합니다.) 따라서 이 애플리케이션이 지원하는 최소 Android 시스템 버전을 표시해야 합니다. 예를 들어 minSdkVersion을 19로 설정하면 이 애플리케이션이 API 19를 사용하는 기기에서 실행될 수 있음을 의미합니다.
앱 자체의 버전 정보를 이렇게 설명하세요. 동일한 앱의 두 가지 버전에 대해 시스템에서는 어느 것이 새 버전이고 어느 것이 이전 버전인지 구분할 수 있습니다.
매우 중요합니다. 역할은 애플리케이션에 의해 노출되는 구성 요소(또는 인터페이스)를 설명하는 것입니다.
Activity, Service 4개의 구성 요소인 Provider 및 BroadcastReceiver는 각각 독립적으로 실행될 수 있으며 앱 시작을 위한 진입점으로 사용될 수 있습니다.
AndroidManifest.xml은 애플리케이션 아이콘을 클릭한 후 입력할 활동을 시스템에 알려줄 수 있습니다. 이는 이 애플리케이션의 특정 클래스(BroadcastReceiver의 하위 클래스)가 네트워크 변경 사항 및 기타 정보(브로드캐스트)를 모니터링해야 함을 시스템에 알릴 수 있습니다. 이 애플리케이션이 다른 애플리케이션(ContentProvider 및 Service)에 서비스를 제공할 수 있음을 시스템에 알릴 수 있습니다. 신청된 권한, 애플리케이션 테마 등 텍스트를 사용하여 시스템에 직접 알려야 하는 사항.
최종 분석에서 안드로이드 시스템 앱은 시스템에 너무 많은 정보를 텍스트를 통해 직접 전달해야 합니다.
실제 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
요소의 속성은 Android 네임스페이스를 정의합니다. "http://schemas.android.com/apk/res/android"로 설정되어야 합니다. 수동으로 수정하지 마세요.
package완전한 Java 언어 스타일 패키지 이름입니다. 패키지 이름은 영문자(대소문자 모두), 숫자, 밑줄로 구성됩니다. 각 개인의 이름은 문자로 시작해야 합니다. APK를 빌드할 때 빌드 시스템은 이 속성을 사용하여 두 가지 작업을 수행합니다.
包名也代表着唯一的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 클래스의 인스턴스를 시작합니다.
이 요소는 애플리케이션 시각적 인터페이스를 구현하는 Activity(Activity 클래스의 하위 클래스)를 선언합니다. 이는
android:name
Activity 클래스의 하위 클래스인 Activity 클래스의 이름입니다. 특성 값은 com.sample.teapot.TeapotNativeActivity와 같은 완전한 클래스 이름입니다. 편의상 첫 번째 문자가 점('.')인 경우
기본값은 없으며 이름을 지정해야 합니다.
android:label
사용자가 읽을 수 있는 활동 라벨입니다. 이 라벨은 활동이 활성화되면 화면에 표시됩니다. 설정하지 않으면
android:configChanges
활동이 자체적으로 처리할 구성 변경 메시지를 나열합니다. 런타임 시 구성 변경이 발생하면 기본적으로 활동이 닫히고 다시 시작되지만 이 속성으로 구성을 선언하면 활동이 다시 시작되지 않습니다. 대신 활동은 계속 실행되고 해당 onConfigurationChanged() 메서드가 호출됩니다.
참고: 이 속성은 피해야 하며 최후의 수단으로만 사용해야 합니다. 구성 변경으로 인한 재시작을 적절하게 처리하는 방법에 대한 자세한 내용은 런타임 변경 처리를 읽어보세요.
이 속성에 설정할 수 있는 항목은 다음과 같습니다. 일반적으로 사용되는 항목은 다음과 같습니다.
android:theme
는 상위 구성 요소에 제공되는 이름-값 쌍인 추가 데이터 항목을 지정합니다. 이러한 데이터는 PackageItemInfo.metaData 필드에서 사용할 수 있는 번들 개체를 형성합니다. 여러 개의
이 요소에는 세 가지 속성이 있습니다.
android:name
데이터 항목 이름, 고유한 값입니다.
android:resource
리소스에 대한 참조입니다.
android:value
데이터 항목의 값입니다.
는 이 활동을 시작할 수 있는 인텐트(의도)를 지정합니다. 이 요소에는 여러 하위 요소가 포함될 수 있습니다. 먼저 우리가 만난 두 가지를 소개하겠습니다.
는 활동이 어떤 작업으로 시작되었는지 나타내고, android.intent.action.MAIN은 해당 활동이 기본 활동으로 시작되었음을 나타냅니다.
이것은 action 요소의 추가 카테고리 정보입니다. android.intent.category.LAUNCHER는 이 활동이 현재 애플리케이션에서 가장 높은 우선순위 활동임을 나타냅니다.
더 많은 프로그래밍 관련 지식을 보려면 프로그래밍 배우기를 방문하세요! !
위 내용은 AndroidManifest.xml의 기능을 간략하게 설명해주세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!