본문 바로가기
프로그래밍/Android

카카오맵 API 사용을 위한 해시키 값 구하기

by Youngs_ 2021. 7. 24.

코드 사용보다는  cmd 창에서 명령어로 구하는것이 더 간편하다

디버그 해시키 값 구하기

keytool -exportcert -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64

 

릴리즈 해시키 값 구하기

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | PATH_TO_OPENSSL_LIBRARY\bin\openssl base64

 

 


 

openssl을 사용하여 해시키 값을 구하면 이상한 해시키 값을 가져올 수 있다고해서 코틀린 코드를 이용해 찾았더니 

E/MapViewLocationManager 에러가 나오지않았다.

import android.content.pm.PackageManager
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Base64
import android.util.Base64.encodeToString
import android.util.Log
import android.view.ViewGroup
import androidx.annotation.RequiresApi
import net.daum.mf.map.api.MapView
import java.security.MessageDigest
import java.security.NoSuchAlgorithmException

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
            getHashKey()
        }

        val mapView = MapView(this)

        val mapViewContainer = findViewById(R.id.map_view) as ViewGroup

        mapViewContainer.addView(mapView)
    }

    private fun getHashKey() {
        var packageInfo: PackageInfo? = null
        try {
            packageInfo = packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES)
        } catch (e: PackageManager.NameNotFoundException) {
            e.printStackTrace()
        }
        if (packageInfo == null) Log.e("KeyHash", "KeyHash:null")
        for (signature in packageInfo!!.signatures) {
            try {
                val md = MessageDigest.getInstance("SHA")
                md.update(signature.toByteArray())
                Log.d("KeyHash", Base64.encodeToString(md.digest(), Base64.DEFAULT))
            } catch (e: NoSuchAlgorithmException) {
                Log.e("KeyHash", "Unable to get MessageDigest. signature=$signature", e)
            }
        }
    }
}

 

혹은 해당 프로젝트 폴더의 cmd창으로 이동해서 아래 명령어를 입력한다.

openssl이 설치되어있어야한다.

keytool -exportcert -alias androiddebugkey -keystore "%USERPROFILE%\.android\debug.keystore" -storepass android -keypass android | openssl sha1 -binary | openssl base64

 


출처 : https://snaildeveloper.tistory.com/11

 

[Kakao Api] 키 해시 생성 및 플랫폼 등록

윈도우 기준으로 작성 된 방법이므로, Mac 등 다른 운영체제의 방법과는 상이할 수 있습니다. 1. Kakao Developer에 애플리케이션 추가 https://developers.kakao.com/ Kakao Developers 카카오 API를 활용하여 다양

snaildeveloper.tistory.com

 

댓글