일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 목서버
- 게임개발
- 안드로이드
- 코틀린
- 안드로이드개발
- 안드로이이드 submodule
- Android
- gitlab submodule
- GIT
- 카페오냥
- Android Studio
- 티스토리
- 앱
- 2d게임
- github submodule
- java
- 타이쿤
- 개발
- Unity
- firebase
- github
- 쿼터뷰
- DataBinding
- 앱개발
- Kotlin
- 유니티
- 내 맘대로 정리한 안드로이드
- 서브모듈 sourcetree
- submodule sourcetree
- 서브모듈 pull
- Today
- Total
목록Android (45)
Uing? Uing!!

ANR이란? 안드로이드 앱을 실행하다 보면 '어플리케이션이 응답하지 않는다'는 팝업 경고 메시지를 마주할 때가 왕왕 있다. 이런 경우의 오류를 ANR(Application Not Responding)이라고 부른다. ANR은 왜 발생하는가? ANR에 대한 안드로이드 공식 문서에 따르면, ANR은 다음과 같은 두 상황에 발생한다. 활동이 포그라운드에 있는 동안 앱이 입력 이벤트 또는 BroadcastReceiver(예: 키 누름 또는 화면 터치 이벤트)에 5초 이내에 응답하지 않았습니다. 포그라운드에 활동이 없을 때 BroadcastReceiver가 상당한 시간 내에 실행을 완료하지 못했습니다. 즉, 앱이 일정 시간 내에 이벤트에 응답하지 못해서 발생한다는 것. BroadcastReceiver가 이벤트에 응..

코드를 뜯어보고 싶어요 안드로이드 개발을 조금 하다 보면 같은 기능을 하는 코드이더라도 여러가지 방법으로 전개가 가능한 경우가 많다. 특히 자바에서 코틀린으로 넘어오면서 느낀 점 중 하나가 정말 다양한 방식의 코드를 간결한 문법으로 지원해준다는 점이다. 이건 코틀린의 큰 장점이지만, 공부를 하는 입장에서는 간혹 코드만 봐서는 성능 상에 어떤 차이가 있는지 알 수 없을 때가 있다. 'Kotlin의 이 문법은 Java에서는 어떤 방식으로 전개되는 거지?' '이 함수를 여기에 정의하면 전역 static으로 정의되는 건가?' 'Null-check를 이렇게 간결하게 하면 실제로는 어떤 방식으로 체크하는 걸까?' 등등의 의문은 Kotlin 코드를 좀 더 명확하게 표시된 Java 코드의 형태로 바꾸어 보는 것으로 해..

Layout Inspector 개발을 하다 보면, 코드만으로는 어디에서 문제가 발생했는지 확인하기 난해할 때가 있다. 이를테면 그려진 화면을 보니 ImageView를 그리는 과정에서 뭔가 오류가 난 것 같은데, 그게 단순히 width 값의 문제인지, 아니면 다른 속성값의 문제인지 확인이 필요하다거나 할 때. 이럴 때면 개발자 입장에서는 지금 눈으로 보고 있는 특정 View가 가지고 있는 값을 실시간으로 확인하고 싶을 수 있다. 안드로이드 스튜디오의 Layout Inspector는 바로 이런 기능을 제공한다. 사용법은 아주 간단하다. 아래처럼 Tools > Layout Inspector 로 레이아웃 인스펙터를 활성화 시켜주기만 하면 된다. 그러면 이렇게 스튜디오의 오른쪽 아래 부분에 레이아웃 인스펙터가 활..

사건의 발단 깃 브랜치를 옮겨 가면서 작업하고 있었는데, 어느 날 갑자기 빌드 에러가 떴다. No cached version listing for androidx.room:room-common:[2.2.0-rc01] available for offline mode. 오잉? 삽질의 과정 다시 한번 빌드도 해 보고, clean-rebuild도 해 보고, 스튜디오도 껐다 켜 보고, 브랜치도 다시 옮겨 보았지만, 똑같았다. 결국 아래 StackOverflow 답변을 참고하여 해결했다. stackoverflow.com/questions/22607661/no-cached-version-available-for-offline-mode 삽질의 결과 1. View -> Tool Windows -> Gradle 2. to..

