CHAP 11. 리소스와 보안
리소스 리소스(resource)란 이미지, 문자열, 레이아웃, 동 영상 파일 등을 의미한다. 리소스는 특별하게 이름 지어진 리소스 디렉토리에 모여 있어야 한다.
리소스의 예
리소스의 종류 디렉토리 리소스 타입 anim/ 트윈 애니메이션을 정의하는 XML 파일, color/ drawable/ 비트맵 파일(.png, .9.png, .jpg, .gif)이나 다음과 같은 리소스 타입 으로 컴파일되는 XML 파일 layout/ 사용자 인터페이스 레이아웃을 정의하는 XML파일 menu/ 애플리케이션 메뉴를 정의하는 XML 파일 raw/ 시스템에 의하여 압축되지 않는 원본 파일. values/ 단순한 값을 정의하는 XML파일, 문자열, 정수, 색상 등이 여기에 해당된다. xml/ 실행 시간에 Resources.getXML()을 호출하여서 읽을 수 있는 XML파일 .XML 구성(configuration) 파일은 여기에 저장되어야한다.
기본 리소스와 대체 리소스 기본 리소스(default resource) 대체 리소스(alternative resource) 장치 구성과 상관없이 기본적으로 사용되는 리소스이다. 대체 리소스(alternative resource) 대체 리소스는 특정한 장치 구성을 위하여 설계된 리소스이다.
기본 리소스와 대체 리소스
대체 리소스를 제공하는 방법 기본 디렉토리 이름에 특정한 장치 구성의 이름을 붙인 디렉토리에 리소스들이 저장
리소스 참조 R 클래스
참조 방법 코드에서 참조 XML에서 참조
리소스 수식자
리소스 수식자
리소스 탐색 과정 #1 리소스 장치구성 drawable/ drawable-en/ drawable-en-port/ drawable-en-notouch-12key/ drawable-port-ldpi/ drawable-port-notouch-12key/
리소스 탐색 과정 #2 리소스 장치구성 drawable/ drawable-en/ drawable-en-port/ drawable-en-notouch-12key/ drawable-port-ldpi/ drawable-port-notouch-12key/
지역화 문자열이나 통화, 이미지 같은 여러 가지 리소스들 을 사용자가 있는 지역에 따라 변경하는 것
예제 설정된 지역에 맞추어서 관광 명소의 이미지를 화면 에 표시한다. 한국, 미국 만을 지원하도록 작성
레이아웃 파일 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" > <TextView android:layout_height="wrap_content" android:gravity="center_horizontal" android:text="@string/text"/> <ImageView android:id="@+id/ImageView01" android:layout_width="wrap_content" android:src="@drawable/image"/> </LinearLayout>
리소스 작성
XML 파일 작성
지역 변경 방법
실행 결과
보안 안드로이드에서도 애플리케이션이 마음대로 시스템 이나 다른 애플리케이션을 건드릴 수 있다면 심각한 위협 안드로이드에서도 애플리케이션이 마음대로 시스템 이나 다른 애플리케이션을 건드릴 수 있다면 심각한 위협 안드로이드에서 각 애플리케이션은 자신의 프로세 스 안에서 실행 다른 애플리케이션을 건드릴 수 없다.-> Sandboxing
애플리케이션 서명(Application Signing) 모든 안드로이드 애플리케이션(.apk 파일)은 인증서 로 서명 인증서는 애플리케이션의 작성자를 식별
권한 요청하기 만약 애플리케이션이 보호된 기능이나 장치 안의 데 이터에 접근하려면 AndroidManifest.xml 파일에 필 요한 권한을 표시 태그 <uses-permission>를 사용 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="kr.co.company.PermissionTest" android:versionCode="1" android:versionName="1.0"> ... <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> </manifest>
권한의 종류
예제 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="kr.co.company.PermissionTest" android:versionCode="1" android:versionName="1.0"> .. <uses-permission android:name="android.permission.READ_CALENDAR"></uses- permission> <uses-permission android:name="android.permission.READ_CONTACTS"></uses- permission> </manifest>