반응형

분류 전체보기 129

[Android] app bundle명 변경 후 Binding Error (InflateException)

안녕하세요 골드입니다. 오늘은 잘 작동하던 XML 파일에서 뜬금없이 발생하는 Binding 에러에 대해서 글을 작성하도록 하겠습니다. Caused by: android.view.InflateException: Binary XML file line ## 문제없이 발생하던 XML 파일에서 갑자기 이러한 에러가 발생하는 경우가 있습니다. 원인은 정확히 알 수 없지만 아무래도 Binding에 작은 에러가 있다고 생각됩니다. 이런 경우 먼저 app module build.gradle 파일에서 바인딩 관련 코드를 삭제한 후 Sync한 후 ReBuild, 다시 바인딩 코드를 삽입하고 Sync, ReBuild 하면 해결됩니다. bundle Binding 코드 false(혹은 삭제) Sync -> Rebuild Proj..

Mobile/Issues 2021.11.22

[Android] SHA-1 확인하는 방법 (zsh: permission denied)

안녕하세요 골드입니다. 오늘은 안드로이드 스튜디오 에서 프로젝트 SHA-1을 확인하는 방법에 대해서 글을 작성하도록 하겠습니다. 매우 간단합니다. SHA-1은 프로젝트의 고유 넘버이자 Key입니다. 여러 곳에서 쓰일 수 있는데 특히 안드로이드 앱을 파이어베이스와 연결하거나 할 때 사용합니다. 먼저 안드로이드 스튜디오로 들어가서 하단에 Terminal을 클릭한 후 ./gradlew signingReport를 작성합니다. 완료 메시지가 나오면 스크롤을 올려서 확인할 수 있습니다. 만약 zsh: permission denied ./gradlew 가 나타난다면 터미널에 chmod +x gradlew를 입력한 후 다시 ./gradlew signingReport를 작성하면 됩니다. 여기까지 골드였습니다. 감사합니다.

Mobile/Issues 2021.11.19

[Android/Kotlin] RecyclerView 구분선, 아이템 간격 Decoration

안녕하세요 골드입니다. 오늘은 리사이클러뷰를 활용할 때 사용하면 좋은 Decoration에 대해서 글을 쓰도록 하겠습니다. XML에서 Margin 설정하고 구분선 View를 그리지 않고 Decoration을 사용하는 이유. Decoration을 사용하면 아이템 index별로 간격을 설정할 수 있습니다. 이렇게 하면 0번째 아이템과 마지막 아이템의 간격이 미묘하게 다르게 생성되는 문제를 해결할 수 있습니다. XML에서 정의하는 구분선과 Decoration에서 그리는 View는 성능 차이가 있습니다. XML에서 뷰를 그리는 작업이 더 무거운데, 리사이클러뷰를 선언하여 리스트를 불러올 땐 단순히 낱개의 아이템을 불러오지 않고 대량의 아이템을 불러오기 때문에 이는 작지 않은 차이를 만들어 냅니다. Recycle..

[Android/Kotlin] Parameter 'directory' is not a directory 에러 해결 방법

안녕하세요 골드입니다. 오늘은 간단하게 안드로이드에서 가끔 나타나는 Parameter 'directory' is not a directory 에러 해결 방법을 간단하게 작성하겠습니다. 해당 오류는 github을 사용해서 push하고 merge하다 보면 나타나는 에러인 것으로 보입니다. 방법은 간단합니다. 안드로이드 스튜디오에서 Terminal을 열어서 .gradle directory 파일을 제거하는 코드를 작성하면 됩니다. 해당 파일은 빌드하면서 재생성되기 때문에 걱정하지 않으셔도 됩니다. 터미널에 rm -rf .gradle/ 을 입력하고 엔터를 칩니다. 정상적으로 작동했다면 별 다른 멘트가 나타나지 않을 것입니다. 다시 빌드하거나 Build -> Rebuild Project 해주시면 되겠습니다. 여기까..

Mobile/Issues 2021.11.12

[Android/Kotlin] JVM target 1.8 Error

안녕하세요 골드입니다. 오늘은 안드로이드 스튜디오에서 Cannot inline bytecode built with JVM target 1.8 into bytecode that is being built with JVM target 1.6. Please specify proper '-jvm-target' option 에러를 수정하는 방법에 대해서 간단 포스팅을 하도록 하겠습니다. 저 같은 경우 build.gradle에 컴파일 옵션을 자바 1.8만 보고 이미 선언하였는데 해당 오류가 나타나서 당황했었습니다. 결론적으로 build.gradle에 코틀린 컴파일러 안에 타겟 JVM도 자바 1.8로 설정해야 한다고 선언해줘야 합니다. 여기까지 골드였습니다. 감사합니다.

Mobile/Issues 2021.11.06

[Kotlin] 진수 변환. 알고리즘.

