쉐어하우스 프로젝트이다보니, 막히던 부분 중 하나는 다음카카오 지도 API이다.
이게 참.. ㅋㅋ. 구현하기 위해 참고하는 개발자 페이지가 너무나도 불친절하다..
필자도 참... 여러가지 오류를 경험했다.
함정카드는, 이 가이드에 해시 키를 요구하면서 해시 키를 만드는ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ방법이 없다......
어디서 찾냐면,
https://developers.kakao.com/docs/latest/ko/getting-started/sdk-android-v1#key-hash
여기서 찾아야 한다 (ㅋㅋ)
해시 키를 만드는 법이 두가진데
1. openSSL을 다운 받아서 만들기
http://slproweb.com/products/Win32OpenSSL.html
(필자는 다음 파일을 다운받았는데, 본인의 수준에 맞는 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 설정을 진행한다.
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 |