Android
Android Retrofit2 Request URL Path를 유동적으로..!
2020. 12. 24.BASE URL은 같고, POST 시 요청하는 Request URL의 path 가 유동적으로 변하기 때문에 이에 맞게 변경 및 요청이 가야한다는 요구사항이 있었다. 문제 해결 접근 @GET 을 사용할 때 @Path 를 사용하여 request url 을 직접 설정할 수 있었기에 같은 방법으로 접근하였다. @GET("/info/{user}") fun getUserInfo( @Path("user") user: String ): Call 이런식으로 user 파라미터로 Codejun 을 전송하게 되면 request url 은 /info/Codejun 이 되어 request 한다. 그래서 post에서도 따라해봤다.. @POST("/{custom_uri}") fun requestData( @Path("custom_u..
RecyclerView에 줄 라인 추가하기(Divider)
2020. 7. 27.ListView와는 다르게 RecyclerView에는 기본적으로 line divider 가 존재하지 않는다. 따라서 RecyclerView에서 제공하는 addItemDecoration 함수를 사용해야 한다. 사실 이전에도 관련 글을 포스팅한 적이 있었는데 최근 들어 사용 언어를 Kotlin으로 갈아타게 되면서 코틀린 버전도 포스팅을 해볼까 한다.. 적용을 위해서는 DividerItemDecoration 클래스를 만들고 line으로 사용할 xml을 생성해주면 된다. 일단 line으로 쓰이게 될 line_divider.xml 을 drawable안에 만들어준다. 이렇게 되면 약간의 회색 줄이 생성된다. 이제 이를 사용할 class를 생성해보자. 클래스명은 원하는 대로.. class DividerItemDeco..
Layout Inspector로 레이아웃 디버깅하기
2020. 6. 1.지난주에 Android Studio 4.0이 Stable 채널에 업데이트되었습니다. 생각보다 새로운 기능들이 많은데, 앞으로 하나씩 포스팅해보도록 하겠습니다. 왜 항상 이 친구들은 좋은 기능 만들어 놓고 꽁꽁 숨겨두는지 모르겠습니다. 뭐 할때 쓰는 걸까 공식 문서에서는 Layout Inspector를 '레이아웃이 완전히 XML로 빌드된 것이 아니라 런타임에서 빌드되어 예상치 못한 방식으로 작동될 때 유용하다.' 라고 설명하고 있습니다. 제가 해석하기로는 아마 레이아웃 구성 시 XML코드로 짜는 것이 아닌 클래스를 통해 레이아웃을 구성하거나 값들을 변경하였을 때 예상치 못한 오류가 발생하는 경우(위젯이 사라지거나 이상한 곳에 배치되는 경우) 디버깅에 유용한 툴 정도로 해석했습니다. 레이아웃의 구성을 XML..
Android에서의 MVVM은 무엇이고 왜 사용하는가
2020. 4. 6.이전 기록에서 아키텍처 개선을 위한 이야기를 했었다. 개선을 위한 컴포넌트(Component)들을 사용하고, MVVM 디자인 패턴을 적용하기로 했었다. 이번 기록에서는 이 MVVM 디자인 패턴이 무엇인지를 다뤄 볼 예정이다. 관심사 분리 초보 개발자들(본인)이 실수하는 많은 것들 중 하나는, Activity나 Fragment 클래스에 모든 코드를 작성하려 한다는 것이다. 때문에 앱의 동작 속도가 느려질 수 밖에 없고 유지보수가 어렵게 되는것은 덤이며 메모리 관리에도 많은 어려움이 발생한다. 따라서, 최대한 클래스의 의존성을 최소화 하는 것이 좋다. (추후에 의존성 주입에 대한 내용도 포스팅 할 예정이다.) 아직 초보인 본인이 봤을 때는 로직들을 분리하고 의존성을 최소화 하게 되면, 한 로직에서 문제가 발..
'onMessageReceived' overrides nothing 해결
2020. 3. 30.FCM 버전을 오랜만에 업데이트 한 후 Gradle Sync를 돌리는데 자꾸만 에러가 난다. 고친 소스코드도 없는데... 해당 에러가 나는 부분은 다음과 같다. ... override fun onMessageReceived(remoteMessage: RemoteMessage?) { ... } ... override fun onNewToken(token: String?) { ... } override 쪽에서 에러가 난다. 전혀 문제가 없는 소스코드지만, 업데이트 이후 변경점이 있다. 그냥 null check 부분을 수정해 주면 된다. 아래와 같이.. ... override fun onMessageReceived(remoteMessage: RemoteMessage) { ... } ... override fu..
Biometric을 이용한 지문 인식 사용
2020. 3. 20.Andorid API 23.. 즉, 마시멜로우 버전부터는 안드로이드 기기에 탑재되어 있는 지문인식 센서를 사용할 수 있게 되어있습니다. 그러나 28 버전인 Pie 버전부터 Deprecated 되었습니다. 이유는 최신 기종의 스마트폰은 다양한 생체 정보를 활용할 수 있는 센서들이 장착되어있기 때문입니다. 이에 따라서 Google은 지문 인식 뿐만 아니라 홍체 인식, 얼굴 인식 등의 정보를 활용할 수 있는 BioMetricPrompt를 제공합니다. BiometricPrompt를 사용하는 이유는 이 뿐만이 아닙니다. 이전의 안드로이드는 센서 정보만 제공했기 때문에 지문인증 레이아웃의 구성이 개발자나 디자이너에 따라 모두 달랐습니다. 하나의 통합된 레이아웃을 제공하는 iOS와는 전혀 달랐습니다. 이렇기에 사용자..
Bitbucket Pipeline + Telegram Bot으로 App 자동 빌드/배포 하기 (2)
2020. 2. 12.이전 글 보기 더보기 https://blog.codejun.space/75 이전 글에 이어서, 이번에는 Telegram Bot을 생성하고, Pipeline을 새로 작성하여 최종적으로 빌드된 apk가 Telegram Bot이 쏴줄 수 있도록 목표를 잡는다. Telegram Bot 생성 일단 Telegram에서 BotFather를 추가한다. Telegram의 Bot 생성 과정이 아주 잘 되어있기에 어렵지 않게 할 수 있으리라 예상한다. @BotFather 를 찾아 추가한다. 그 다음 /newbot 명령어를 통해 Bot을 생성하면 된다. Bot의 Token을 이용해서 Request 날립시다 봇 생성을 완료하면 위 사진 처럼 API에 접근 가능한 Token을 발급해준다. 이 Token을 통해 우리는 Pipeli..
Bitbucket Pipeline + Telegram Bot으로 App 자동 빌드/배포 하기 (1)
2020. 2. 10.참고 블로그: http://youknow.kim/2020/01/11/bitbucket-pipeline%EC%9C%BC%EB%A1%9C-android-apk-%EB%B9%8C%EB%93%9C%ED%95%98%EA%B8%B0/ Bitbucket Pipeline으로 Android APK 빌드하기 – Youknow 본 포스팅에서는 Bitbucket 환경에서 Pipeline 기능을 사용하여 Android APK를 빌드하고 이를 Bitbucket Downloads 영역에 업로드하는 것을 다루고자 합니다. 젠킨스 CI 환경을 구축하는 방법도 있겠지만, 이미 Bitbucket을 사용하고 있다면 Bitbucket에서 제공하는 Pipeline 기능을 이용해보는 것도 좋겠다고 생각하여 찾아보게 되었습니다. App passw..
Ganache + Solidity + ERC20을 활용한 Ethereum SmartContract 배포 및 Android 통신 (4)
2020. 2. 6.이전 글 보기 더보기 1편: https://blog.codejun.space/71 2편: https://blog.codejun.space/72 3편: https://blog.codejun.space/73 드디어 마지막이다. 저번 포스팅에서 Android에서 사용할 수 있도록 web3j를 통해 java class 를 Generate 했다. 이제 이 class를 Android 프로젝트에 넣어보자. (프로젝트 생성 과정은 생략한다.) Web3j dependency 추가 우선 Android에서 Web3j를 이용하려면 의존성 추가를 해야 한다. app build.gradle에 해당 의존성을 추가하도록 한다. implementation 'org.web3j:core:4.2.0-android' 그 다음, Sync를 진..
Ganache + Solidity + ERC20을 활용한 Ethereum SmartContract 배포 및 Android 통신 (3)
2020. 2. 5.이전 글 보기 더보기 1편 : https://blog.codejun.space/71 2편 : https://blog.codejun.space/72 지난 2편에서는 Solidity를 작성해보고 Compile 해서 Ganache에 배포하는 것 까지 해보았다. 이 포스팅에서는 Ganache에 배포한 SmartContract를 Web3j를 이용하여 Android와 통신에 사용할 java 파일을 생성해 보겠다. 필요한 것 1. Docker 2. Android Studio 3. Web3j 일단 Docker는, Solidity를 .bin과 .abi 파일로 컴파일 하기 위해 필요한 것이고, web3j 는 Android에서 SmartContract를 사용하기 위해 java로 Generate해준다. Docker의 다운로드..
DataBinding 오류 해결
2020. 2. 1.DataBinding을 사용하는 프로젝트를 Clone 한 후 빌드를 했는데 자꾸 DataBinding 라이브러리가 말썽이다. 아무리 Clean Project, Rebuild Project, Gradle Sync를 해도 해결이 되지 않았다. 하지만.. 해결할 수 있는 아주 간단한 방법 한 가지가 더 남아있다. Invalidate Caches / Restart... 를 한 번만 눌러주면 다 해결된다. Android Studio에 File 메뉴를 누르면 나온다. 이후 나오는 팝업 창에서 Invalidate and Restart를 누르면 끝이다.
[MAC] ADB PATH 설정하기
2020. 1. 30.간혹 터미널에서 ADB 커맨드를 사용해야 할 때가 있다. 이 때 매번 SDK가 설치되어 있는 경로로 찾아가서 ADB를 사용하는 것은 매우 귀찮은 일이다.. 따라서, 각 bash에 맞는 adb path를 추가해 주면 된다. 보통 일반 bash를 사용하는 사람은 아래와 같이 .bash_profile을 열어주면 된다. open -e .bash_profile 본인은 zsh를 사용하고 있기 때문에 zsh사용자는 .bash_profile 대신, .zshrc 를 입력하면 된다. 그 다음 텍스트 에디터가 나오면 아래 한 줄만 추가하면 된다. export PATH=$PATH:/Users/사용자이름/SDK경로/platform-tools/ SDK경로는 각자가 다 다르기 때문에.. 좀 쉽게 입력하는 방법은, 그냥 Finder..