반응형
안드로이드 개발에 있어 카카오 API, 구글 API, 페이스북 API등등 여러 방면에 있어서 키해시(Key Hash)를 요구하는 경우가 많습니다. 키해시는 OpenSSL과 터미널을 이용해 얻을 수도 있지만, 오늘은 소스코드 상에서 얻는 방법에 대해 소개하고자 합니다.
<소스코드>
// 키해시 출력
@RequiresApi(Build.VERSION_CODES.P)
fun printKeyHash(context: Context) {
try {
val packageInfo = context.packageManager.getPackageInfo(
context.packageName,
PackageManager.GET_SIGNING_CERTIFICATES
)
val signingInfo = packageInfo.signingInfo.apkContentsSigners
for(signature in signingInfo) {
val messageDigest = MessageDigest.getInstance("SHA")
messageDigest.update(signature.toByteArray())
val keyHash = String(Base64.encode(messageDigest.digest(), 0))
Log.e(TAG, "xxx keyHash=$keyHash")
}
} catch(e: PackageManager.NameNotFoundException) {
e.printStackTrace()
} catch(e: NoSuchAlgorithmException) {
e.printStackTrace()
}
}
구글링을 통해 나오는 소스들은 대부분 deprecated되있는게 많습니다!
대신 위 소스를 이용하면 최신 안드로이드 버전에서 문제없이 사용하실 수 있습니다:)
(다만 안드로이드 28이상부터 해당 코드가 동작합니다...)
반응형
'Android' 카테고리의 다른 글
[안드로이드 / Kotlin] Room (0) | 2022.04.27 |
---|---|
[안드로이드 / Kotlin] ViewModel(뷰모델) (0) | 2022.04.12 |
[안드로이드 / Kotlin] 코루틴(Coroutine) (0) | 2022.03.21 |
[안드로이드 / Kotlin] 타이머(Timer) 구현하기 (0) | 2022.03.18 |
[안드로이드 / Kotlin] BottomSheetDialogFragment (0) | 2022.03.16 |