[프로보노] APP 개발 - 카카오 지도 api

윤인경·2023년 7월 30일
0

프로보노

목록 보기
1/3

android에서 사용하기 위해 다음 링크를 따라서 진행한다.
kakao지도 Android API 가이드

1. 카카오 개발자 사이트 접속

카카오 개발자 사이트
위 링크를 통해 카카오 개발자 사이트에 접속하고 개발자 등록을 한다.
카카오 계정으로 로그인 한 후 개발자 등록을 한다.
개발자 등록은 동의와 이름을 넣는 정도로 끝났다.

2. 어플리케이션 생성


내 어플리케이션으로 이동한다.


애플리케이션 추가하기를 누른다.

  • ① : API를 사용할 어플리케이션의 이름을 작성한다. '정확하지 않은 정보일 경우 서비스 이용이 제한'되기 때문에 유의해서 작성해야한다.

  • ② : 사업자가 아닌 개인은 아무거나 넣어도 상관없다.


생성을 완료하고, 성공하면 다음 페이지를 볼 수 있다.

플랫폼을 등록시켜야한다.
앱의 '키 해시' 값이 필요하다.

3. 어플리케이션 해시 키 값 받기

해시 키 값을 받는 방법은 2가지가 존재한다.
1. java코드를 작성하여 Logcat으로 해시값을 확인한다.
2. terminal창에서 해시값을 확인한다.

java코드를 작성하기에 이미 좀 많은 코드를 작성해두어서 건드리지 않고 terminal창에서 해시값을 확인하는 방법을 사용하였다.

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

위 코드를 terminal창에 작성하면 해시값이 나온다고 하여 작성하였더니 아래 사진처럼 나왔다.

현재 App개발에 사용하고 있는 것은 jdk-17버전으로 jdk-17을 설치 하였다.

sudo apt install openjdk-17-jre-headless

설치를 완료하고 다시

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

를 실행하였다.

마지막에 해시 키값이 나오는 것을 볼 수 있다.

4. 플랫폼 등록하기



  • ① : AndroidManifest.xml의 package=부분을 작성해서 넣는다.

  • ② : 위에 3. 에서 얻은 키 해시 값을 작성해서 넣는다.

값을 작성해서 넣은 뒤 저장을 누른다.

플랫폼 등록이 완료되면 다음과 같아진다.

5. AndroidManifest에 Permission 등록하기

  • API 통신을 위한 인터넷 permission추가를 한다.
<uses-permission android:name="android.permission.INTERNET">
</uses-permission>

  • android:usesCleartextTraffic="true" 추가한다.
android:usesCleartextTraffic="true"

  • ACCESS_FINE_LOCATION permission추가를 한다.
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION">
</uses-permission>

  • meta data를 추가한다.
<meta-data android:name="com.kakao.sdk.AppKey" 
           android:value="네이티브 앱 키"/>

build.gradle(:app)에 의존성 추가

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

카카오맵 SDK를 프로젝트에 추가

카카오 개발자 사이트 여기에서 다운로드한 압축파일 ㅜㅇ
'libs'폴더는 프로젝트명\app\src\main에 넣고 폴더명을 'jniLibs'로 바꾼다.
'libDaumMapAndroid.jar'파일은 프로젝트명\app\libs에 넣어준다.

activity_map.xml 작성

    <net.daum.mf.map.api.MapView
        android:id="@+id/map_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

오류 발생

    private void getHashKey() {
        PackageInfo packageInfo = null;
        try {
            packageInfo = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        if (packageInfo == null)
            Log.e("KeyHash", "KeyHash:null");

        for (Signature signature : packageInfo.signatures) {
            try {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                Log.d("KeyHash", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            } catch (NoSuchAlgorithmException e) {
                Log.e("KeyHash", "Unable to get MessageDigest. signature=" + signature, e);
            }
        }
    }

로 해시 키 다시 확인
다시 확인하니 키가 약간 달랐다. 여기에서 등장한 키로 작성하여 넣었다.

Can`t load DaumMapEngineApi.so file
위와 같은 오류코드가 발생하였다.
이를 해결하기 위해 찾은 것은
build.gradle(:app)에 다음 문구를 추가한다.

android {
...
  splits {
          abi {
              enable true
              reset()
              include 'x86', 'x86_64', 'armeabi-v7a', 'armeabi'
              universalApk false
          }
      }
}

이렇게 작성했음에도 불구하고 계속 오류 메시지가 나왔다.

결론은 실제 핸드폰을 연결하여 실행하여야 오류 메시지가 나오지 않는다.
virtual device로 실행하게 되면 실행이 되지않고 무한 반복으로 오류메시지만 출력이 된다.
이유는 모르겠다.

profile
코딩 공부 및 프로젝트 정리

0개의 댓글