전체 글
-
[Android] Firebase Performance Debug 에서 테스트하는 방법Android 2021. 1. 12. 17:23
Firebase Performance는 서비스의 성능을 측정해 볼 수 있는 좋은 도구입니다. Build type Debug에서 개발을 하면서 Performance 코드가 잘 작동하는지 테스트가 필요했습니다. 찾아본 내용을 포스팅하겠습니다. 포스팅 내용은 Performance dependencies 세팅 및 코드가 개발되어있다고 가정합니다. AndroidManifest.xml AndroidManifest.xml(app) 파일에 아래와 같은 meta-data 를 추가하여 Debug에 대한 옵션을 설정해줍니다. meta-data를 true로 설정하지 않으면 Build type Debug 에서는 측정이 잘 되고 있는지 확인이 불가능합니다. Terminal Terminal 에서 adb 명령어를 사용해 Fireba..
-
[Error] Manifest merger failed : Attribute application@xxx...Android Error 2020. 11. 23. 16:57
Manifest merger failed : Attribute application@name value=(com.my.package) from AndroidManifest.xml:46:9–36 is also present at [com.sdk.name] AndroidManifest.xml:19:9–48 value=(com.sdk.package). Suggestion: add ‘tools:replace=”android:name”’ to element at AndroidManifest.xml:6:5–38:19 to override. 원인 Android Manifest 파일 선언부에 name Attribute가 중복되어 발생하는 문제입니다. 해결 방법 에러 메시지의 제안대로 아래와 같이 선언부에 tools:r..
-
[Codility] CyclicRotationAlgorithm 2020. 11. 20. 01:21
CyclicRotation 코딜리티 Lesson2에 있는 CyclicRotation에 대한 기록입니다. 문제 정수형의 배열과 K의 회전 수가 주어집니다. 회전 수만큼 맨 끝 요소는 맨 앞으로 이동시켜가며 배열을 한칸씩 우측으로 시프트 시키는 문제입니다. 자세한 문제는 여기를 참고해주세요. 나의 풀이 ArrayList Collection을 생성하여 할당 K만큼 루프를 돌며 마지막 인자를 꺼내 삭제하고 add(index, data)를 통해 한 칸씩 밀어냄 A에 재 배치 풀이보고서 (클릭) 리뷰 처음에는 Queue를 통해 풀어보려고 하다가 실패했습니다. ArrayList에 할당하여 요소를 컨트롤하는 게 익숙하기도 하고 편해서 ArrayList를 통해 풀었는데, 알고리즘 문제에 익숙한 분들은 배열만으로 간단히 ..
-
[Codility] BinaryGapAlgorithm 2020. 11. 19. 01:36
BinaryGap 평소 알고리즘에 약한 편이라Codility에서 풀 수 있는 가장 쉬운 문제 Lesson1을 연습 삼아 풀어 본 것에 대한 기록입니다. 문제 문제는 10진수의 정수가 입력이 되면 그 10진수를 2진수로 변경했을 때, 1과 1사이의 0의 개수 중 가장 큰 수를 구하는 것입니다. 예를 들어 1000001001 라는 2진수의 경우 1 사이의 0의 개수는 5와 2, 그중 큰 수인 5를 최종 출력하면 됩니다. 자세한 문제는 여기를 눌러주세요. 나의 풀이 Integer.toBinaryString()으로 입력 N을 2진수로 변경 split("")으로 String 배열로 전환 String 배열을 역순으로 돌며 첫 1이 들어온 순간부터 tempResult 1씩 증가 그다음 1이 들어왔을 때, tempRe..
-
Android Studio 디바이스, 이젠 WIFI로 연결하세요Android 2020. 5. 28. 11:26
Android Studio로 디바이스 연결을 해서 개발을 하다 보면 불편한 점이 몇 가지 있습니다. - 항상 MAC과 케이블이 연결되어 있어서 거추장스럽습니다. - 디버그를 하는 도중 케이블 접촉 불량으로 연결이 해제된다면 새로 다시 연결을 해주어야 합니다. - 기타 등.. 이외에도 간간히 느껴지는 케이블 연결 이런 문제점은 Android Studio에 있는 에뮬레이터를 사용한다면 해소될 수 있습니다. 하지만 에뮬레이터도 불편한점이 있을 수 있고, 디바이스를 연결해서 테스트를 해야 하는 경우들이 있기 때문에 저는 대부분의 테스트를 디바이스로 연결하여 진행합니다. 또 다른 방법으로는 WIFI ADB 연결이 있습니다. WIFI ADB 연결은 Android Studio의 plugin으로 손쉽게 설치하고 사용할..
-
코틀린의 컬렉션 확장함수 (2) : filter()Kotlin 2020. 5. 15. 00:41
filter() 코틀린의 컬렉션을 사용하다 보면 가장 많이 사용하게 될 확장함수 중 하나인 filter()는 특정 조건에 해당되는 데이터를 추출합니다. # output [6, 7, 8, 9, 10] # 유의점 위의 예시에서 filter 확장함수에 전달 된 조건은 list의 요소의 개수만큼 반복됩니다. 만약 filter 내부에서 조건식을 제외하고 어떠한 추가 함수를 호출한다면 꼭 고려하여 개발해야 할 것 같습니다. # output 1 2 3 ... 9 10 filterNot() filter() 함수와 반대입니다. 해당 조건에 해당하지 않는 데이터를 추출합니다. # output [1, 2, 3, 4, 5] filterNotNull() list에서 null이 아닌 데이터만 추출합니다.
-
코틀린의 몇 가지 유용한 컬렉션 확장함수 (1)Kotlin 2020. 5. 4. 00:18
forEach() list size 만큼 for문을 처리하며, 배열의 요소를 반환합니다. # output A B C forEachIndexed() list size 만큼 for문을 처리하며, 배열의 요소를 반환합니다. 또한 추가로 index를 반환합니다. # output index:0 it:A index:1 it:B index:2 it:C all() list의 특정 조건을 전달하여, 배열의 요소가 모두 조건을 만족하는지 여부를 반환합니다. # output true # output false any() list의 특정 조건을 전달하여, 배열에 조건을 만족하는 요소가 있는지 여부를 반환합니다. # output true count() list의 특정 조건을 전달하여 해당 조건이 만족되는 요소의 count를 반..
-
[Error] Program type already present 에러 처리Android Error 2020. 1. 8. 17:42
프로젝트 개발 중, 광고 SDK jar 파일을 libs 디렉토리에 추가해서 사용하고 있었다. 몇 일전 SDK의 버전을 높여달라는 요청이 와서 새로운 버전의 jar를 받아 파일을 교체하였다. 프로젝트 싱크 과정에서는 문제가 없었지만, APK를 뽑는 과정에서 Program type already present: [class path] 라는 에러가 발생했다. 이 에러는 클래스가 중복되어 발생되는 종속성 문제로 생각됐다. 구글에 검색을 해봐도 종속성을 제거하라는 해결 방법이 다수를 차지하고 있었다. 하지만, 이 프로젝트의 경우 라이브러리 파일을 교체하다가 발생했기 때문에 찾아본 방법들로 해결되지 않았다. Android Studio에 Build 창에 표시된 에러 내역을 보았다. com.android.builder..