전체 글
[Android] 첫 안드로이드 앱 릴리즈 과정에서 겪은 트러블슈팅들
1. kakao Login API 문제 발생 [Android/트러블슈팅] Keystore 정보 확인하는 법 들어가기 전 릴리즈 apk 를 뽑을 때 keystore를 사용하게되는데, 내 keystore에 별칭을 까먹는 경우가 있었다. 이 때 내 keystore에 정보를 알 수 있는 방법을 알아보자. cmd에 keytool -list -v -keystore 'jks 파일 hyeonlog-developer.tistory.com [Android/트러블슈팅] Kakao Login API Apk 추출 시 로그인 안되는 문제/KeyHash 오류 들어가기 전 '엄빠도 어렸다'라는 서비스를 만들면서 겪은 kakao login api 트러블 슈팅에 대해 포스팅하고자 한다. 문제 설명 우리 팀은 릴리즈를 앞두고 안드로이드 ..
[Android/트러블슈팅] 앱을 삭제했는데 데이터가 남아있다고요?
들어가기 전 릴리즈 apk로 테스트를 하다가 처음 앱을 설치하고 실행하면 로그인 및 다른 기능들이 정말 잘 작동되는데, 앱을 삭제했다가 다시 깔아서 테스트를 하면 앱이 터지는 문제가 발생하였다. 이 과정에서 겪은 트러블 슈팅과 해결 방법을 작성해보도록 하겠다. 엄빠도 어렸다 릴리즈를 준비하면서 릴리즈 apk로 테스트를 계속 진행했는데, 첫 설치 후 앱을 실행하면 정말 잘 작동하였다. 문제였던 카카로 로그인도 잘 되고, 여러 기능들에 문제가 없었다. 그러나 앱을 삭제하고 다시 깔아보니 실행과 동시에 앱이 터지는 문제가 발생했다. 무엇이 문제일까? 1. 디버그 apk 에서는 괜찮았으니까, 코드 중에 buildConfig.DEBUG로 설정 한 부분이 있어서, 해당 부분이 릴리즈 apk에서 작동하지 못해서 생긴..
[BOJ/Kotlin] 11403번 경로찾기 : 그래프(DFS)
분류 플로이드–워셜, 그래프 이론, 그래프 탐색 문제 설명 가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 (i, j)에 대해서, i에서 j로 가는 길이가 양수인 경로가 있는지 없는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정점의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄부터 N개 줄에는 그래프의 인접 행렬이 주어진다. i번째 줄의 j번째 숫자가 1인 경우에는 i에서 j로 가는 간선이 존재한다는 뜻이고, 0인 경우는 없다는 뜻이다. i번째 줄의 i번째 숫자는 항상 0이다. 출력 총 N개의 줄에 걸쳐서 문제의 정답을 인접행렬 형식으로 출력한다. 정점 i에서 j로 가는 길이가 양수인 경로가 있으면 i번째 줄의 j번째 숫자를 1로, 없으면 0으로 출력해야 한다. 문제 풀이 아이디어 ..
[바킹독 알고리즘] 0x18강 : 그래프
그래프 정의 정점과 간선으로 이루어진 자료구조 간과하기 쉬운 그래프 : 루프가 존재하는 그래프, 연결 그래프가 아닌 경우 (도 생각해야한다.) 그래프 표현법 1. 인접 행렬 vertex * vertex의 2차원 배열을 만들어서 각 vertex의 간선이 존재하면 양방향일 경우 두 vertex에 각 칸을 전부 1로 세팅, 단방향일 경우 해당 칸에만 1로 set해서 그래프를 표현할 수 있다. 2. 인접 리스트 인접 리스트를 표현할 때 Kotlin에서는 LinkedList를 실제로 사용하면 되지만, C++의 경우 Vector를 사용해도 무관하다. ( 그렇다면 Kotlin에서도 Pair 로 사용하면 되지 않을까? 싶다..) 그래프에서 BFS와 DFS 1. BFS using Queue 만약 위 예시처럼 연결그래프가..
[BOJ/Kotlin] 1260번 DFS와 BFS : 그래프
분류 그래프 이론, 그래프 탐색, 너비 우선 탐색, 깊이 우선 탐색 문제 설명 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 입력 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다. 출력 첫째 줄에 DFS를 수행한 결과를, 그 다음 줄에는 BFS..
[BOJ/Kotlin] 2583번 영역 구하기 : BFS
문제 설명 눈금의 간격이 1인 M×N(M,N≤100)크기의 모눈종이가 있다. 이 모눈종이 위에 눈금에 맞추어 K개의 직사각형을 그릴 때, 이들 K개의 직사각형의 내부를 제외한 나머지 부분이 몇 개의 분리된 영역으로 나누어진다. 예를 들어 M=5, N=7 인 모눈종이 위에 과 같이 직사각형 3개를 그렸다면, 그 나머지 영역은 와 같이 3개의 분리된 영역으로 나누어지게 된다. 와 같이 분리된 세 영역의 넓이는 각각 1, 7, 13이 된다. M, N과 K 그리고 K개의 직사각형의 좌표가 주어질 때, K개의 직사각형 내부를 제외한 나머지 부분이 몇 개의 분리된 영역으로 나누어지는지, 그리고 분리된 각 영역의 넓이가 얼마인지를 구하여 이를 출력하는 프로그램을 작성하시오. 문제 풀이 아이디어 BFS 입력으로 주어지..
[프로그래머스/Kotlin] Lv2 타겟 넘버 : BFS
문제 설명 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. 문제 풀이 코드 import java.util.* class Solution { fun solution(numbers: IntArray,..
[Android/트러블슈팅] Keystore 정보 확인하는 법
들어가기 전 릴리즈 apk 를 뽑을 때 keystore를 사용하게되는데, 내 keystore에 별칭을 까먹는 경우가 있었다. 이 때 내 keystore에 정보를 알 수 있는 방법을 알아보자. cmd에 keytool -list -v -keystore 'jks 파일 경로' 를 입력하고 비밀번호를 입력하면 keystore 정보가 다 나온다. 이 때 경로를 입력하려면 " " 를 지워야지 정보가 나온다. 지우지 않으면 아래와 같은 에러가 뜬다. keytool error: java.lang.Exception: Keystore file does not exist:
[프로그래머스/Kotlin] Lv2 소수찾기 : 완전탐색
문제 설명 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요. 제한사항 numbers는 길이 1 이상 7 이하인 문자열입니다. numbers는 0~9까지 숫자만으로 이루어져 있습니다. "013"은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다 입출력 예 설명 예제 #1 [1, 7]으로는 소수 [7, 17, 71]를 만들 수 있습니다. 예제 #2 [0, 1, 1]으로는 소수 [11, 101]를 만들 수 있습니다. 문제 풀이 아이디어 dfs로 푼 풀이..
[Android/트러블 슈팅] Multiple Gradle daemons might be spawned because the Gradle JDK and JAVA_HOME locations are different. / 안드로이드 스튜디오 자동완성 에러 안뜨는 오류
들어가기 전 kakao login api 문제로 키해시를 뽑다가 환경변수를 전부 날리는 실수를 저질렀다. 안드로이드 java home이나 gradle을 담은 환경변수가 날라갔고 그 이후로 안드로이드 스튜디오에 자동완성 및 에러가 안뜨는 문제가 발생하였다. 이를 해결하기 위한 과정과 방법에 대한 내용을 포스팅하고자 한다. Error 내용 Multiple Gradle daemons might be spawned because the Gradle JDK and JAVA_HOME locations are different. 라고 Notification에 떴다. 만약 해당 에러 없이 안드로이드 스튜디오 자동완성과 에러가 안뜬다면 Power Save Mode가 켜져있는지 확인해야한다. power save mode가..
[Android/트러블슈팅] Kakao Login API Apk 추출 시 로그인 안되는 문제/KeyHash 오류
들어가기 전 '엄빠도 어렸다'라는 서비스를 만들면서 겪은 kakao login api 트러블 슈팅에 대해 포스팅하고자 한다. 문제 설명 우리 팀은 릴리즈를 앞두고 안드로이드 디버그 apk와 릴리즈 apk를 추출했다. 이 apk 파일을 설치 후 어플에 접속 했을 때 애뮬레이터에서는 잘 돌아가던 kakao login이 안되는 문제가 발생하였다. error description을 보면 401 auth error, 즉 kakao 키해시 등록이 안 된 키해시가 들어왔다는 의미이다. 키해시 확인 error descption을 바탕으로 알맞는 키해시를 찾기 위해 노력했다. https://developers.kakao.com/docs/latest/ko/getting-started/sdk-android#add-key-h..
[프로그래머스/Kotlin] Lv2 가장 큰 수 : 정렬
문제 설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. 문제 풀이 아이디어 사전식 정렬을 이용해서 문제를 풀 수 있다. [6, 10, 2] 가 예제로 존재 할 때 6과 10으로 610과 106 조합을 만들 수 있다. 이 때 더 큰 값은 610 이므로 6,10,2 순서를 유지한다. 10과 2 로 1..