일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Gradle
- ADB
- 웹뷰
- 코루틴
- 안드로이드스튜디오
- RecyclerView
- 유튜브
- 안드로이드 스튜디오
- MVVM
- 스튜디오
- 레트로핏
- 코틀린
- 안스
- GIT
- Android
- WebView
- 의존성주입
- dart
- build
- image
- error
- 깃헙
- 안드로이드
- Retrofit
- viewpager
- Kotlin
- Github
- coroutine
- 에러
- studio
- Today
- Total
목록안드로이드 (149)
코딩하는 일용직 노동자
회사에서 상용버전의 앱을 운영하는 경우나, 상용버전과 개발버전을 앱에 다 설치하고 테스트하려는 경우 패키지명을 바꿔서 테스트를 하는 불편함이 있었습니다. 이럴경우 gradle 에서 상용버전과 개발버전의 패키지명을 쉽게 바꿀수 있는 옵션을 이용하면 편리합니다. #1 app레벨의 gradle 파일에 옵션 추가하기 아래처럼 buildTypes 의 debug 에 applicationIdSuffix ".dev" 을 추가하면 debug 모드로 빌드할때는 기본적인 패키지명 뒤에 .dev 가 붙게 됩니다. #2 매니페스트 앱이름 등 바꿔주기 한 기기에 상용버전과 개발버전의 앱을 다 설치해야 하기 때문에 manifestPlaceholders 를 이용해서 앱이름과 아이콘을 나눠주도록 아래 처럼 추가합니다. 또한 manif..
ViewModel 안에 만들어둔 MutableLiveData 변수의 value 를 바꿔주기 위해 .setValue() 나 .sendEvent() 를 사용하니 앱이 바로 죽습니다. 에러로그를 보니 메인쓰레드가 아닌 다른 쓰레드에서 MutableLiveData 의 값을 셋팅하다보니 발생한 에러입니다. (CoroutineScope 는 Dispatchers.IO 로 만들어서 사용중이었습니다.) 구글링을 해보니 아주 간편한 해결법이 있습니다. postValue() 로 값을 셋팅해주면 됩니다.
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..
안드로이드 스튜디오에서 많이 사용하는 툴이 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 클래스..
ScrollView 안에 ScrollView나 RecyclerView 처럼 또다른 스크롤이 가능한 뷰를 넣을 경우가 생기게 됩니다. 그럴때 이용하는 것이 NestedScrollView 입니다. 이름처럼 중첩된 스크롤뷰를 만들때 사용하는 것입니다. NestedScrollView 도 ScrollView 처럼 내부에 하나의 View 만 갖을 수 있습니다. 보통 내부에 LinearLayout 을 두고 거기서 여러 View 들을 구성해놓게 됩니다. NestedScrollView에 RecyclerView 를 넣어놨더니 화면이 열리면서 그쪽으로 스크롤이 되는 현상을 볼 수 있습니다. 구글링을 검색해보니 화면이 그려지면서 NestedScrollView 안에 또다른 스크롤이 가능한 View 인 RecyclerView 쪽..
https://loading.io/spinner/ 예쁜 로딩용 이미지나 아이콘 파일들을 제공해주는 좋은 사이트입니다. 다만 유료입니다 -_-;; gif, png, svg 다양한 파일형식을 지원합니다.
Wear OS 용 앱을 개발하기 위해서.. 사용중인 LG Watch Sport 기기에 테스트용 앱을 넣고 디버깅하는 방법을 찾아보았습니다. 생각보다 자료가 많지 않았지만 예전에 Wifi로 ADB 디버깅 하는 방법을 알고 있었기 때문에 어렵지 않게 디버깅을 성공할 수 있었습니다. 준비물 1. 맥북 (wifi on) 2. 안드로이드 워치 디바이스 일단 기기의 [개발자 옵션]을 활성화 해야 합니다. 안드로이드 워치 디바이스에서 다음의 경로로 들어간 후 빌드번호 를 연타합니다. [설정] > [시스템] > [정보] > [빌드번호] 이렇게 하면 핸드폰에서 [개발자 옵션]이 활성화 됩니다. 그러면 [개발자 옵션]으로 들어가서 [ADB 디버깅]과 [Wi-Fi를 사용하여 디버깅]을 활성화 시켜줍니다. 이때 [Wi-Fi를..
라운드 처리된 커스텀팝업을 만들었는데 실행시켜보면 자꾸 흰색 영역이 네 귀퉁이에 보입니다. 소스를 아무리 살펴봐도 문제는 없어 보였는데... 구글링을 해보니... 라운드에 투명값(#00000000)을 준다고 해도 흰색 영역이 보인다고 합니다. 이것을 해결하려면 소스코드에서 아래처럼 추가해주면 된다고 하네요. getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
업무를 위해 새로운 앱 프로젝트를 전달받아서 설치했는데 gradle dependencies 에 빨간줄이 보였습니다. Version 28 (intended for Android Pie and below) is the last version of the legacy support library, so we recommend that you migrate to AndroidX libraries when using Android Q and moving forward. The IDE can help with this: Refactor > Migrate to AndroidX... 여...영어니까 구글 번역을 돌려보았습니다. -_-;;; 버전 28(Android Pie 이하)은 레거시 지원 라이브러리의 마지막 버전이..
안드로이드 초기부터 xml 파일의 뷰들과 연결하기 위해 findViewById를 해왔습니다만 매우 불편했습니다. 코틀린을 사용할땐 kotlin-android-extensions 덕분에 findViewById를 하지 않는 편리함이 있었습니다. 하지만, 서로다른 xml 파일에서 동일한 id를 사용할경우가 많기 때문에 kotlin-android-extensions를 사용할 경우 코드가 헷갈릴 수 있었습니다. 때문에 구글에서는 안드로이드 스튜디오 4.1 버전부터 kotlin-android-extensions의 지원을 중단하고 ViewBinding 을사용하도록 안내하고 있습니다. ViewBinding 은 안드로이드 스튜디오 3.6 버전부터 지원했습니다. app 레벨의 build.gradle 파일에서 아래처럼 추..