일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 깃헙
- 유튜브
- WebView
- Github
- 안드로이드 스튜디오
- image
- RecyclerView
- 안드로이드스튜디오
- 코루틴
- Kotlin
- 레트로핏
- Gradle
- build
- error
- 스튜디오
- 웹뷰
- studio
- dart
- 안스
- 코틀린
- MVVM
- coroutine
- GIT
- 에러
- ADB
- 안드로이드
- Retrofit
- Android
- viewpager
- 의존성주입
- Today
- Total
목록전체 글 (164)
코딩하는 일용직 노동자
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/ctOfLR/btrdJj8E5eF/UkMkNX67ThctLDem99KRV1/img.png)
기존 안드로이드앱 APK파일을 플레이스토어에 등록할때는 수동으로 서명(signing)을 해서 올리는 방법을 사용했습니다. 때문에 개발자PC에서 키스토어파일(.jks, .keystore)을 만들어서 직접 관리를 했습니다. 간혹 이 키스토어파일을 분실하는 경험을 하는 개발자도 있는데, 이럴경우 버전업된 앱을 플레이스토어에 등록할 수 없기 때문에 매우 난처한 상황이 됩니다. 몇년전부터 플레이스토어 콘솔에 새로운 앱서명 방식이 적용되었습니다. 그동안은 이 기능을 사용해도 그만 안해도 그만이었고, 이 기능을 모르는 개발자도 많았습니다. 최근에 새로운 앱을 등록하면서 저도 이 기능을 처음 써보게 되었습니다. 새로운 앱 서명 방식은 구글이 서명키를 직접 관리하는 방식입니다. 우선 기존처럼 개발자의 PC에서 앱을 서명..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/p0V4K/btraNxIoZeL/QfKjnPwvVLTCs6ZbUHK36K/img.png)
회사에서 상용버전의 앱을 운영하는 경우나, 상용버전과 개발버전을 앱에 다 설치하고 테스트하려는 경우 패키지명을 바꿔서 테스트를 하는 불편함이 있었습니다. 이럴경우 gradle 에서 상용버전과 개발버전의 패키지명을 쉽게 바꿀수 있는 옵션을 이용하면 편리합니다. #1 app레벨의 gradle 파일에 옵션 추가하기 아래처럼 buildTypes 의 debug 에 applicationIdSuffix ".dev" 을 추가하면 debug 모드로 빌드할때는 기본적인 패키지명 뒤에 .dev 가 붙게 됩니다. #2 매니페스트 앱이름 등 바꿔주기 한 기기에 상용버전과 개발버전의 앱을 다 설치해야 하기 때문에 manifestPlaceholders 를 이용해서 앱이름과 아이콘을 나눠주도록 아래 처럼 추가합니다. 또한 manif..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/vhYOS/btq4Pa4LNg5/NVlwtKN0KKlzZD6GKNO9N1/img.png)
ViewModel 안에 만들어둔 MutableLiveData 변수의 value 를 바꿔주기 위해 .setValue() 나 .sendEvent() 를 사용하니 앱이 바로 죽습니다. 에러로그를 보니 메인쓰레드가 아닌 다른 쓰레드에서 MutableLiveData 의 값을 셋팅하다보니 발생한 에러입니다. (CoroutineScope 는 Dispatchers.IO 로 만들어서 사용중이었습니다.) 구글링을 해보니 아주 간편한 해결법이 있습니다. postValue() 로 값을 셋팅해주면 됩니다.
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/Pzg0U/btq4oR7E1j7/439M2JxSvKcqTdF49s7PHK/img.png)
Java로 만든 프로젝트를 Kotlin으로 컨버팅 후 테스트 하던중 커스텀 다이얼로그를 호출하니 앱이 죽어버렸습니다. java.lang.NullPointerException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkNotNullParameter, parameter savedInstanceState 처음보는 에러라 구글링을 해보니 nullCheck 설정이 붙은 파라메터로 바꾸라는군요. public override fun onCreate(savedInstanceState: Bundle) 저는 커스텀 다이얼로그 소스에서 이 부분을 public override fun onCreate(savedInsta..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bjTFqO/btq4dw83oPw/ftsYjwCnyF3HEUHylHmEk1/img.png)
안드로이드 스튜디오에서 많이 사용하는 툴이 Logcat입니다. 일반적인 간단한 Log 는 괜찮지만 api를 호출하고 결과를 json으로 받았을때, 그리고 그 json의 길이가 엄청나게 길때 Log가 중간에 짤리는것을 볼 수 있습니다. Logcat 한줄의 길이가 4076byte까지만 표시되기 때문입니다. json Log를 보기에도 편하고 짤리지도 않게 표시해봅시다. #1 Timber 셋팅 Timber라는 라이브러리를 이용해보겠습니다. Timber는 Logging 라이브러리 입니다. gradle에 Timber를 추가해줍니다. implementation 'com.jakewharton.timber:timber:4.7.1' 그리고 프로젝트에서 가장 먼저 시작되는 Activity나 또는 Application 클래스..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cWPjkj/btq4bnTfKc7/jrXjqwxq5LFuV9YwRIsf51/img.png)
ScrollView 안에 ScrollView나 RecyclerView 처럼 또다른 스크롤이 가능한 뷰를 넣을 경우가 생기게 됩니다. 그럴때 이용하는 것이 NestedScrollView 입니다. 이름처럼 중첩된 스크롤뷰를 만들때 사용하는 것입니다. NestedScrollView 도 ScrollView 처럼 내부에 하나의 View 만 갖을 수 있습니다. 보통 내부에 LinearLayout 을 두고 거기서 여러 View 들을 구성해놓게 됩니다. NestedScrollView에 RecyclerView 를 넣어놨더니 화면이 열리면서 그쪽으로 스크롤이 되는 현상을 볼 수 있습니다. 구글링을 검색해보니 화면이 그려지면서 NestedScrollView 안에 또다른 스크롤이 가능한 View 인 RecyclerView 쪽..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bQJ5gE/btq39jDvqZS/9r9mCRjZTUubXsnwk0dlcK/img.png)
https://loading.io/spinner/ 예쁜 로딩용 이미지나 아이콘 파일들을 제공해주는 좋은 사이트입니다. 다만 유료입니다 -_-;; gif, png, svg 다양한 파일형식을 지원합니다.
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/oEcpB/btq1virsaDN/1uk4NyJ6O3xBkIBsIsMLX1/img.png)
개발을 하다보면 github을 통해 다른 개발자의 코드를 확인할 경우가 많습니다. 하지만 github이 소스를 보기엔 많이 불편합니다. 이런 github을 편하게 볼수있는 아주 간단한 방법을 알아보겠습니다. 우선 주소창에서 github의 url에에서 github 뒤에 1s를 붙이고 엔터를 누릅니다. 그러면 다음처럼 화면 ui가 바뀝니다. 마치 Visual Studio Code 처럼 화면 UI가 바뀝니다. 왼쪽에는 tree구조로 파일을 편하게 볼 수 있도록 되어있습니다. 이제부턴 github에서 1s를 붙여서 사용해봅시다.
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/by79WJ/btq1dAe6WrU/oUJndQ63PYSetjNNKZ2ykk/img.jpg)
Wear OS 용 앱을 개발하기 위해서.. 사용중인 LG Watch Sport 기기에 테스트용 앱을 넣고 디버깅하는 방법을 찾아보았습니다. 생각보다 자료가 많지 않았지만 예전에 Wifi로 ADB 디버깅 하는 방법을 알고 있었기 때문에 어렵지 않게 디버깅을 성공할 수 있었습니다. 준비물 1. 맥북 (wifi on) 2. 안드로이드 워치 디바이스 일단 기기의 [개발자 옵션]을 활성화 해야 합니다. 안드로이드 워치 디바이스에서 다음의 경로로 들어간 후 빌드번호 를 연타합니다. [설정] > [시스템] > [정보] > [빌드번호] 이렇게 하면 핸드폰에서 [개발자 옵션]이 활성화 됩니다. 그러면 [개발자 옵션]으로 들어가서 [ADB 디버깅]과 [Wi-Fi를 사용하여 디버깅]을 활성화 시켜줍니다. 이때 [Wi-Fi를..