얼마전부터 플러터 공부를 시작하였다. 앱 개발은 완전 처음이라 모든 코드를 낱낱이 맛보고 있는 중. 매우 신난다.
스플래시 스크린이라던가, 웹뷰라던가 설정을 하다보니 매니페스트 파일에서 모든 코드가 시작되는 것 같아 해당 파일이 무엇인지 좀 더 알고 싶어 문서로 정리하려한다.
<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