[Android] Daum Map SDK 적용하기

다음 맵 SDK를 사용하면서 공식 가이드대로 진행시 일부 안되는 부분들이 있음.

  1. 카카오 개발자 사이트 가입

  2. 카카오 개발자 사이트에서 앱 생성

  3. Android 플랫폼 추가 : 앱 선택 - 설정 - 일반 - 플랫폼 추가 - Android 선택 후 추가

  4. 키 해시 등록 : Android 플랫폼 선택 후 키 해시 등록

  5. 라이브러리 파일 추가 Android Daum Map 라이브러리 구성  가이드에는 위와 같이 libs 파일에 추가하라고 하지만 이대로 할 경우 오류 발생함. libDaumMapAndroid.jar는 위 위치가 맞고 gradle 에 아래와 같이 추가가 필요함.

    dependencies {
        implementation fileTree(include: ['*.jar'], dir: 'libs')
        implementation files('libs/libDaumMapAndroid.jar')
    }

    armeabi와 armeabi-v7a는 /src/main 디렉토리 아래 jniLibs 디렉토리 생성 후 복사함. 

  6. AndroidManifest.xml 에 Permission과 APP Key 추가

    <uses-permission android:name="android.permission.INTERNET">
    </uses-permission>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION">
    </uses-permission>
    <meta-data android:name="com.kakao.sdk.AppKey" android:value="XXXXXXXXXXXXXXXXXXXXXXXXXXXX"/>
  7. 코드 작성

    MapView mapView = new MapView(this);
    ViewGroup mapViewContainer = (ViewGroup) findViewById(R.id.map_view);
    mapViewContainer.addView(mapView);


Android OS 9 Pie 버전부터는 WebView에 일반적인 텍스트로 "http://" URL 접근이 막혔습니다. 

(tagetSdkVersion 28 이상일 경우)

증상 : WebView에서 Webpage not availablenet::ERR_CLEARTEXT_NOT_PERMITTED 오류 발생

참고 : https://developer.android.com/training/articles/security-config#CleartextTrafficPermitted

검색해보니 이를 수정하기 위해서는 3가지 방법이 있습니다. 

(https://stackoverflow.com/questions/45940861/android-8-cleartext-http-traffic-not-permitted)

  • res/xml/network_security_config.xml 추가

    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <domain-config cleartextTrafficPermitted="true">
            <domain includeSubdomains="true">ebookfrenzy.com</domain>
        </domain-config>
        <domain-config cleartextTrafficPermitted="true">
            <domain includeSubdomains="true">amazon.com</domain>
        </domain-config>
        <domain-config cleartextTrafficPermitted="true">
            <domain includeSubdomains="true">nytimes.com</domain>
        </domain-config>
    </network-security-config>

    위 파일 추가 후 AndroidManifest.xml 에서 application에 networkSecurityConfig속성 추가

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

    이 방법은 network_security_config.xml 파일에 앱 내 텍스트로 사용할 URL들이 정의되어 있어야 함.

    cleartextTrafficPermitted 속성이 true일 경우 동작을 함.


  • AndroidManifest.xml 에서 application 의 usesClearTextTraffic 속성 수정

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

    이 방법은 텍스트 URL 을 무조건 허용하게 됨.


  • Android Manifest.xml에서 manifet의 targetSandboxVersion 속성을 사용 중일 경우 관련 내용 : https://developer.android.com/guide/topics/manifest/manifest-element#targetSandboxVersion

    위 관련 내용에 따르면 속성 값이 높을수록 보안 수준이 높아지며, 2일 경우 usesCleartextTraffic의 기본 값이 false가 됨. 그래서 이 속성의 값을 1로 변경해야함. 다만 Android 8.0 (API 26) 이상을 타겟팅하는 Android Instant Apps의 경우 이 속성을 2로 설정해야 함.

    <?xml version="1.0" encoding="utf-8"?>
    <manifest android:targetSandboxVersion="1">
        ...



어제 가족들과 광명동굴을 다녀왔어요.
명성대로 차가 많이 막힐듯 하여 나름 일찍 출발하였는데요 .
10시 전에 도착할땐 생각보단 사람이 많지 않더라고요.
주차장서 좀 걸어가면 매표소를 지나 동굴 입구가 나옵니다.
동굴 입구부터 화아악 시원해집니다.
길이도 꽤 길고 오르락 내리락 코스도 있습니다.
계단 다니시기 불편하신 분들은 계단이 나름 가파른 편이니 내려가는 코스가 나올때 우회해서 가시는게 나을듯 싶더라고요.
동굴 내부는 이것저것 테마를 가지고 잘 꾸며놓았고요.
다녀본 동굴 중엔 나름 인공적인 눈요기꺼리가 많았네요.
다만 연관성 없어보이는 주제들이 많지만 더위 피할 요령으로 가시는 분들이 많기에 문제가 될거 같진 않더라고요.
깊이 내려갈수록 다소 습해지고 바람도 안불면서 계단을 오르면서 땀이 조금 맺히긴 했어요.
다 돌고 나오니 한 시간 정도 소요된거 같네요.
그래도 서울 근교에 있는 동굴이라는 특수성에 한번씩 구경할만 했답니다.
그리고 나오는 길에 도로에 쭈욱 이어진 차량 행렬에 그 명성도 다시 확인했고요.
가실거라면 일찍 가시길요~~

+ Recent posts