AndroidManifest.xml

-- Android 2014. 9. 22. 10:06
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

versionCode

다 른 버전과 상대적인 값을 나타내는 정수형 값입니다. 이 값은 정수형으로 선언되기 때문에 프로그램상에서 현재의 버전이 더 높은 버전인지 또는 낮은 버전인지 확인이 가능합니다. 새로운 버전의 어플리케이션을 업데이트 할때 이 숫자를 증가시켜주면 됩니다.

일 반적으로 첫번째버전의 코드는 1로 정하시면 되고, 메이저 업데이트인지 마이너 업데이트인지 상관없이 2,3,4,5 식으로 업데이트 될때마다 증가시켜주면 됩니다. 이 값은 사용자에게 보여지는 값은 아니며 시스템적으로 버전의 업데이트 여부를 확인하는 용으로 사용됩니다.


versionName

이 값은 사용자에게 보여지는 버전의 정보입니다. 버전을 표시하는 형태는 그 어떠한 형태로 무관합니다.
이 값은 시스템상에서 어떠한 내부의 목적으로 사용하지 않고 사용자에게 보여주기 위해 사용되는 값입니다.보통 <major>.<minor>.<point> 와 같은 형식의 문자열을 사용하기도 합니다.


minSdkVersion(Minimum required SDK)

앱 에서 지원하는 최소 SDK 버전을 말한다.  minSdkVersion을 확인하여, 이 숫자보다 낮은 버전의 안드로이드 프레임워크가 설치된 단말에는 설치되지 않는다. 앱 개발자에게는 (가능하다면) 많은 단말을 지원하는 것이 당연히 좋다. 그러기 위해서는 minSdkVersion을 낮게 써야 할 것이다.

하지만, 버전이 높은 SDK일 수록 더 안정적이고 좋은 기능을 제공하기 때문에, 낮은 버전을 지원하려 무리하기 보다는 자신이 서비스를 제공하고자 하는 단말군과 기능을 보고 결정하면 되겠다.

API 10 (Ginger Bread 2.3.x)이상의 단말이 현재 98.9%이므로, API 10 이상의 단말만 지원한다면 (거의) 모든 안드로이드 버전을 지원한다고 생각해도 좋다. 이 수치는 구글에서 (매 달) >통계를 내고 있다.

주 의할 점은, minSdkVersion 속성은 꼭 선언해야 한다. 선언하지 않은 경우, 구글 플레이 스토어에서 기본 값을 ‘1’로 판단한다. 그래서 지원하려 하지 않았던 단말(예를 들면, Android API 버전이 매우 낮은 단말)에서도 노출이 될 수 있다.


targetSdkVersion(Target SDK)

targetSdkVersion 에는 개발자가 앱을 만들 때 테스트 해본 버전의 가장 높은 숫자를 일반적으로 적으라 한다. minSdkVersion과 maxSdkVersion은 단말에 설치될 때 영향을 미치는 속성이라면, targetSdkVersion은 앱이 실행될 때 영향을 미친다.

만약 단말의 안드로이드 버전이 target SDK과 같다면 이미 테스트가 완료되었으니, 호환성 검사를 할 필요가 없다고 프레임워크가 판단한다. 만약 안드로이드 프레임워크의 버전이 targetSdkVersion보다 높다면, 앱을 만든 개발자가 테스트할 당시 예상했던 대로 움직이도록 호환성(compatibility) 모드로 동작한다.

예를 들어보자. 안드로이드의 기본 테마가 API 11부터  홀로(Holo) 테마로 바뀌었다. 사용자가 TargetSdkVersion을 10으로 적는다면, 11이상의 단말에서 앱이 실행되더라도 기본 테마를 홀로가 아닌 투박한 모드로 실행한다.

또 다른 예는, API 9까지는 메인 스레드에서도 네트워크 통신을 할 수 있었다. API 10 이상부터는 메인 스레드에서 네트워크 통신을 시도하면, 앱이 종료된다. 하지만, TargetSdkVersion을 9로 적는다면 앱이 종료되지 않는다.

그 럼 필요에 따라 TargetSdkVersion을 마음대로 적으면 되는 것 아닐까? 개발 시 최대한 최신 버전까지 테스트를 한 후에 가장 큰 값을 적는 것이 좋다.  처음에 말 했듯이 TargetSdkVersion은 앱의 실행에 영향을 미치고, 대부분 높을 수록 안전하다. 또한, 실행에 큰 영향을 미치는 기능 위주로 하위호환성이 보장되지 모든 기능에 보장되는 것은 아니다.

참고로, targetSdkVersion을 작성하지 않을 경우 minSdkVersion과 같은 값이라고 판단한다.


debuggable

<application
     ....
    android:debuggable="false">
     ....
</application>

컴퓨터와 연결된 단말기에서 앱을 실행하면 LogCat에 디버깅 정보들이 표시되게 되는데, debuggable="false"로 지정을 하면 디버깅 정보들이 LogCat에 표시되지 않는다.

앱을 배포할 때 보통 false로 지정하며, debuggable을 지정하지 않는다면, 기본값은 true이다.



참고 : http://trend21c.tistory.com/1406
참고 : http://sunphiz.me/wp/archives/531

posted by 어린왕자악꿍