쉐어하우스 프로젝트이다보니, 막히던 부분 중 하나는 다음카카오 지도 API이다.
이게 참.. ㅋㅋ. 구현하기 위해 참고하는 개발자 페이지가 너무나도 불친절하다..
필자도 참... 여러가지 오류를 경험했다.
함정카드는, 이 가이드에 해시 키를 요구하면서 해시 키를 만드는ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ방법이 없다......
어디서 찾냐면,
https://developers.kakao.com/docs/latest/ko/getting-started/sdk-android-v1#key-hash
Kakao Developers
카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.
developers.kakao.com
여기서 찾아야 한다 (ㅋㅋ)
해시 키를 만드는 법이 두가진데
1. openSSL을 다운 받아서 만들기
http://slproweb.com/products/Win32OpenSSL.html
Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions
Minimum system requirements: Windows XP or later 32MB RAM 200MHz CPU 30MB hard drive space Recommended system requirements: Windows XP or later 128MB RAM 500MHz CPU 50MB hard drive space April 21, 2020 - All users and applications should be using the OpenS
slproweb.com
(필자는 다음 파일을 다운받았는데, 본인의 수준에 맞는 SSL을 넣으면 된다.)
이후에 본인의 안드로이드 디버그 파일이 있는 곳으로 이동한다.
주로, C:\Users\(사용자 이름)\.android 폴더에 위치하고 있다.
cmd를 이용해 이 곳으로 이동한 후, 다음과 같은 코드를 입력하면 된다.
keytool -exportcert -alias androiddebugkey -keystore C:\Users\(유저명)\.android\debug.keystore -storepass android -keypass android | C:\OpenSSL-Win64\bin\openssl sha1 -binary | C:\OpenSSL-Win64\bin\openssl base64
주의할 점
1) 만일 디버그 키스토어가 다른 곳에 위치할 경우 -keystore 뒤의 경로를 수정해야함.
2) openSSL 경로가 다르면 그 경로도 수정해야함..
사실 이거보다 더 쉬운법은 디버그 코드를 돌려서 수정하면 되는데,
2. 자바 코드로 디버그 키 받기
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.d("KeyHash", "해시 키 오류 : " + signature, e);
}
}
}
키를 발급 받고 해시 키를 플랫폼에 등록하면 된다.
근데 이게 참.. ㅋㅋ 시키는데로 하면 여러가지 오류를 맛볼 수 있는데,
1. Can't load 오류
페이지에서 라이브러리를 다운 받으면 파일이 3개, jar 파일 하나를 받을 수 있는데, 파일을 올바르게 위치시켰는지 확인한다.
이 때 jniLibs 폴더는 직접 만들어야 한다.
그런데도 안된다? jar 파일의 의존성 문제일수 있다.
file-Project Structure 로 들어간다.
Dependencies로 들어가, 저 작은 + 상자를 눌러보자.
눌러서 jar Dependencies를 누르고, 내가 가져온 외부 jar 파일에 의존성을 걸어주면 된다.
그런데도 못찾는다면? import를 의심해보자.
import net.daum.mf.map.api.MapView;
맵 뷰가 다음과 같이 임포트 되어 있어야 한다.
그리고 가상기기에서는 라이브러리를 못 찾을 확률이 매우매우 높으니, 그냥 일반 안드로이드 기기로 돌리는게 더.. 마음이 편함 ㅎㅎ
2. 화면이 검은색으로 뜨는데요!!
Manifest 문제일 가능성이 있다.
1) 권한 부여
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mary.sharehouseproject">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<application
android:allowBackup="true"
..하략
다음처럼 세 개의 퍼미션을 제대로 걸었는가,
2) meta-data의 위치
.. 중략
</intent-filter>
</activity>
<meta-data
android:name="com.kakao.sdk.AppKey"
android:value="발급받은 앱 키"/>
</application>
</manifest>
다음과 같은 위치에 메타 데이터가 위치해야한다.
(이게 진짜 다음카카오 홈페이지에 안나와있어서 빡도는 부분임)
그런데도 되지 않는다면
https://developer.android.com/studio/build/configure-apk-splits?hl=ko
다중 APK 빌드 | Android 개발자 | Android Developers
다중 APK를 위한 앱을 빌드하고 구성하는 방법을 알아보세요.
developer.android.com
다음 코드를 통해 다중 apk 설정을 진행한다.
splits {
abi {
enable true
reset()
include 'x86', 'armeabi-v7a', 'x86_64'
universalApk true
}
}
그럼 지도가 뜰 것이다 따란~
'Project > 안드로이드 프로젝트(ShareHouse)' 카테고리의 다른 글
20.08.17. 쉐어하우스 프로젝트 진행영상 (0) | 2020.08.17 |
---|---|
Android Studio, JAVA] 구글 firebase를 이용하여 아이디의 중복 여부 테스트 하기 (2) | 2020.08.15 |
Android Studio, JAVA] 구글 파이어베이스 데이터베이스와 리사이클러 뷰 이용 시 리사이클러 뷰가 뜨지 않는 현상 해결 (0) | 2020.08.14 |
Android Studio, JAVA] 스크롤뷰 내부의 뷰를 찾아 Smooth하게 Scroll 하기 (0) | 2020.08.12 |
20.08.08 쉐어하우스 프로젝트 진행영상 (0) | 2020.08.12 |