1. 준비 (1)
1. 카카오 개발자 사이트 접속
- 개발자 등록
- 앱 등록
2. 안드로이드 플랫폼 등록
카카오 개발자 사이트 로그인 -> 애플리케이션 클릭 -> 앱설정 -> 플랫폼 -> Android 플랫폼 등록
- 패키지명 :
AndroidManifest.xml
에서pachage="**<이 부분>**"
<이 부분>이라고 적은 부분에 있는 값을 복사 - 마켓 url 생성 : 패키지명 입력하면 자동 생성됨! 따로 저장해두기
- 키해시 : 아래 5번 방법을 통해 얻은 값을 등록해주기
3. 키 해시 등록
public static void getKeyHash(Context context){
PackageManager pm = context.getPackageManager();
try{
PackageInfo packageInfo = pm.getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
for(int i = 0; i < packageInfo.signatures.length; i++){
Signature signature = packageInfo.signatures[i];
try {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("<클래스명>","keyhash="+ Base64.encodeToString(md.digest(), Base64.NO_WRAP));
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
}catch(PackageManager.NameNotFoundException e){
e.printStackTrace();
}
}
Log에서 TAG를 클래스 명으로 바꿔주고, 함수를 호출하면 된다. (예 : getKeyHash(this);
)
예시 : Log.d("MainActivity","keyhash="+ Base64.encodeToString(md.digest(), Base64.NO_WRAP));
그러면 Logcat에 keyhash 가 뜬다. 이 것을 사용하면 됨
-> 마찬가지로 플랫폼에 키해시값도 등록해준다.
2. 준비 (2)
1. SDK 다운로드
Kakao 지도 API
위 페이지에 접속해서 다운받는다.
2. SDK 앱에 넣기
안드로이드스튜디오에서 좌측상단에 있는 Android를 Project로 바꾼 뒤,
- libs 폴더에
libDaumMapAndroid.jar
파일 넣기 - jniLibs 폴더 만든 다음 세개 폴더 채로 붙여넣기
결과 : 아래와 같은 폴더 구조가 되면 성공적
3. AndroidManifest.xml 에 다음 두 가지 추가
-
permission 추가
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
INTERNET
: 인터넷 사용 허용ACCESS_COARSE_LOCATION
: 앱 사용중에만 위치정보 액세스 허용
(Android 10 이상에서는 백그라운드 허용 보다 앱 사용시 허용 방식을 권장한다.)
-
app key 추가 → [중요] application 아래에 넣기!!
(이렇게 하지 않으면 빌드했을 때 지도가 표시되지 않고 검정화면만 뜨게된다.)<application ... <meta-data android:name="com.kakao.sdk.AppKey" android:value="<native-app-key>"/> </application>
카카오 개발자 페이지 → 앱설정 → 요약정보 →
네이티브 앱 키
를 복사해서 붙여넣는다.(참고 - 지도대신 검정화면만 뜨는 모습)
4. jar 파일 프로젝트에 추가
- Project structure 실행
Jar dependencies
→libDaumMapAndroid.jar
선택 →OK
-
build.gradle(:app)
에 다음과 같이 생겨있으면 성공! (아래 코드를 직접 입력해서 추가해도 된다.)dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation files('libs/libDaumMapAndroid.jar' }
3. 코드를 통해 적용
1. 코드 :
-
RelativeLayout을 선언한 뒤, map_view(가정)라는 id를 지정한다.
<!-- activity_main.xml --> <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <RelativeLayout android:id="@+id/map_view" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> ... </androidx.constraintlayout.widget.ConstraintLayout>
-
initView() 메서드 내부의 코드 세 줄을 추가한다. (onCreate안에 바로 코드를 추가해도 무방함)
// MainActivity.java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { MapView mapView = new MapView(this); ViewGroup mapViewContainer = (ViewGroup) findViewById(R.id.map_view); mapViewContainer.addView(mapView); }
2. 폰 연결해서 빌드..!
이런 식으로 지도가 뜨면 성공!