본문 바로가기

어플리케이션 구성/AndroidManifest.xml

메니페스트 에디터 활용 - 구성요소, 권한 추가 및 외부 라이브러리 사용

이번 강좌에서는 이클립스의 안드로이드 플러그인 (ADT)에서 제공하는 메니페스트 에디터를 통해 어플리케이션의 구성요소 (액티비티, 서비스, 브로드캐스트 리시버, 컨텐트 프로바이더)를 추가하는 방법과 어플리케이션에서 사용할 권한을 추가하는 방법, 그리고 구글맵 서비스 등을 사용하기 위해 외부 라이브러리 사용하도록 정의하는 방법에 대하여 알아보도록 하겠습니다.

어플리케이션 구성요소 추가

어플리케이션 구성요소의 추가는 메니페스트 에디터의 Application 탭 - Application Nodes에서 수행합니다.

메니페스트 에디터의 Application 탭. 좌측 하단의 Application Nodes 에서 어플리케이션 구성요소의 추가/삭제가 가능합니다.


여기에서는 어플리케이션의 대표적 구성요소인 액티비티를 추가해보도록 하겠습니다.
Add... 버튼을 누르면, 아래와 같은 화면이 나옵니다.


추가할 수 있는 여러 가지 항목이 표시됩니다. Activity 를 선택한 후, OK 버튼을 누릅니다.


위와 같이 Application Nodes에 새로운 액티비티가 추가됨과 동시에, 해당 액티비티의 속성(Attributes)를 지정하는 화면이 오른쪽에 표시됩니다. 아직은 메니페스트 파일에 새로운 액티비티의 "뼈대"만 추가했을 뿐, 실제로 이 액티비티의 클래스조차 생성이 되어 있지 않은 상태입니다. 

이 액티비티의 클래스를 추가해주기 위해 속성 화면의 Name* 을 클릭합니다.


위와 같이 새로운 클래스를 추가하는 화면이 표시됩니다. 
이름에 적절한 이름을 선택해주신 후, Finish 버튼을 누르면 새로운 액티비티가 생성됩니다.



인텐트 필터 추가하기

위에서 새로운 액티비티를 생성하였지만, 저 상태에서는 호출할 대상을 명확하게 지정한 인텐트인 명시적 인텐트 (Explicit Intent)만이 해당 액티비티를 호출 할 수 있습니다. 하지만, 지금은 액티비티에 인텐트 필터가 추가되어 있지 않기에 다른 어플리케이션에서 이 액티비티를 호출할 수 있는 인텐트인 암시적 인텐트(Implicit Intent)를 받을 수 없습니다.

암시적 인텐트를 받을 수 있도록 하기 위해서는 액티비티에 인텐트 필터를 추가하여야 합니다. 여기에서는 com.androidhuman.action.TEST_ACTION 이라는 액션(Action)을 갖는 인텐트를 받을 수 있는 인텐트 필터를  추가해보도록 하겠습니다. 이 과정은 액티비티 뿐만 아니라 브로드캐스트 리시버, 서비스에도 동일하게 적용됩니다.

Application Nodes 화면에서 인텐트 필터를 추가할 구성요소를 선택한 후, Add.. 버튼을 누릅니다.


아래와 같이 해당 구성요소의 하위 요소로 추가할 항목들이 표시됩니다. Intent Filter를 선택합니다.


인텐트 필터가 추가되었습니다. 이제 해당 인텐트 필터라 처리할 액션(Action)을 지정해주어야 합니다.
인텐트 필터를 선택한 상태에서 다시 Add... 버튼을 누릅니다.


아래와 같이 액션(Action), 카테고리(Category), 데이터(Data)의 구성요소를 추가할 수 있습니다. 우선, 액션을 선택합니다.


액션이 추가되고, 오른쪽에 액션의 이름을 지정하는 속성 창이 표시됩니다. 여기에 우리가 처리할 액션의 이름인 com.androidhuman.action.TEST_ACTION을 넣어줍니다.


아직 한 단계가 더 남았습니다. 암시적 인텐트를 처리하려면 액션 뿐만 아니라 CATEGORY_DEFAULT(android.intent.category.DEFAULT) 카테고리도 정의되어 있어야 합니다. 이 카테고리가 정의되어 있지 않다면 암시적 인텐트를 받을 수 없습니다. Intent Filter를 선택한 후, 액션을 추가하는 과정과 동일하게 이번에는 Category를 추가합니다.


이것으로, 우리가 새로 만든 액티비티가 com.androidhuman.action.TEST_ACTION이라는 액션을 가진 인텐트를 받을 수 있게 되었습니다. 다른 컴포넌트, 혹은 다른 어플리케이션에서 이 액티비티를 호출하기 위해서는 아래와 같이 해주면 됩니다.

	    Intent intent = new Intent("com.androidhuman.action.TEST_ACTION");
	    startActivity(intent);


권한 추가

안드로이드에서 특정 기능이나 데이터베이스에 접근하려면 그에 해당하는 권한이 필요합니다. 인터넷을 사용, 주소록 접근 등등이 예가 될 수 있죠. 

권한 추가는 Permissions 탭에서 할 수 있습니다. 메니페스트 에디터의 Permissions 탭을 클릭합니다.


어플리케이션에서 사용할 권한을 추가하기 위해 Add.. 버튼을 클릭합니다.


Uses Permission으 클릭한 후, OK 버튼을 누르면 오른쪽에 어떤 권한을 사용할 지 선택할 수 있는 속성 창이 표시됩니다. 여기에서 자신의 어플리케이션에서 필요한 권한을 골라 선택하면 됩니다. 아래에서는 주소록의 데이터를 읽을 수 있는 권한인 READ_CONTACTS 권한을 사용하도록 설정하였습니다.



외부 라이브러리 사용

구글맵 라이브러리 등 안드로이드 표준 라이브러리 외에 다른 라이브러리를 사용한다면, 그 라이브러리를 사용한다는 것도 메니페스트 파일에 정의해 주어야 합니다. 

라이브러리 사용 선언은 Application 탭 - Application Nodes 화면에서 할 수 있습니다. Add.. 버튼을 눌러줍니다.


위의 Create a new element at the top leve, in Application을 선택한 후, Uses Library를 선택하면 아래와 같이 Application Nodes에 Uses Library 항목이 추가되면서 속성 창이 오른쪽에 표시됩니다. 아래에서는 구글맵 라이브러리를 사용하도록 설정하였습니다.