소프트웨어개발/Android 12

NotificationManager 안드로이드 타겟 33 이상 권한 문제

기존에 잘 사용하던 로컬 알림이 안드로이드13 (API 레벨 33)을 타겟으로 빌드하니 작동하지 않습니다. 이유를 검색해 보니, 안드로이드 13에서는 노티피케이션을 위한 매니페스트 권한과, 유저에게 런타임 권한을 얻어야 사용이 가능합니다. 먼저 AndroidManifest.xml 에 노티피케이션 권한을 선언합니다. 런타임에서 POST_NOTIFICATIONS 의 권한을 사용자로부터 받았는지 확인하고, 받지 않았다면, 권한을 요청합니다. if (ContextCompat.checkSelfPermission (this, Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED) { // 권한을 이미 얻었습니다. } else { v..

[안드로이드] EditText 모양 바꾸기 및 선택시 모양 변경

안드로이드에서 EditText 의 모양을 바꾸고 싶을 때가 많습니다. 최근의 안드로이드에서는 EditText의 기본적인 모양이 테마에 의해 일반적으로 언더바 형태이죠. 여기서는 약간 코너에 라운드가 있는 사각형의 모양으로 바꿀겁니다. 또한 선택되었을 때 (포커스가 잡혀 있을때) 사각형의 색상도 바꿔줄 것입니다. (변경전) (변경후) 1. res/drawable 에 xml 파일 하나 추가 res/drawable 에 EditText의 모양을 지정할 적당한 이름의 xml 파일을 추가합니다. 여기서는 edittext_rounded_corner_rectangle.xml 이라고 하겠습니다. 2. 아래의 샘플과 같은 요령으로, 원하는 형태의 EditText 형태를 작성합니다. 3. 모양의 변경을 원하는 EditTex..

[안드로이드] 프로젝트 이름 바꾸기 (패키지 이름 변경 포함)

프로젝트를 진행하다 보면, 프로젝트 이름과 패키지 이름을 바꾸어야 할 필요가 생기기도 합니다. 처음부터 잘 지어서 변경할 일이 없다면 좋겠지만, 어쩔수 없는 경우도 있죠. 개발툴이 한번에 쉽게 프로젝트 이름을 바꿀 수 있게 해 주면 좋을텐데, 이상하게도 개발 툴들이 이쪽에는 인색합니다. 이 글에서는 안드로이드 프로젝트 (안드로이드 스튜디오 프로젝트)의 이름을 바꾸는 방법을 알아보겠습니다. (패키지 이름을 변경하는 것을 포함합니다.) 구글을 검색해보면 프로젝트 이름과 패키지 이름을 바꾸는 다양한 방법이 제시되어 있지만 잘 안되는 경우가 많습니다. 아래에는 다양한 방법중 깔끔하게 성공한 케이스의 방법을 적어 둡니다. 참고로 테스트 환경은, MacOS Mojave 10.14.4Android Studio 3.3..

[안드로이드] java.lang.ClassNotFoundException ad.loadClass 비정상 종료 해결하기

올해들어 갤럭시 시리즈가 안드로이드 9 (파이)로 업데이트 되고 있습니다.저는 가능한한 매일 Play Console 앱에서 구글플레이에 올려 놓은 앱의 상태를 확인하고 있는데요...제 앱 하나가 평소에 비정상 종료가 거의 없던 앱인데 최근 72시간 내에 비정상 종료 수가 5건이나 있다고 나타납니다.내용을 자세히 살펴보니, Android 9 버전에서 구동된 앱의 ad.loadClass 에서 java.lang.ClassNotFoundException 예외가 발생했다고 하네요.ad.loadClass 이면 애드몹에서 발생한 것으로 보여집니다. 인터넷을 검색해 보니 해결 방법은 의외로 간단합니다.아래 내용을 AndroidManifest.xml 의 application 태그 안에 추가해 줍니다. 일단 API Lev..

안드로이드 스플래시 스크린 만들기

스플래시 스크린 (Splash screen) 이란 프로그램(앱)이 실행될때 잠시 나타나는 화면을 말합니다. 다른 말로는 런치 스크린 또는 로고 화면이라고 부르는 분들도 있습니다. 개발자들은 각자 안드로이드에서 여러가지 방법으로 스플래시 스크린을 만듭니다. 대체로 많이 쓰는 방법이 스플래시 액티비티를 만드는 방법입니다. 물론, 로딩이 필요한 앱들은 스플래시 액티비티에서 로딩까지 처리한 다음에 메인 액티비티로 넘어가게 하는 방법을 많이 사용할 것입니다. 하지만, 로딩이 그다지 필요하지 않은 경우에 스플래시 액티비티를 일반 액티비티를 만드는 방법대로 만든다면, 처음에 앱이 실행되면서 빈 공백의 흰색 또는 검정색의 화면 후에 스플래시 화면이 잠깐 뜨고 (임의로 지정된 시간동안 띄운다면) 사용자의 시간만 뺏는 경..

안드로이드 액티비티 애니메이션 없애기

[테스트 환경]기기 OS : Android 8타겟 SDK : API Level 27 안드로이드에서 액티비티를 띄울때, 그리고 없앨때 자동으로 애니메이션이 붙습니다. OS 버전에 따라 차이가 있는데, 페이드 인/아웃 애니메이션을 보여 줄 때도 있고, 좌우로 나타났다 사라지는 경우도 있습니다. 페이드 인/아웃의 경우는 대체로 문제가 되지 않는데, 좌우로 슬라이딩 되며 나타났다 사라지는 경우는, 팝업 용도의 액티비티와 같은 어울리지 않아 어색한 경우가 있습니다. 따라서 이런 경우는 전환 애니메이션을 작동하지 않도록 할 수 있습니다. 검색해 보면 다양한 방법이 소개되어 있지만, 여기서는 코드를 통해 간단하게 애니메이션을 제거해 보겠습니다. (1) 액티비티를 띄울때 애니메이션 없애기 액티비티를 시작하기 위한 인텐..

맥에서 안드로이드 무선 디버깅 2 - 플러그인을 사용한 방법

지난 글에서는 맥에서 안드로이드 무선 디버깅을 하는 가장 기본적인 방법을 살펴보았습니다. 하지만, 일일이 재부팅 할 때 마다 ADB명령을 터미널에서 입력하는 것은 번거롭게 느껴집니다. 이번에는 안드로이드 스튜디오에서 좀 더 간편하게 무선 디버깅을 하도록 설정 할 수 있는, 플러그인을 사용하는 방법을 살펴봅니다. >> 테스트 환경

맥에서 안드로이드 무선 디버깅 1 - ADB를 이용한 방법

안드로이드 개발을 하다 보면, 선 연결 없이 개발을 하고 싶을 때가 많습니다.요즘은 무선 시대라고 할 만큼 컴퓨팅도 무선으로 하고 있죠. 무선 마우스, 무선 키보드, 무선 이어폰 등등...선이 많으면 책상 위도 복잡해지고 보기가 좋지 않네요. 여하튼 안드로이드 개발 툴에서도 USB연결 없이 무선으로 디버깅 하는 것이 가능합니다.단, 그래도 USB케이블은 계속 가지고 있어야 합니다. 개발용 컴퓨터를 켤 때 마다 한번은 USB를 연결한 상태에서 세팅을 해야 하니까요. 지금 소개할 방법은 안드로이드 개발 툴에서 기본적으로 지원하는 ADB를 통한 무선 디버깅 (와이파이 연결) 방법입니다. (사실 터미널을 이용해야 하기 때문에 불편한 점이 있기는 합니다. 다음 글에서는 편하게 할 수 있는 방법을 소개 합니다.) ..

구글 플레이 스토어 등록 어떻게? 2편 - 키스토어 생성과 릴리즈 빌드 하기 (안드로이드 스튜디오 사용)

이번 시간에는 지난 1편에 이어, 실제로 릴리즈 빌드를 해보도록 하겠습니다. 안드로이드 스튜디오 1.1.0 기준으로 설명합니다. (안드로이드 스튜디오 1.0 출시 이후부터 구글에서는 이클립스 지원을 중단했다는 것 알고 계시죠? 제가 쓰는 Cocos2d-x는 아직 이클립스인데...ㅠㅠ 앱 개발은 안드로이드 스튜디오를 쓰고 게임 개발은 이클립스를 쓰는 난처한 상황이 벌어지네요...) 또한 개발 플랫폼은 MacOS X 10.10에서 작업하였음을 미리 알려드립니다. 1. 릴리즈 빌드용 키스토어 파일 생성 (인증서 만들기) 안드로이드 앱은 개발중인 디버그 모드 이든 배포를 위한 릴리즈 모드 이든지 간에 서명을 하게 됩니다. 다만 디버그 모드일 때는 Android SDK가 개발용 인증서를 생성해서 서명을 하기 때문..

구글 플레이 스토어 등록 어떻게? 1편 - 준비해야 할 것들

이번 글에서는 열심히 만든 안드로이드 앱을 구글 플레이 스토어에 등록하기 위해 필요한 절차를 설명합니다. 참고로, 릴리즈를 준비하는 방법에 대한 문서는, http://developer.android.com/intl/ko/tools/publishing/preparing.html 에서 자세히 살펴볼 수 있습니다. (언제나 그렇듯이 제작업체에서 제공하는 공식 문서는 항상 가까이 해야 합니다.) 이 글도 위 문서에 기초해서 꼭 필요하다고 생각 되는 것을 정리해 보겠습니다. (참고로 이 글은 위 문서의 번역본이 아닙니다. 따라서 위 문서에서 빠지는 내용도 많고, 위 문서에는 없는 내용도 있습니다.) 참고로, 이 글은 안드로이드 스튜디오 1.1.0 기준으로 쓰여졌습니다. 제작한 앱을 구글 플레이 스토어와 같은 스토..