이번 포스팅은 안드로이드 스튜디오로 제작한 프로젝트의 패키지명 변경하는 방법에 대해서 포스팅합니다. 앱을 제작하고 배포할 때 보통 구글 플레이 마켓에 등록을 하는데요. 저는 ONE 스토어에도 배포를 하고 있기 때문에 패키지명을 분리하여 업데이트하고 있습니다. 그럼 패키지명을 변경해보도록 하겠습니다. 패키지명 변경하는 방법 먼저 안드로이드 스튜디오 상단 톱니바퀴 버튼을 클릭하고 Compact Middle Package 가 체크되어 있는 부분을 해제합니다. 그럼 src > jave 폴더의 패키지명 폴더가 하나로 묶여 있는 부분이 분리되어 보입니다. 예를 들어 co.kr.app.app로 되어 있는 부분이 co > kr > app > app 이런 식으로 분리되는 것이죠. 여기서 패키지명을 변경하고 싶은 폴더에서..
해마다 안드로이드 스튜디오에서 apk 파일 업로드시 api 수준을 한단계씩 올리고 있습니다. 작년에는 28이었는데 올해는 29로 한단계 상승해서 높이도록 권장하고 있네요. 2020년 8월부터는 신규앱에 적용해야 하고 기존에 있던 앱을 업데이트하는 경우에는 11월부터 타겟팅해야합니다. 단, 29로 변경했을 시 발생하는 오류 또한 대응을 해야하는데요. 예를 들어 작년에 28로 변경했을 때 안드로이드8.0 기기에서 회전처리가 되어 있는 부분에서 문제가 발생했었습니다. 따라서 강제 타겟팅을 해야하는 이번과 같은 경우는 웬만하면 모든 기기를 테스트해서 문제가 없는지 확인해야합니다. api 수준 29로 변경하는 방법 먼저 안드로이드 스튜디오 상단 메뉴 Tools > SDK Manager로 이동합니다. SDK Pla..
안드로이드 앱 개발 시 firebase를 이용해서 구글 로그인을 구현하는 분들이 많으실 텐데요. firebase에서 SHA 인증서를 등록하기 위해 SHA 인증서 확인하는 방법에 대해서 포스팅합니다. SHA는 개발용과 배포용 두 가지를 등록해야 합니다. 참고로 윈도우에서 cmd창 (명령 프롬프트)을 이용해서 확인하는 방법입니다. SHA 개발용 1. 검색창에 cmd를 입력하고 명령 프롬프트를 실행합니다. 2. debug.keystore가 있는 .android 폴더로 이동해야 합니다. cd .android를 입력합니다. 3. keytool -list -v -keystore debug.keystore 를 입력합니다. 패스워드는 없으니 엔터를 눌러줍니다. 만약 keytool 명령어 오류가 생기면 아래 링크를 참고..
안드로이드 fragment에서 작업 시 다음과 같은 오류가 간간히 발생합니다. java.lang.NullPointerException 오류인데요. android.view.view android.app.activity.findviewbyid(int)' on a null object reference onCreateView에서 inflater 하기 전에 findViewById를 호출해서 생기는 문제인 것 같습니다. 100% 발생하는 것이 아닌 간헐적으로 발생하는 문제입니다. 코딩하면서 가장 애매한 순간이 바로 간헐적으로 발생하는 문제 같습니다. 사이클은 onCreateView -> onActivityCreated 순서로 진행하지만 간혹 inflater가 되기 전에 onActivityCreated가 호출되는 ..
안드로이드 스튜디오에서 프로젝트를 만들면 보통 구글 플레이 마켓이나 원스토어에 앱을 등록하게 됩니다. 이때 필요한 절차가 apk파일을 만들어서 배포를 해야 하는데요. apk 파일을 만들기 위해서는 인증서가 필요합니다. 인증서의 파일명은 *.jks로 되어 있습니다. 자 그럼 앱을 배포하기 위해 인증서와 배포용 apk 파일을 만들어 봅시다. 인증서 및 apk 파일 생성 1. 프로젝트를 띄우고 상단 안드로이드 스튜디오 메뉴 Build > Generate Signed Bundle /APK... 를 클릭합니다. 2. 하단 APK를 선택하고 Next를 클릭합니다. 참고로 앱을 배포하는 방식은 두가지인데, 상단에 Android App Bundle로 만들어서 배포하면 앱의 크기를 어느 정도 줄일 수 있어 구글에서 권장..
안드로이드 스튜디오에서 에뮬레이터 실행 중 간혹 발생하는 오류입니다. 안드로이드 SDK Tools에서 에뮬레이터와 관련된 tool이 설치되어 있지 않아서 발생하는데요. 필요한 tool을 업데이트하면 해결됩니다. emulator: process finished with exit code 1 SDK Tools 업데이트 방법 1. 상단 메뉴 Tools > SDK Manager를 실행합니다. 2. Android SDK 메뉴에서 SDK Tools 탭을 누릅니다. 3. 에뮬레이터와 관련된 Tool을 찾아 인스톨해줍니다. 이미 설치되어 있어도 최신 버젼으로 업데이트되지 않으면 발생할 수 있습니다. 아래는 에뮬레이터와 관련된 Tool입니다. Apply를 누르고 install 해주고 에뮬레이터를 실행합니다. Androi..
새로운 거래처와 SDK 연동 진행 중 안드로이드 스튜디오를 업데이트해야 하는 상황이 발생했다. 샘플 프로젝트가 4.0 버전을 쓰고 있었기 때문에 기기로 테스트를 할 수 없었다. 어쩔 수 없이 미루고 미뤄왔던 업데이트를 진행하게 되었다. 오랫동안 스튜디오 3.4 버전을 쓰고 있다가 이제 4.0으로 갈아탈 때가 온 것 같다. 그럼 업데이트하는 방법을 알아보자. 제발 업데이트되고 난 후 프로젝트 에러가 나오지 않기를 바랄 뿐이다. 안드로이드 스튜디오 4.0 업데이트 방법 1. 안드로이드 스튜디오 메뉴 Help > Check for Updates... 를 클릭합니다. 2. 변경되는 사항 확인 후 Update and Restart를 클릭합니다. 582MB나 됩니다. 3. 업데이트 도중 발생하는 문제들을 보여줍니다..
프로젝트 수정하다가 알게 된 색상 코드에 투명도를 적용하는 방법입니다. 보통 이미지 작업할 때 투명 이미지를 요청하고 전달받았는데 이번에는 xml에서 바로 색상 코드로 투명도를 적용해보았습니다. 예를 들어 팝업창을 띄울 경우 가운데 팝업창을 노출하고 뒷배경은 블랙에 투명도를 조절해서 보여주는 경우가 많습니다. 이것을 한번 색상 코드값으로 구현해 보겠습니다. 투명도에 따른 진수값 HEX 색상값은 16진수 rgb 코드로 #000000 (블랙) 형식으로 표기합니다. 여기서 앞 두 자리를 투명도에 따라 변경해주면 투명한 색상 코드를 얻을 수 있습니다. 아래는 투명도 비율과 진수 값입니다. 저는 블랙 색상 코드(#000000)에 투명도 70% (#B3000000)를 적용해서 종료 팝업을 구현했습니다. 아래 이미지..
작년 8월부터 구글에서 앱을 업데이트하기 위해서는 targetSdkVersion을 28 이상으로 해야 심사가 통과됩니다. 이에 발맞춰 기존에 쓰던 구글 라이브러리도 더 이상 업데이트되지 않는다고 합니다. 그래서 androidx를 사용하라고 권고하고 있는데요. 저도 안드로이드 x로 마이그레이션 하던 도중 기존에 있던 외부 라이브러리가 오류가 나는 바람에 미루고 있다가 이번에 다시 마이그레이션을 시도했습니다. 안드로이드 x 마이그레이션 하는 방법 1. 프로젝트 메뉴의 Refactor > Migrate to AndroidX를 클릭합니다. 2. 나오는 팝업창에서 Migrate를 클릭합니다. 상단에는 Zip 파일로 백업을 하는지 체크 유무를 선택할 수 있습니다. 나중에 다시 되돌릴 경우도 생길 수 있으니 백업하는..
액티비티 하단에 광고를 넣기 위해 작업 중 스크롤 뷰가 있는 레이아웃에서는 광고가 노출이 안 되는 현상이 발견되었다. 스크롤 뷰가 전체 레이아웃을 잡고 있어서 가려지던지 화면 아래에 노출이 되어서 보이지 않는 현상 같았다. 스크롤뷰 안에 넣게 되면 스크롤을 하단까지 해야 보이게 되므로 원하는 레이아웃이 아니었다. 스크롤 뷰에 영향을 받지 않고 무조건 하단에 광고를 넣기 위해서는 xml의 스크롤 뷰 속성에 다음을 추가하면 된다. 추가된 속성 android:layout_weight="1" layout_weight를 1로 주면 하단 LinearLayout뷰와 스크롤뷰가 영역을 1:1 비율로 맞춰지는 것이다. 전체 xml 소스
액티비티 시작 시 키보드 올리는 2가지 방법입니다. 액티비티에서 소스 코드 입력하는 방법과 매니페스트에서 설정하는 방법이 있습니다. 1. 액티비티에서 소스 추가하는 방법 private EditText ReplyEdit; ReplyEdit = (EditText)findViewById(R.id.reply_write_edit); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(ReplyEdit, 0); ReplyEdit는 EditText 변수명입니다. 단, 이렇게 하는 경우에도 키보드가 올라오지 않을 수 있습니다. 이유는 ReplyEdit의 커서가 포커싱이 되..
안드로이드 스튜디오 3.4.1로 업데이트 후 빌드를 할려고 하는데 RUN 버튼을 눌러도 아무 반응이 없네요. 밑에 오류창을 확인해 보니 Unable to locate adb 오류가 나서 찾아본 결과 안드로이드 platform-tools 폴더에 adb.exe 파일이 없어서 생기는 오류입니다. 제 폴더 구조는 C:\Users\user\AppData\Local\Android\Sdk\platform-tools 이렇게 되어있는데 폴더 찾아서 adb.exe 파일을 넣어주면 됩니다. adb.exe 파일 다운로드 주소입니다. https://developer.android.com/studio/releases/platform-tools#download SDK Platform Tools release notes | Andr..
Android AsyncTask Android AsynkTask 사용법입니다. 저는 통신할 때 위주로 사용합니다. 굉장히 유용하고 깔끔하게 처리가 되기 때문인데요. 시작, 실행, 종료 부분이 명확하게 구분이 되어 있어 사용하기 편리합니다.예제는 아래 소스코드와 같습니다. 네트워크 통신을 예로 설명하자면 onPreExecute : 로딩바 실행doInBackground : 통신 메소드 실행 (url 호출 후 파싱)onPostExecute : 통신 메소드 완료 후 파싱데이터 처리, 로딩바 제거 class pageSerch extends AsyncTask { @Override protected void onPreExecute(){ probar.setVisibility(View.VISIBLE); }@Overrid..