소프트키와 화면 변화 EditText는 정말 빈번하게 사용되는 뷰이다. 이 EditText를 터치하면 키보드(소프트키)가 화면 하단에서 나타난다. 그런데 가끔, 이 소프트키가 화면을 가리는 경우가 있다. 아래와 같은 상황이 그 예시이다. (가장 처음으로 만들었던 '지나가리라'라는 어플리케이션의 화면이다.) 가장 왼 쪽의 레이아웃에서 키보드가 나오더라도 맨 오른쪽처럼 버튼을 유지하고 싶은데, 가운데의 스크린샷처럼 화면을 반쯤 가리면서 필요한 뷰들이 숨어 버린다. 앗 재난문자가 windowSoftInputMode windowSoftInputMode를 이용하면 키보드가 나타나고 사라졌을 때의 화면 변화 방식을 지정해 줄 수 있다. 가장 대표적인 설정값은 "adjustResize"이다. 이 값은 소프트키가 올라..

사건의 발단 지난 달, openCV를 활용해 이미지처리 기능을 구현하고 있었다. 이미지처리 과정이 상당히 복잡해서, Core 연산이 아주 많이 들어갔다. 메서드 여러 개로 나누어서 작업하고 있는데도 한 메서드가 몇백 줄이 넘어가는 길이였다. 연산이 복잡하기 때문에 어떤 줄에서 초 단위로 느려지는지 눈으로 확인하고 싶었다. 안드로이드 스튜디오의 프로파일러를 활용하면 큰 틀에서의 네트워크나 메서드 단위는 확인할 수 있지만, 한 줄 한 줄의 실행속도를 측정하는 것은 어려워 보였다. 삽질의 과정 그래서 직접 코드로 실행 시간을 확인하기로 했다. 처음에는 일반 예제에서 많이 하듯이 System.currentTimeMillis()만을 활용해 보려고 시도했다. prevTime과 curTime이라는 Long타입의 변수..

사건의 발단 기존에 생각하고 있던 개인 SNS 프로젝트를 시작하려고 기본 틀을 잡는 중이었다. 서버사이드를 따로 배워서 시작하자니 기간이 오래 걸릴 것 같아 우선 많이들 사용한다는 Firebase를 써보기로 했다. 내가 예상한 공부 순서는 이랬다. 1. Firebase 활용 예제에 대한 강의를 수강한다. 2. 기본 틀을 새로운 프로젝트로 옮긴다. 3. 코드를 다시 한 번 보면서 꼼꼼히 이해한다. 4. 열심히 손으로 구조를 짜본다. (이 부분은 오래 걸릴 것 같은데 이동안 포스팅은 어떻게 하지? 헤헤) 5. 4에서 작성한 내용의 화면 단을 제작한다. 6. 데이터베이스 기능들을 하나씩 추가한다. 오늘은 2번 단계를 마쳤다. 그리고 이 과정에서 이런저런 사소한 문제들이 발생했다. 대부분은 간단한 방법으로 해결..

스플래시(Splash) 화면과 그 목적 스플래시 화면은 앱의 본격적인 화면이 나오기 전에 1~2초 간 잠시 나타나는 화면이다. 일반적으로 단색 배경에 어플리케이션의 로고가 중앙에 표시되는 경우가 많다. 이 화면은 왜 필요한 걸까? 일단 디자인적인 이유가 있을 수 있다. 브랜드나 앱 이미지를 각인시키기 위해서. 하지만 Splash 화면의 주 목적은 따로 있다. 스플래시 화면이 없는 어플리케이션을 열어 보면, 메인 화면이 표시되기 전에 0.x초동안 텅 빈 화면이 나타난다. 짧은 시간이지만 이렇게 텅 빈 화면이 나타나는 것은 분명히 보기 좋은 현상은 아니다. Splash 화면은 이러한 공백을 채우기 위해 제작된다. Q. 왜 빈 화면이 뜨는 것일까? 공백을 지우기 위해 Splash를 만들기 전에, 이 공백은 왜..