>일반적인 문제 >AndroidManifest.xml의 기능을 간략하게 설명해주세요.

AndroidManifest.xml의 기능을 간략하게 설명해주세요.

青灯夜游
青灯夜游원래의
2020-11-25 14:21:5920115검색

기능: 1. 앱의 패키지 이름을 설명합니다. 2. 앱에서 사용하는 Android 시스템의 버전 ​​정보를 설명합니다. 3. 동일한 앱의 두 버전에 대해 앱 자체의 버전 정보를 설명합니다. 시스템은 어느 것이 새 버전인지, 이전 버전인지 구분할 수 있습니다. 4. 애플리케이션에 의해 노출되는 구성 요소를 설명합니다.

AndroidManifest.xml의 기능을 간략하게 설명해주세요.

우리 모두는 앱을 개발할 때 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 및 패키지 속성을 지정해야 합니다.

xmlns:android

요소의 속성은 Android 네임스페이스를 정의합니다. "http://schemas.android.com/apk/res/android"로 설정되어야 합니다. 수동으로 수정하지 마세요.

package

완전한 Java 언어 스타일 패키지 이름입니다. 패키지 이름은 영문자(대소문자 모두), 숫자, 밑줄로 구성됩니다. 각 개인의 이름은 문자로 시작해야 합니다. APK를 빌드할 때 빌드 시스템은 이 속성을 사용하여 두 가지 작업을 수행합니다.

  • 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(Activity 클래스의 하위 클래스)를 선언합니다. 이는 요소의 필수 하위 요소입니다. 모든 활동은 매니페스트 파일의 요소로 표시되어야 합니다. 선언되지 않은 활동은 시스템에 표시되지 않으며 실행되지 않습니다.

android:name

Activity 클래스의 하위 클래스인 Activity 클래스의 이름입니다. 특성 값은 com.sample.teapot.TeapotNativeActivity와 같은 완전한 클래스 이름입니다. 편의상 첫 번째 문자가 점('.')인 경우 요소에 패키지 이름을 추가해야 합니다. 앱이 게시된 후에는 이름을 변경하면 안 됩니다.

기본값은 없으며 이름을 지정해야 합니다.

android:label

사용자가 읽을 수 있는 활동 라벨입니다. 이 라벨은 활동이 활성화되면 화면에 표시됩니다. 설정하지 않으면 의 label 속성이 사용됩니다. 속성 설정에 대한 요구 사항은 과 동일합니다.

android:configChanges

활동이 자체적으로 처리할 구성 변경 메시지를 나열합니다. 런타임 시 구성 변경이 발생하면 기본적으로 활동이 닫히고 다시 시작되지만 이 속성으로 구성을 선언하면 활동이 다시 시작되지 않습니다. 대신 활동은 계속 실행되고 해당 onConfigurationChanged() 메서드가 호출됩니다.

참고: 이 속성은 피해야 하며 최후의 수단으로만 사용해야 합니다. 구성 변경으로 인한 재시작을 적절하게 처리하는 방법에 대한 자세한 내용은 런타임 변경 처리를 읽어보세요.

이 속성에 설정할 수 있는 항목은 다음과 같습니다. 일반적으로 사용되는 항목은 다음과 같습니다.

  • orientation
    걱정하지 마세요. 화면이 변경되었습니다. 예를 들어 사용자가 기기를 회전하는 경우
  • keyboardHidden
    The 사용자 디스플레이 하드웨어 키보드
  • android:launchMode
    액티비티 실행 방법 안내 등 키보드 접근성 기능이 변경되었습니다. 총 4가지 명령이 있습니다:
    "standard"
    "singleTop"
    "singleTask"
    "singleInstance"
    standard 기본적으로. 이러한 모드는 두 가지 범주로 구분됩니다. "표준"과 "singleTop"은 하나의 범주입니다. 이 모드의 활동은 여러 번 인스턴스화될 수 있습니다. 인스턴스는 모든 작업에 속할 수 있으며 활동 스택의 어느 위치에나 위치할 수 있습니다. "singleTask"와 "singleInstance"는 동일한 클래스입니다. 이 모드는 항상 활동 스택의 루트에 있는 작업만 시작할 수 있습니다. 또한 장치는 한 번에 하나의 활동 인스턴스만 보유할 수 있습니다.
    singleTask로 설정한 후 시스템은 새 작업의 루트에 Activity를 생성하고 여기에 Intent를 보냅니다. Activity 인스턴스가 이미 존재하는 경우 시스템은 새 Activity 인스턴스를 생성하는 대신 인스턴스의 onNewIntent() 메서드를 호출하여 Intent를 해당 인스턴스로 전송합니다.

android:theme

의 테마와 비슷하게 테마 형식을 설정하세요.

요소

는 상위 구성 요소에 제공되는 이름-값 쌍인 추가 데이터 항목을 지정합니다. 이러한 데이터는 PackageItemInfo.metaData 필드에서 사용할 수 있는 번들 개체를 형성합니다. 여러 개의 요소 태그를 사용할 수 있지만 이는 권장되지 않습니다. 지정해야 할 데이터 항목이 여러 개인 경우 권장되는 접근 방식은 여러 데이터 항목을 하나의 리소스로 결합한 다음 를 사용하여 포함하는 것입니다.

이 요소에는 세 가지 속성이 있습니다.

  • android:name

    데이터 항목 이름, 고유한 값입니다.

  • android:resource

    리소스에 대한 참조입니다.

  • android:value

    데이터 항목의 값입니다.

요소

는 이 활동을 시작할 수 있는 인텐트(의도)를 지정합니다. 이 요소에는 여러 하위 요소가 포함될 수 있습니다. 먼저 우리가 만난 두 가지를 소개하겠습니다.

요소

는 활동이 어떤 작업으로 시작되었는지 나타내고, android.intent.action.MAIN은 해당 활동이 기본 활동으로 시작되었음을 나타냅니다.

요소

이것은 action 요소의 추가 카테고리 정보입니다. android.intent.category.LAUNCHER는 이 활동이 현재 애플리케이션에서 가장 높은 우선순위 활동임을 나타냅니다.

더 많은 프로그래밍 관련 지식을 보려면 프로그래밍 배우기를 방문하세요! !

위 내용은 AndroidManifest.xml의 기능을 간략하게 설명해주세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.