본문 바로가기

Kotlin

[Kotlin] 개발노트

 

 

 

1. Retrofit2 사용시 build() 중 에러 발생할 경우

아래와 같이 추가해주면된다. ( 2일동안 삽질함..)

android {
...
    compileOptions {
        targetCompatibility = "8"
        sourceCompatibility = "8"
    }
}
 

okhttp3 를 사용하기 때문에 추가해줘야한다고 하는데, 저게 무슨상관인지는 좀더 연구해봐야할듯.

 

 

2. 에러 해결하고 data get 할 때 아래와같이 onFailure가 발생하는 경우

02-03 22:39:34.336 23432 23432 E KTH : onFailure : java.net.UnknownServiceException: CLEARTEXT communication to openapi.airkorea.or.kr not permitted by network security policy

아래와같이 Manifest에 추가

 

    <application
       ...
        android:usesCleartextTraffic="true">
 

출처 : https://gun0912.tistory.com/80

 

 

3. Retrofit2 디버깅을 위해 log 출력 방법

 

    implementation 'com.squareup.okhttp3:logging-interceptor:4.3.1'
 

HrrpLoggingInterceptor 생성후 retrofit의 client로넣어준다. (알맞는 로그 레벨 설정, BODY, FULL ...)

        val interceptor = HttpLoggingInterceptor()
        interceptor.setLevel(HttpLoggingInterceptor.Level.BODY)

        val retrofit = Retrofit.Builder()
            .baseUrl("http://openapi.airkorea.or.kr/")
            .addConverterFactory(GsonConverterFactory.create(gson))
            .client(client)
            .build()
 

4. 데이터를 제대로 읽어오지 못할 경우 확이할 것들

Qeury를 통해 전달하는 문자열들에 encoded = true옵션을 주지 않았더니 죄다 에러가 발생했다.

(서비스 키 권한없다고해서 겨우 알아냈음..)

다행히 해당 옵션 추가하고는 정상동작함.

 

5. TabLayout / ViewPagaer 삽질

과거 android support library 예제를 보면서 jetpack library 로 그대로 포팅하니 아무리 해도 viewpager에 붙은 fragment가 나타나지 않는 현상이 발생함.

알고보니 jetpack library 에서는 TabLayout 은 ViewPagaer와 항상 함께 사용해야 하며 아래와 같이 ViewPagaer의 하위 Layout으로 TabLayout을 구성해야함.

<androidx.viewpager.widget.ViewPager
     android:layout_width="match_parent"
     android:layout_height="match_parent">

     <com.google.android.material.tabs.TabLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_gravity="top" />

 </androidx.viewpager.widget.ViewPager>
 

과거예제에서는 LinearLayout내에 TabLayout과 ViewPager가 동일 level에 선언을 했어야 했음.

(진짜 2일동안 개삽질...)

 

 

참고

안드로이드 스튜디오에서 주석 단추기를 쓰기 위해서 Shift + / 키와, Ctrl + Shift + / 키를 쓸때마다 동작하지 않는 케이스가 발생하여, 왜그런가 한참 헤맸는데, 아래 작업표시줄에 표시된 입력기가 한컴 입력기로 되어 있었다.

대표사진 삭제

 

사진 설명을 입력하세요.

 

입력기를 한국어로 바꾸니 정상동작 한다. (한컴 입력기를 지워버리던지 해야겠다.)

 

'Kotlin' 카테고리의 다른 글

[Kotlin] Scope Functions (let, with, run, apply, also)  (0) 2022.01.19
[Kotlin] 람다 표현식  (0) 2022.01.13
[Kotlin][Kotlin in action] 1. 코틀린이란?  (0) 2020.11.25