728x90

1. 서론

  • 카카오맵 API는 다음 링크에 가이드가 존재합니다.
    http://apis.map.kakao.com/android/guide/

    먼저 사용했던 네이버 지도는 gradle에 한두줄 적고 설정하면 알아서 되었습니다만...
    카카오맵은 가이드에 라이브러리 파일 추가시 어떻게 해야하는지 불편하고 모호한 점들이 있어서,
    초보였던 제가 겪었던 시행착오 를 작성하여 공유 합니다.

2. 시행착오

1) 라이브러리 파일 추가 경로는?

  • 가이드에는 아래처럼 적혀있습니다.
  • 매우 초보인 저의 궁금증 및 문제:
    1) so 확장자 파일은 뭐지?
    2) 정작 2019년 7월 기준으로 최신 SDK 압축파일 까보니, 가이드에서 3개라는 파일이 4개로 늘어나 있음. (arm64-v8a 폴더?) 그대로 복붙하면 되는건가?
    3) libs 폴더란걸 그냥 생성하고 똑같이 추가했으나 되지 않음.

  • 각 의미를 찾아보니:
    1) 카카오의 SDK 파일인 ".so" 확장자 파일은 JNI library를 의미합니다.

    2) 'arm64-v8a'는 2019년 8월부터 구글플레이에 올라가는 앱 64비트를 대응하기 위한 네이티브 코드 라이브러리 소스를 의미. (안드로이드의 출발은 32비트였으나 2017년 이후로는 64비트 cpu를 지원하는 기기들로 변화하고 있기 때문) --> 즉 현재 대부분의 기기가 64비트이기 때문에, 가이드가 그 전에 작성된 것으로 추정됨. (즉 무조건 4개 파일 전부 추가하세요)

    3) libs 폴더에 so파일 넣는건 과거 Eclipse 개발 환경에서 추가할 때의 경로. Android에서는 .jar파일은 libs 폴더, .so파일은 jniLibs 폴더를 생성하고 추가 해야합니다.

2) 키 해시는 뭘 입력 해야하는가?

- 콘솔에 들어가서 설정 > 일반 > 플랫폼 추가 - 안드로이드 시

아래처럼 키 해시를 입력 해야만 합니다.

만약 해당 키 해시가 등록되지 않으면, 라이브러리를 올바로 추가하고 개발을 잘 해도 화면에 나타나지 않습니다.
그런데 이 키 해시는 debug용과 release용 keyStore에 따라 달라집니다. 따라서 필요에 따라 해당 코드를 이용해서 키 해시를 입력하시면 됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
try{
    PackageInfo info = getPackageManager().getPackageInfo("com.android.패키지 경로",PackageManager.GET_SIGNATURES);
    for(Signature signature : info.signatures){
        MessageDigest md = MessageDigest.getInstance("SHA");
        md.update(signature.toByteArray());
        Log.d("keyHash:",Base64.encodeToString(md.digest(),Base64.DEFAULT));
    }
 
}catch(Exception e){
    e.printStackTrace();
}
 
 
cs

작성하다보니까 지도 개발 가이드 문서에는 없지만, 카카오 Android 개발가이드에 설명이 있었네요.
보다 설명이 더 자세히 나와있으므로 설명은 해당 링크 참고하시면 될거 같습니다.
https://developers.kakao.com/docs/android/getting-started#키해시-등록

Reference

728x90
728x90

ImageView에 넣을 이미지의 크기를 조절하는 건 scaleType 속성을 설정하면 된다.

 

 

1
2
3
<ImageButton 
    android:scaleType="centerInside"/>
 
cs

 

MATRIX = 원본 크기 그대로 보여줌 (왼쪽상단 정렬) 
CENTER = 원본 크기 그대로 보여줌 (가운데 정렬)
CENTER_CROP = View 영역에 공백이 있으면 채워서 보여줌(비율유지)
CENTER_INSIDE = View 영역을 벗어나면 맞춰서 보여줌(비율유지)
FIT_START = View 영역에 맞게 보여줌 (왼쪽상단 정렬, 비율유지)
FIT_CENTER = View 영역에 맞게 보여줌 (가운데 정렬, 비율유지)
FIT_END = View 영역에 맞게 보여줌 (왼쪽하단 정렬, 비율유지)
FIT_XY = View 영역을 가득 채워서 보여줌(비율유지 안함)

 

 