안녕하세요 골드입니다. 오늘은 코틀린에서 진법 변환에 대해서 글을 쓰도록 하겠습니다. 1. N진수 -> 10진수 2진수, 8진수, 16진수로 표현된 "1111"을 10진수로 변경하는 코드입니다. 코틀린은 함수 라이브러리가 다양하게 잘 만들어져 있습니다. toInt()에 N을 입력하면 "1111"은 N진수로써 표현되고 이를 toInt() 10진수로 변경하는 함수입니다. 만약 변환하는 데에 올바르지 않은 값을 입력하였다면 NumberFormatException이 나타나게 됩니다. 1111(2) -> 15(10) 1111(8) -> 585(10) 1111(16) -> 4369(10) 수학적으로 계산하는 방법은 이렇습니다. 앞서 4비트 "1111"로 예제를 만들었기 때문에 n의 제곱수에 곱해지는 것은 모두 1이..

[Android/Kotlin] Convert URL to Bitmap

안녕하세요 골드입니다. 오늘은 url로 선언되어 있는 이미지를 Bitmap 객체로 변환하는 방법에 대해서 작성하도록 하겠습니다. 서버와 통신하면서 단순히 Glide(혹은 다른 라이브러리)에 URL을 바로 into()하여 사용하지 않고, Json 파일을 Bitmap으로 변환하는 일이 생길 때가 분명 있을 것입니다. 저는 함수를 이렇게 만들었습니다. try cahtch문과 관계없이 HttpURLConnection은 안드로이드의 메인 스레드에서 접근할 수 없습니다. 따라서 이 함수를 그냥 사용할 수 없습니다. 그냥 사용할 경우 이와 같은 에러가 발생합니다. 저 같은 경우 코루틴을 사용하였습니다. 코루틴의 Dispatcher를 IO로 변경하여 HttpURLConnection 객체를 사용하도록 하였습니다. Asy..

[Android] Platform Architecture (플랫폼 아키텍처)

안녕하세요 골드입니다. 오늘은 안드로이드 플랫폼 아키텍처에 관해서 간단하게 살펴보도록 하겠습니다. 안드로이드는 다양한 기기 환경에서 작동할 수 있도록 제작된 Linux 기반 오픈소스 소프트웨어 스택입니다. 안드로이드 플랫폼은 몇 개의 계층으로 나누어져 있습니다. 제일 위에 시스템 앱(System Apps)이 우리가 사용하는 애플리케이션입니다. - 시스템 애플리케이션(System Apps) 시스템 앱은 안드로이드와 함께 제공되는 기본 구성 애플리케이션입니다. 달력, 시계, 주소록, 카메라 등은 일반적인 안드로이드에 설치되어 있는 앱입니다. 이러한 앱이 시스템 앱입니다. 시스템 앱과 사용자가 설치하는 앱 사이에 구별되는 특징은 없습니다. 따라서 삼성 같은 경우 삼성 UI를 적용할 수 있고 마찬가지로 타사에서..

Foundation/Android 2021.08.16

[Android] 앱 기본 구성 요소 (Application 4대 요소)

안녕하세요 골드입니다. 오늘은 안드로이드 애플리케이션을 구성하는 기본 4대 요소에 대해서 글을 쓰도록 하겠습니다. 1. Android Application Basic 먼저 안드로이드는 기본적으로 앱 자기 자신의 작업을 수행하기 위해 필요한 구성 요소에 대한 액세스 권한을 갖고 그 이상은 허용되지 않습니다. 이런 방식을 최소 권한의 원리라고 이야기합니다. 필요한 구성 요소 외에 다른 요소들에 대한 액세스를 갖고 있지 않고 알고 싶거나 궁금해하지 않습니다. 안드로이드 운영체제는 Linux 기반입니다. 멀티유저 Linux 시스템으로, 각 애플리케이션은 하나의 사용자와 같습니다. 그러므로 시스템은 각 애플리케이션에 고유한 ID를 부여합니다. 시스템 안에 모든 기능들에 권한을 부여하고 이 기능들에 대한 액세스를 ..

Foundation/Android 2021.08.15

[Android] Activity와 Fragment 비교

안녕하세요 골드입니다. 요즘 날씨가 많이 덥습니다. 안드로이드에서 View를 보여주기 위한 Container역할을 하는 두 개의 Class가 있습니다. Activity와 Fragment입니다. 안드로이드에서 가장 중요한 개념 중 하나인 만큼 자세히 알아보겠습니다. 이 글은 Android 공식 문서를 바탕으로 작성하였습니다. 1. Activity 소개 Activity는 main() 메서드를 사용하여 앱을 실행하는 프로그래밍 패러다임과 다른 안드로이드 시스템의 특수성에 의하여 생긴 개념입니다. 모바일 앱은 데스크톱과 다르게 항상 같은 위치에서 시작되는 것이 아닙니다. 예를 들어, 이메일 앱을 열면 이메일 보내기 화면으로 바로 이동하거나 할 수 있습니다. 즉, 앱이 다른 앱을 호출할 때 앱의 전체를 호출하는 ..

Foundation/Android 2021.07.30