Programming/Android(13)
-
Trust anchor for certification path not found 해결하기
Android 앱에서 https 연결을 시도하려고 할 때 Trust anchor for certification path not found 라는 에러가 발생하면서 연결이 실패했다. 서비스 중인 앱이라 부랴부랴 원인을 찾기 시작함. 원인은 해당 앱에 신뢰성 있는 인증서를 찾지 못했기 때문인 것 같다. 우선 첫번째로 TrustManager를 사용해서 인증서 회피를 시도했다. TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return new java.security.cert.X509Certificate[]..
2021.11.25 -
violation of our Malicious Behavior policy????
크롤링 하는 서버가 http -> https로 변경됨에 따라 나 역시 서비스 중인 앱을 https로 변경하였다. 단순히 주소만 https로 변경하면 되는 줄 알았는데, 그게 아니었다 ㅠ_ㅠ 인증서 없이 간단하게 https 통신을 가능하게 하기 위해서 아래의 코드처럼 모든 인증서를 허용해주는 객체를 만들고 httpsConnection에 설정을 추가해 준다. TrustManager[] trustAllCerts = new TrustManager[]{ new X509TrustManager(){ public X509Certificate[] getAcceptedIssuers(){return new X509Certificate[0];} public void checkClientTrusted(X509Certificat..
2020.12.04 -
안드로이드 해시 값 확인하기
카카오 API를 사용하기 위해서는 카카오 개발자 센터에서 안드로이드 키 해시를 등록해야 한다. 만약 해당 안드로이드와 다른 키 해시 값이 등록이 될 경우 API 값을 리턴 받을 수가 없다. 그리고 디버그용 해시 값과 릴리즈용 해시 값이 엄연히 다르기 때문에 두가지 경우의 해시 값을 모두 등록해주어야 한다. ( 카카오 개발자 센터에서 디버그 용, 릴리즈 용 애플리케이션을 각각 만들어야 한다는 소리) 우선 디버그용 키 해시 값 얻어오는 방법을 알아 보자. (맥 기준) $> keytool -exportcert -alias androiddebugkey -keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64 그리고 ..
2018.10.05 -
Can`t load DaumMapEngineApi.so file
근 5년여 가량 개인 앱 서비스를 운영하고 있었는데, 갑자기 어제 구글플레이개발자콘솔 화면에 아래와 같이 에러 횟수가 확 늘어나는 것을 확인했다. 게다가 어떤 분이 지도보기를 하면 앱이 죽는다고 남겨 주신 리뷰가 해당 버그를 추적하는데 큰 힘이 되었다. 우선 버그를 찾기가 엄청 힘들었다. 일단 내 폰, 와이프 폰에서는 정상 동작 한다!! 사용자 실수인가??? 이런 의심도 찰나.. 우연찮게 빌린 처남 폰에서 지도보기를 하니 앱이 죽는다. -_-;;; 아... 최신 폰에서만 앱이 죽나 보다... 처남에게 양해를 구하고 디버깅 시작!! Can`t load DaumMapEngineApi.so file 위의 에러 메시지가 발생하며 MapView가 실행되지 않는 것을 확인할 수 있었다. '아.. 그래 지도 lib ..
2018.10.04 -
구글 GCM 구현하기
서버로부터 push 서비스를 받기 위해서는 구글에서 제공하는 GCM(Google cloud messaging) 서비스를 이용해야 한다. 우선 구글 api 개발자 센터에 접속해서 GCM 서비스를 이용하기 위한 프로젝트를 만들자. 우측 상단에 API Project라는 메뉴를 클릭한 후 프로젝트 생성 메뉴를 클릭해서 프로젝트를 생성하자. 프로젝트를 생성하면 프로젝트 ID가 함께 생성되는데 이 ID 값을 google 측에 넘겨야 GCM ID를 받을 수가 있다. 이제 프로젝트를 클릭해서 사용 하고자 하는 API를 선택해야 한다. Google Cloud Messaging을 클릭한 후 사용 설정을 활성화 해주자. 이제 서버에서 gcm 요청 curl을 날릴 때 인증을 위한 서버키를 만들어야 한다. 사용자 인증 정보에서..
2016.04.26 -
특수문자 처리 방법
안드로이드에서 아래와 같이 코드를 작성하였더니 에러가 발생.. String value = data.split("("); 아마도 "("가 특수문자로 처리되어 인식이 안되는 것처럼 보였다.그래서 앞에 "\"를 추가해 준다음 다시 동작 시켰더니 그래도 제대로 동작을 하지 않았다. 찾아보니 자바에서는 특수문자 처리를 위해서는 "\\" 이렇게 두개의 역슬러시로 표현을 해줘야 한다고 한다. String value = data.split("\\("); 정확하게 동작하는 것 확인!! 배우고 또 배우자...
2015.02.23