[Android] AndroidManifest.xml

Sooooooah·2023년 4월 25일
0

플러터

목록 보기
1/7

얼마전부터 플러터 공부를 시작하였다. 앱 개발은 완전 처음이라 모든 코드를 낱낱이 맛보고 있는 중. 매우 신난다.

스플래시 스크린이라던가, 웹뷰라던가 설정을 하다보니 매니페스트 파일에서 모든 코드가 시작되는 것 같아 해당 파일이 무엇인지 좀 더 알고 싶어 문서로 정리하려한다.

  • 앱의 필수 구성요소
  • 각 구성요소가 처리할 수 있는 기기 구성의 종류, 그리고 구성요소가 어떻게 시작되는지 설명하는 인텐트 필터와 같은 기능을 선언
  • 앱이 시스템 또는 다른 앱의 보호된 부분에 액세스하기 위해 필요한 권한, 또한 다른 앱에서 이 앱의 콘텐츠에 액세스하려는 경우 보유해야 하는 모든 권한을 선언

매니페스트 파일에서 정의되는 3가지

  1. 앱의 고유한 식별자인 패키지명
  2. 안드로이드 앱에서 필요한 권한
  3. 안드로이드 구성요소 (Activity, Service, Broadcast Recevicer, ContentProvider)

패키지명 선언

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.web_view">

java의 네임스페이스 === 패키지명

안드로이드 빌드 도구(Gradle)는 이 값을 패키지의 경로로 인식하여 해당 경로를 기본 경로로 사용한다.

안드로이드 앱에서 필요한 권한

앱을 구동하기 위해 꼭 필요한 권한을 선언한다.

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />

앱에 필요한 하드웨어 및 소프트웨어 기능을 선언한다.

<uses-feature android:name="android.hardware.sensor.compass" android:required="true" />

앱이 호환되는 최소버전을 선언한다.

<uses-sdk android:minSdkVersion="15" android:targetSdkVersion="26" />

안드로이드 구성요소

안드로이드의 4대 컴포넌트를 선언한다.

Activity -> activity
Service -> service
BroadcastReceiver -> receiver
ContentProvider -> provider

// AndroidManifest.xml
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:versionCode="1"
    android:versionName="1.0">
    
    <!-- Beware that these values are overridden by the build.gradle file -->
    <uses-sdk android:minSdkVersion="15" android:targetSdkVersion="26" />
    
    <!-- 안드로이드 앱에서 인터넷에 접속할 수 있도록 허용 -->
    <uses-permission android:name="android.permission.INTERNET"/>
    <!-- 애플리케이션이 패키지 설치를 요청할 수 있도록 허용 -->
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />

	<queries>
    	<!-- If your app opens https URLs -->
        <intent>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="https" />
        </intent>
    </queries>
    
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <!-- This name is resolved to com.example.myapp.MainActivity
             based on the namespace property in the build.gradle file -->
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity
            android:name=".DisplayMessageActivity"
            android:parentActivityName=".MainActivity" />
            
        <service android:description="string resource"
             android:directBootAware="true"
             android:enabled="true"
             android:exported="true"
             android:foregroundServiceType="camera"
             android:icon="drawable resource"
             android:isolatedProcess="true"
             android:label="string resource"
             android:name="string"
             android:permission="string"
             android:process="string" >
    	</service>    
            
        <receiver android:directBootAware="true"
                android:enabled="true"
                android:exported="true"
                android:icon="drawable resource"
                android:label="string resource"
                android:name="string"
                android:permission="string"
                android:process="string" >
      	</receiver>	
        
        <provider android:authorities="list"
                android:directBootAware="true"
                android:enabled="true"
                android:exported="true"
                android:grantUriPermissions="true"
                android:icon="drawable resource"
                android:initOrder="integer"
                android:label="string resource"
                android:multiprocess="true"
                android:name="string"
                android:permission="string"
                android:process="string"
                android:readPermission="string"
                android:syncable="true"
                android:writePermission="string" >
      </provider>
    </application>
</manifest>

참고자료
https://developer.android.com/guide/topics/manifest/manifest-intro?hl=ko

profile
즐거운 서비스를 추구합니다.

0개의 댓글