Code block Pro 자꾸 에러나서 짜증나네. 어쩔 수 없이 새로운 포스트로 넘어옴. Filter variants flavor dimension을 사용하면 모든 조합을 사용하므로 build variant가 매우 많아질 수 있는데, 필요없는 것까지 생성될 수 가 있다. 이경우, beforeVariants { } 블럭을 이용하면 된다. 예제를 보자. 위와 같이 작성하면, “minApi21″에 “demo”버전은 build variant를 생성하지 않게된다. Source set 만들기 기본적으로 안드로이드…
[태그:] 안드로이드
안드로이드
안드로이드 빌드 구성하기 #1
JDK 안드로이드 스튜디오를 사용해 빌드하면, 자체적으로 설정된 JDK를 사용한다. sudio.jdk 디렉토리가 있음. 또는, JetBrains Runtime(JBR)이라고 JDK확장버전을 안드로이드 스튜디오랑 함께 배포하게 되는데, 이를 사용하고 이 방법이 권장된다. 커맨드 라인으로 빌드하게 되면, JAVA_HOME을 찾고 없으면 PATH에 있는 java를 실행하게 되는데, 이 경우 안드로이드 스튜디오와 JDK가 안맞게 된다. 같이 사용한다면, 두 버전을 맞춰줘야 함. 빌드 할 때 처음에는…
Android: External Storage and Storage Access Framework(SAF)
개요 SD Card 또는 External Storage에 대해 가볍게 접근했다가 대혼돈이라는걸 뒤늦게 알았다. 내맘같아선, 그냥 기존처럼 자유롭게 접근하게 냅두면 좋겠지만… 모든 변화의 핵심은 Internal Storage 수준의 보안과 권한(Permission)이다. 사족을 달자면, 대부분 앱들은 아이폰용으로도 개발되기 때문에 이 골치아픈 External Storage를 다루지 않고 전부 Internal Storage만 사용한다, 카카오 톡처럼. 내용을 볼수록 이것도 이해가 되긴 하는데, 안드로이드 유저로선 그냥…
Android : ” org.codehaus.groovy.control. MultipleCompilationErrorsException: startup failed” 오류 해결
오래전 프로젝트 열었더니 다음과 같은 에러 발생. 기존에 설정했던 JDK 위치가 사라져서 뭔가 재설정되긴 했는데 제대로 안된거 같다. File>Settings>Build, Excution, Deployment>Build Tools>Gradle 을 찾아들어간다. Gradle Projects 에 Gradle JDK를 보면, 드롭다운메뉴에서 다양한 JDK를 선택할 수 있는걸 볼 수 있는데, “Android Studio Default JDK”를 선택하여 해결했다. OK, 여기까지.
Kotlin : Flow Part.2 (Shared Flow, State Flow)
안드로이드에서 Flow로 읽어오는 데이터는 UI에 사용될 시, 주로 viewmodel에 저장하는 livedata형태로 변환해서 사용하게 된다. UI 업데이트는 observable한 데이터를 필요로 하기 때문이다. Flow는 cold stream이기 때문에 observable한 형태는 불가능하다. 옵저버 패턴은 다른말로 발행-구독(Publisher-Subscriber) 모델로 말하기도 하는데, 발행하는 쪽이 데이터가 바뀔 때마다 구독자들에게 브로드 캐스팅을 해야하기 때문에, hot stream 형태로 구현되어야 한다. 만약, livedata를 사용하지 않는다면? Flow만으로는…