
오랜만에 Android Studio를 켜서 3.6.2로 버전업을 하였더니 빌드가 실패한다. 아래와 같은 에러들이 보인다. 숫자는 프로젝트마다 조금씩 다른 듯, Git branch와는 관계가 없다. ERROR: Uninitialized object exists on backward branch 45 Caused by: java.lang.VerifyError: Uninitialized object exists on backward branch 45 기존에는 Oracle JDK를 1.8을 설치하여 쓰고 있었는데 Android Kotlin 관련 업데이트와 충돌을 하는 듯 싶다. Jetifier 빌드 툴 동작중 문제가 된다. Jetifier가 무엇인지는 아래 링크 참조 https://developer.androi..
Google IO 2017에서 새로 발표된 Android Studio 3.0 canary 1 버전에는 새로운 Android profiler가 탑재되었다. 이 프로파일러를 동작시키기 위해서는 com.android.toos.build 버전을 2.4 이상으로 올려야 하는데, 업데이트 후 싱크 시 스튜디오에서 다음과 같은 오류가 발생하였다.Failed to notify build listener 이럴 경우 gradle daemon에 업데이트 된 사항이 적용되지 않아 그런 것으로, daemon을 재시작하면된다. Android studio를 재시작하여도 되고, 스튜디오의 터미널 창을 열어 커맨드 명령으로 종료시킬 수 있다. 커맨드 명령은 아래와 같다.[Windows] > gradlew --stop[Linux]> ...
안드로이드에는 런쳐(홈 앱)에 위젯을 사용자 마음대로 설치할 수 있다. 사용자는 주어진 기능이기 때문에 원하는대로 사용하려고 하게되는데, 많이 설치하면 할수록 런쳐가 사용하는 메모리가 커진다는 것을 잘 이해하지 못하는 것 같다. 개발자들도 위젯을 개발해 보지 않으면 위젯의 생명 주기를 잘 이해하지 못하곤 한다.위젯은 런쳐의 메모리를 사용한다.그렇다. 위젯은 런쳐의 메모리를 사용하고 지속적으로 점유한다. 그런데 런쳐는 사실상 계속 살아있는 앱이므로 런쳐의 메모리가 커지면 가용램이 줄어든다고 말할 수 있다 이는 곧 전체적인 폰의 성능 저하로 이어지게 된다. 만약 게임등에 의해 메모리 사용이 극대화 되고 가용램이 없게되면 LMK(Low Memory Killer)에 의해 우선순위에 따라 프로세스들이 죽어가게 된..
안드로이드를 위한 Gradle 안드로이드국내도서저자 : 유동환출판 : 한빛미디어 2016.07.22상세보기Maven을 대체하는 강력한 빌드 툴, Gradle에 대해 책이 나와 읽어보게 되었습니다. 이 책은 안드로이드 앱을 만들기 위해 Gradle을 사용하는 방법에 초점을 맞추고 있습니다. 처음 안드로이드 개발을 하다 보면 빌드를 어떻게 설정해야 할지 참 막막합니다. Gradle에 Android 특성이 플러그인 되어 있어 관련된 부분을 조정해야 하기 때문인데요, 이 책은 이런 경우에 이 책은 큰 도움이 될 것 같습니다.책은 가볍고 얇게 나와 이동 중에도 읽기 쉬웠고 빨리 읽을 수 있었습니다. 일단 한번 훑은 뒤 필요한 부분을 찾아 보거나, 여기서 본 지식을 바탕으로 웹에서 확장된 내용을 검색해 볼 수 있을..
Android Performance Youtube 채널에 올라온 것이 있어 리뷰하였습니다. Android가 성능이 나쁘다는 평가를 극복하기 위해 애쓰고 있죠. 이미지 사이즈를 줄이고 데이터 사이즈도 줄이라는 익히 알만한 내용이지만 설명 중 몰랐던 몇몇 기술들이 있어서 정리해보았습니다.두가지가 중요하다 : 이미지, serialized data이미지를 작게 만들어야 한다전송 속도가 곧 앱 속도네트워크를 많이 쓰면 배터리를 많이 사용한다전송량은 사용자의 돈이다JPG로 손실 압축을 사용하라 - webp format이미지 서버에 다양한 사이즈를 준비하고 사용목적, 디바이스 크기등에 따라 다른 이미지를 제공하라Serialized data도 중요하다Json은 불필요한 내용이 너무 많다. Spade, linefeed,..
안드로이드(Android) OS 업그레이드가 코앞으로 다가왔다. 누가(Nougat)라고 이름 붙여진 N OS도 이제 막바지다. 애로사항이라고 해야할까.. N OS를 작업하면서 있었던 이슈들을 정리해본다.Multi-window (멀티윈도우, 다중 창 모드)기존에 제공하던 LGE 자체 분할 윈도우 기능을 들어내고 N OS에서 제공하는 API를 사용하여 적용하였다.이번 OSU로인해 가장 많은 일을 하게 된 주요 사항이다. 우리처럼 규모가 좀 되는 회사가 아니면 복잡한 UI를 멀티윈도우에 맞춰 개발하기 쉽지 않을 것 같다. 게다가 초기의 developer preview들은 시도때도 없이 오동작을 하여서 개발과 테스트하기가 어려웠고 구글에 대해 이를 갈게 하는 원인이 되었다.이슈가 너무 많아 나열하기도 어려운데...
안드로이드 텍스트 뷰(TextView)는 화면 끝에 위치할 단어가 길어져 잘릴 것 같으면 그 단어를 자동으로 다음 줄로 줄바꿈 해 줍니다. 이 것을 Word wrap 또는 line wrap이라고 하죠. 그런데 표현할 뷰가 작은 경우 자동으로 줄바꿈 되어 보이지 않았으면 하는 때가 있어요. 그럼 아래와 같이 하면 잘 됩니다.myString.replace(" ", "\u00A0");출처의 작성자도 hack같은 코드라고 합니다만.. 가장 심플하면서도 만족스럽습니다. 모든 공백을 \u00A0으로 바꾸어 주는데요, u00A0은 No-break space 기호로, 스페이스로 보여지지만 워드 분리를 하지 않기 위한 용도로 사용합니다.Android M os에는 android:breakStrategy 옵션도 생겨서, 하..
안드로이드(Android)의 Fragment는 앱 개발에 항상 써 오고 있지만 왜 써야 하는지 이야기 해 보라면 잘 정리되지 않는다. 정리해 보도록 하자.장점 : 단점을 커버할 만한 몇가지 중요한 장점을 지니고 있다.디바이스 차이를 다루기 위해 태블릿은 커다란 화면을 가지고 있고 모바일에서 보여주던 그대로 보여줄 경우 넓은 화면을 제대로 활용하지 못한다는 느낌을 줄 수 있다. 때문에 이중 분할과 같은 형태로 카테고리 뷰와 컨텐츠 뷰를 보여준다던지 하는 방식으로 화면을 채워볼 수 있다. 이 때 사용할 수 있는 것이 Fragment이다. 간단히 말하자면 태블릿과 폰 간의 화면 크기 차이로 화면 영역을 Fragment로 분리하고 이를 조합하여 보여준다고 할 수 있다.화면 사이에 데이터 전달분리된 Activit..
검색한 결과를 링크합니다. SQLite performance tuning and optimization on embedded systems : 잘 정리되어 참고 할 만 하다.http://katastrophos.net/andre/blog/2007/01/04/sqlite-performance-tuning-and-optimization-on-embedded-systems/How do I improve the performance of SQLite? : 여러 건의 insert를 할 때 tuning한 내용을 잘 설명하고 있다. C 코드 부분도 있어 참고 할 만 함.http://stackoverflow.com/questions/1711631/how-do-i-improve-the-performance-of-sqlit..
Jelly Bean 업그레이드 테스트를 하는 도중 위젯이 계속 로딩중이고 로그에 오류가 나서 보았더니Broadcast할 때 FLAG에 Intent.FLAG_ACTIVITY_CLEAR_TOP 이 있어서 그랬습니다. Broadcast 할 때에는 FLAG_ACTIVITY로 시작하는 FLAG는 붙이지 말아야 합니다. 01-02 00:02:19.818: E/ActivityManager(672): Activity Manager Crash01-02 00:02:19.818: E/ActivityManager(672): java.lang.IllegalArgumentException: Can't use FLAG_RECEIVER_BOOT_UPGRADE here01-02 00:02:19.818: E/ActivityManager..