Kotlin

[Kotlin] 개발노트

시커먼수르 2022. 1. 13. 09:48

 

 

 

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 + / 키를 쓸때마다 동작하지 않는 케이스가 발생하여, 왜그런가 한참 헤맸는데, 아래 작업표시줄에 표시된 입력기가 한컴 입력기로 되어 있었다.

대표사진 삭제

 

사진 설명을 입력하세요.

 

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