Reference

https://isntyet.tistory.com/65

 

 

728x90
728x90

 

간단하게 App 내부에 저장한 리소스를 불러와야할 경우, string과 같은 문자열로 컨트롤 하고 싶다면

 

(context.)getResources().getIdentifier(String name, String defType, String defPackage)

 

- 파일명(name): "@drawable/" (생략가능) + 본인이 저장한 파일명 String

- 디렉토리명(defType): "id", "drawable"

- 패키지명(defPackage): (context.)getPackageName(); 

 

 

 

Reference
https://developer.android.com/reference/android/content/res/Resources

https://kheru.tistory.com/54

728x90
728x90

Android 앱 개발을 하면서 서버와 통신을 위해 네트워크 기능을 쓸 경우가 대다수이다.


기존 네트워크 기능을 위해 HttpURLConnection HttpClient (OS 6.0 부터 삭제) 등이 쓰여왔고, OS 3.0 (API 11) 이후에 NetworkOnMainThreadException 를 피하고자 Thread, AsyncTask 등을 사용하기도 했다.

그 후 여러 편의성을 제공하는 통신 라이브러리 들이 등장하였다. OkHttp, Volley (설명), Retrofit ... (라이브러리 비교) 


출처: http://nobase-dev.tistory.com/6



주요 역사


출처: http://pluu.github.io/blog/android/2016/12/25/android-network/





동기 vs 비동기

 http://jajubogi.tistory.com/14



HttpUrlConnection, Retrofit, OKHttp...?

이런 통신기능을 더쉽게 사용하기위해 여러 종류의 라이브러리들이 존재한다.

대표적으로 Android SDK에서 공식으로 지원했던 HttpUrlConnection (현재는 Deprecated된..) , 구글의 Volley , Square의 OKHttp , Retrofit 등이 있다. 


현재 HttpUrlConnection는 Deprecated되었고, 

그에따라서 HttpUrlConnection를 사용하던 Volley도 내부적으로는 OKHttp를 많이 사용한다.

Retrofit은 Okhttp를 더 쉽게 사용할수있게하는 라이브러리다 .

( OKHTTP의 래퍼클래스라고 생각하면된다. 내부적으로는 OKHTTP를 사용한다. ) 


출처: http://namjackson.tistory.com/26 




HttpUrlConnection

1. 안드로이드 AsyncTask를 이용한 HttpUrlConnection

출처: https://kutar37.tistory.com/101 [저장소]



2. 안드로이드 HTTPURLCONNECTION 한글 전송

출처: https://kutar37.tistory.com/81 [저장소]



OkHttp

될 때까지 안드로이드 #19 [22장 네트워크 통신-1 OkHttp] 

https://www.youtube.com/watch?v=oQKYII__vxc


https://goo.gl/eIXu9l

위의 Json형태의 데이터를 OkHttp를 이용해서 처리하는 방법



될 때까지 안드로이드 #20 [22장 네트워크 통신-2 Gson]

https://www.youtube.com/watch?v=wo2HWBHwMj0



HttpUrlConnection 은 Java 에 포함된 라이브러리이고 OkHttp 는 Square 사에서 만든 Http Client 입니다.
오픈소스이니 OkHttp github(https://github.com/square/okhttp) 에 가시면 소스를 보실 수 있습니다.
내부적으로 HttpUrlConnection 하고 소켓 통신을 사용하는 것 같은데 자세히 안 봐서 잘 모르겠네요.

Retrofit 은 Http 통신을 조금 더 편하게 구현하기 위해 만들어진 라이브러리 입니다.

v1 에서는 안드로이드 버전에 따라 Apache HttpClient 와 HttpUrlConnection 선택해서 사용하거나 별도의 Http Client 를 지정할 수 있었는데 v2 에서는 OkHttp 를 사용하는 것으로 알고 있습니다.


 

출처: https://okky.kr/article/386639









Reference

http://nobase-dev.tistory.com/6

http://pluu.github.io/blog/android/2016/12/25/android-network/

http://jajubogi.tistory.com/14

https://www.youtube.com/watch?v=oQKYII__vxc




728x90

+ Recent posts