android에서 사용하기 위해 다음 링크를 따라서 진행한다.
kakao지도 Android API 가이드
카카오 개발자 사이트
위 링크를 통해 카카오 개발자 사이트에 접속하고 개발자 등록을 한다.
카카오 계정으로 로그인 한 후 개발자 등록을 한다.
개발자 등록은 동의와 이름을 넣는 정도로 끝났다.
내 어플리케이션
으로 이동한다.
애플리케이션 추가하기
를 누른다.
① : API를 사용할 어플리케이션의 이름을 작성한다. '정확하지 않은 정보일 경우 서비스 이용이 제한'되기 때문에 유의해서 작성해야한다.
② : 사업자가 아닌 개인은 아무거나 넣어도 상관없다.
생성을 완료하고, 성공하면 다음 페이지를 볼 수 있다.
플랫폼을 등록시켜야한다.
앱의 '키 해시' 값이 필요하다.
해시 키 값을 받는 방법은 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
를 실행하였다.
마지막에 해시 키값이 나오는 것을 볼 수 있다.
① : AndroidManifest.xml의 package=부분을 작성해서 넣는다.
② : 위에 3. 에서 얻은 키 해시 값을 작성해서 넣는다.
값을 작성해서 넣은 뒤 저장을 누른다.
플랫폼 등록이 완료되면 다음과 같아진다.
<uses-permission android:name="android.permission.INTERNET">
</uses-permission>
android:usesCleartextTraffic="true"
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION">
</uses-permission>
<meta-data android:name="com.kakao.sdk.AppKey"
android:value="네이티브 앱 키"/>
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation files('libs/libDaumMapAndroid.jar')
카카오 개발자 사이트 여기에서 다운로드한 압축파일 ㅜㅇ
'libs'폴더는 프로젝트명\app\src\main에 넣고 폴더명을 'jniLibs'로 바꾼다.
'libDaumMapAndroid.jar'파일은 프로젝트명\app\libs에 넣어준다.
<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로 실행하게 되면 실행이 되지않고 무한 반복으로 오류메시지만 출력이 된다.
이유는 모르겠다.