반응형

android Pie 대응을 위해서 targetSdkVersion을 28로 변경 후  갑자기

UnknownServiceException: CLEARTEXT communication to example.com not permitted by network security policy

와 같은 오류가 나오게 경험을 하게 됩니다.


이유는 android pie부터 http가 아닌 https를 이용해야 합니다.



의 내용을 확인하면 됩니다.


간단하게 api의 도메인이 http가 아닌 https를 지원하고 http를 https로 변경만 하면 됩니다. 대부분의 회사 api들이 https를 지원하지만 그렇지 않은 경우도 있죠.

이럴 땐 http로 통신할 도메인들에 대해서 관리를 해주면 됩니다.


우선


res/xml/network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
   
<domain-config>
       
<domain includeSubdomains="true">example.com</domain>
       
<trust-anchors>
           
<certificates src="@raw/my_ca"/>
       
</trust-anchors>
   
</domain-config>
</network-security-config>


와 같은 파일을 만들어 준 뒤

<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
   
<application android:networkSecurityConfig="@xml/network_security_config"
                    ...
>
        ...
   
</application>
</manifest>

와 같이 androidmanifest에 등록해 줍니다.


다른 방법은.

<base-config cleartextTrafficPermitted="true" />

을 network_security_config.xml에 등록을 해서 기본적으로 http를 지원하게 하는 방법도 있습니다. 이건 지정된 domain이외에 기본적으로.. 외부의 api 에 대해서 http를 지원하겠다고 하는 것입니다.


또 다른 방법으로는

<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
   
<application android:useCleartextTraffic="true"
                    ...
>
        ...
   
</application>
</manifest>

해주는 것입니다.

자세한 설명은

android:usesCleartextTraffic


링크를 통해서 확인할 수 있습니다.


그래도.. 왠만하면 api는 https를 지원하는게 좋겠죠!!!!

반응형

'Android' 카테고리의 다른 글

goodbye? onActivityResult...  (0) 2020.05.14
kotlin file read...  (0) 2019.04.17
AndroidStudio에서 File Template이용하기.  (0) 2016.06.14
AndroidStudio에서 lombok 사용하기  (0) 2016.04.10
Dagger2 + Sqlbrite  (0) 2015.11.17
반응형

AndroidStudio에서는 live template라는 좋은 기능이 있습니다. 단순하게 재사용이 많은 코드에 대해서 매크로 같은 기능이라고 해야 할까요?? 한두단어 쳤을 때 해당 template에 따라서 코드가 작성되는 것입니다. 단적인 예를 들어서 Fragment에서 새로운 instance를 상성하기 위해서는 

이와 같은 코드를 작성한다고 했을 때 키보드를 그래도 수십번??? 의 타이핑이 필요 합니다. 하지만 live template 기능을 이용하면 

이렇게 하면 단 몇번의 타이핑으로 원하는 기본 코드를 작성할 수 있습니다.


그렇다면 File Template기능은.. java나 html..javascript등에서 자주 사용하는 코드들에 대해서 기본 template를 작성해 두고 빠르게 원하는 기본 코드를 작성하도록 해주는 기능 입니다. 기본적으로 Singleton이 되어 있는데 구성을 보면 

이와 같이 되어 있어서 코드 작성할 때 File Template의 Singleton을 선택하게 되면 "NAME"만 입력하면 위와 같은 template에 정의 된 코드들이 만들어지게 됩니다. 


그렇다면 내가 자주 사용하는 코드를 재사용 할 template를 만들어 둔다면 기본적인 코드들의 활용이 높아질 것입니다.


저같은 경우는 Android개발 시 BaseActivity라는 부모 class를 만들고 상속을 통한 하위 구현 Activity를 만들 고 있습니다. 이 부분에서 file template를 통해서 구현의 속도를 향상시키는 방법은.

new -> Edit File TEmplates...를 선택합니다.

그러면 좀전 위에서 본 File and Code Template라는 메뉴를 보실 수 있습니다.


간단하게 

이와같은 template를 만들었다고 한다면.. ${NAME} 에서 이름을 입력 받고, ${LAYOUT_RES_ID} 입력 받는다면 BaseActivity를 상속받은 위 template가 만들어 지게 됩니다. 

위에서 정의한 NAME에는 Child로.. LAYOUT_RES_ID 에서는 activity_child를 입력했습니다.


결과는 

이와 같은 코드가 만들어 집니다.


만약 Adapter나 RecyclerView같은 코드의 template를 만들어 둔다면 더 활용도가 높을 것 입니다.

개발 속도를 빠르게 하는방법은 여러가지가 있겠지만 tool에 대한 이해도를 높이는 것도 좋은 방법이지 않을 까 합니다.


다음에는 이런 template를 group화 시켜서 하나가 아닌 여러개의 파일을 한번에 만드는 방법을 알아볼까 합니다.

반응형

+ Recent posts