읽기 전

  • 불필요한 코드나 잘못 작성된 내용에 대한 지적은 언제나 환영합니다.
  • 개인적으로 사용해보면서 배운 점을 정리한 글입니다.

프로젝트 Hash key(해시 키) 구하기

해시 키는 앱마다 갖는 고유 값으로 페이스북, 카카오톡 로그인 등의 기능 구현을 위해 필요하다. 우선 개발할 때만 사용하는 기본적인 해시키는 다음 코드를 실행하여 콘솔에 출력할 수 있다.

MainActivity 코드

package com.example.mysnsaccount;

import androidx.appcompat.app.AppCompatActivity;

import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
import android.os.Bundle;
import android.util.Base64;
import android.util.Log;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        getHashKey();

    }

    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.e("KeyHash", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            } catch (NoSuchAlgorithmException e) {
                Log.e("KeyHash", "Unable to get MessageDigest. signature=" + signature, e);
            }
        }
    }
}

콘솔에 Hash key를 출력한 결과이다.

Android_Key_Hash-01

릴리즈용 키 파일 생성하기

위에서 작성한 기본 Hash key는 개발환경이 달라지거나 협업 과정에서 Hash key가 일치하지 않는 경우 기능이 먹통이 될 수 있기 떄문에 제 3자가 함께 기능을 구현하거나 사용할 제품을 출시할 땐 별도의 릴리즈용 키를 생성하여 관리해야 한다. 물론 여러 가지가 있겠지만 개인적으로 간단하다고 생각하는 방법으로 정리하였다.

Generate Signed APK

APK를 생성 후 새로운 key를 생성하는 화면으로 가서 해당 정보들을 기입한다.

Android_Key_Hash-02

그럼 지정한 path에 배포용 jks 파일이 생성되었음을 확인할 수 있다.

Android_Key_Hash-03

다른 개발 환경을 가진 개발자에게 키 파일과 정보를 전달하면 동일 환경으로 테스트할 ㅅ 있다. 다만 보안에 대해서 반드시 신경을 쓰고 특히 키 파일을 생성할 때 설정한 비밀번호는 분실의 위험이 없도록 관리해야 한다. 스토어에 배포한 ㅟ 분실하면 이후 업데이트가 불가함을 물론 새롭게 업로드하여도 다른 앱으로 인식하기 때문이다.

생성된 jks 파일 프로젝트에 적용하기

릴리즈용 jks 파일을 생성하였다면 해당 파일을 프로젝트에 적용해야 한다. [Project Structure] - [Modules] - [Signing Configs]에 접근하여 생성했던 jks 파일의 경로와 입력했던 값들을 모두 넣고 적용하면 된다.

Android_Key_Hash-04

적용 후 다시 Hash key를 출력하면 값이 달라졌음을 확인할 수 있다.

Android_Key_Hash-05

해당 값을 개발자 센터 등에 등록하고 팀원에게 jks 파일을 공유하면 다른 팀원도 같은 기능을 테스팅, 개발할 수 있다. 기능 분담이 확실하다면 상관없겠지만 사이드 플젝을 진행하면서 그런 경우는 드물었어서... 적절히 올바른 방법을 채택하면 되겠다.

참고자료

+ Recent posts