Android

    [JAVA] MVVM 패턴 적용해보기

    지난 이야기 안드로이드 애플리케이션 설계 패턴 MVC 패턴 💡 애플리케이션 구조를 Model, View, Controller 세개의 측면으로 관심사를 분리한다. 개발을 배울 때 가장 먼저 배운 패턴이다. 그렇기 때문에 이해하기도 가장 쉬웠다고 생각한다. 안드로 www.pinslog.com 지난 글에서 안드로이드 애플리케이션 설계 패턴에 대해 알아보았다. 주로 언급되는 세가지 패턴 중 (mvc, mvp, mvvm) 주로 채택되는 MVVM 패턴을 구현해보도록 할것이다. View 와 관련된 코드들을 참조하지 않는 것이 MVVM 디자인 패턴의 핵심이라고 할 수 있겠다. MVVM 패턴 적용해보기 아래의 화면과 같이 제목과 내용을 작성하면 하단 글 목록에 바로 반영해보려고 한다. dependency def life..

    안드로이드 애플리케이션 설계 패턴

    MVC 패턴 💡 애플리케이션 구조를 Model, View, Controller 세개의 측면으로 관심사를 분리한다. 개발을 배울 때 가장 먼저 배운 패턴이다. 그렇기 때문에 이해하기도 가장 쉬웠다고 생각한다. 안드로이드에서 activity, fragment 가 view 역할을 한다. 동시에 controller 의 역할을 하기도 한다. 장점 직관적이다. 위에서 이해하기 쉬웠던 이유가 바로 이 장점 때문이 아닐까? 코드를 파악하기 쉽다. 단점 (안드로이드에서는) 위에서 말했듯 activity, fragment 가 뷰와 컨트롤러의 역할을 겸하다 보니 앱의 규모가 커지면 수천줄의 코드가 작성되어 유지보수가 힘들어진다. 컨트롤러는 뷰와 모델에 의존적이고, 뷰는 모델에 의존적이기 때문에 결합도가 높아 유닛 테스트가 ..

    [android] reCAPTCHA 사용하기 : Invalid Dynamic Link - Blocked 이슈

    🛠 나는 어쩌다 삽질을 하게 되었나 보안 관련 기능 추가를 위한 논의 끝에 reCAPTCHA 를 검토해보자는 말이 나왔다. 모르는 것을 처음할 때는 모름지기 공식문서가 최고라는 믿음으로 android reCAPTCHA 를 검색해 안드로이드 공식문서로 들어갔다. reCAPTCHA 로그인 몇번 실패하면 로봇이 아님을 밝히라며 우리에게 수많은 신호등과..자전거를 고르게 했던 바로 그친구! reCAPTCHA는 스팸 및 남용으로부터 사이트를 보호하는 무료 서비스입니다. 고급 위험 분석 기술을 사용하여 인간과 봇을 구분합니다. 동작 방식 reCAPTCHA 사이트에서 사이트 키와 비밀 키를 발급 받는다. (사이트 키는 클라이언트 쪽에서 사용되고 비밀키는 서버에 있어야한다.) 사이트 키를 사용해 reCAPTCHA가 생..

    [kotlin] 코틀린 기초 문법 다지기 - 2. class

    해당 강의를 들으며 작성된 것입니다. [무료] 코틀린 3강으로 끝내기 feat. 안드로이드 개발 - 인프런 | 강의 3강으로 짧게 끝내는 코틀린 문법! 코틀린 기초 문법과 안드로이드 기초 프로그래밍은 물론, 직접 안드로이드 앱도 만들어보세요!, - 강의 소개 | 인프런... www.inflearn.com Class 👉🏻 코틀린은 자바와 달리 클래스 이름과 파일의 이름이 달라도 된다. 👉🏻 한 파일 안에 여러 클래스를 생성할 수 있다. 기본 형태 👉🏻 코틀린은 new 키워드가 없다. class Human { val name = "spin" fun eatingCake(){ println("This is so yummy") } } fun main(){ val human = Human() human.eating..

    [kotlin] 코틀린 기초 문법 다지기 - 1

    해당 강의를 들으며 작성된 것 입니다. [무료] 코틀린 3강으로 끝내기 feat. 안드로이드 개발 - 인프런 | 강의 3강으로 짧게 끝내는 코틀린 문법! 코틀린 기초 문법과 안드로이드 기초 프로그래밍은 물론, 직접 안드로이드 앱도 만들어보세요!, - 강의 소개 | 인프런... www.inflearn.com 함수 파라미터와 리턴 타입이 없을 때 fun helloWorld(){ println("hello world!") } 자바의 void 와 같다. 아무것도 리턴하지 않는 것처럼 보이지만 사실은 Unit을 리턴하고 있다. 위에 쓰인 것 처럼 생략해도 무방하다. fun helloWorld() : Unit { println("hello world!") } 파라미터와 리턴 타입이 있을 때 '변수 이름 : 변수 타..

    [Android] SharedPreferences 와 KeyStore

    해당 글을 참고했습니다. 안전하게 민감정보 저장 이슈 해당 게시글은 Android 개발자에게 해당되는 이야기다. 민감정보에대해 개발을 하면서 서비스의 운용을 위해 필요한 정보를 받는 것은 자연스러운 일이다. 그중 대표적으로 비밀번호를 말할 수 secu-lee-ty.tistory.com 들어가며 다들 그렇겠지만 전역적으로 쓰이는 정보에 한해서는 SharedPreferences 를 이용해 정보를 저장해왔을 것이다. 나의 경우 로그인기능을 개발하면서 사용자 편의를 위해 로그인 정보 저장 기능을 만들고자 했었다. 그러려면 아이디와 비밀번호 모두를 SharedPreferences 에 저장해야하는데 비밀번호를 평문으로 저장하는 것은 너무 위험하고.. 로그인 정보를 서버에 전송할 때 암호화 된 비밀번호를 전송하니 암..

    오류: More than one file was found with OS independent path 'META-INF/DEPENDENCIES'.

    상황 퍼블리셔를 implementaion 했는데 제대로 실행이 되지 않았다. 이유 : 버전 변경에 따른 META 중복 해결 packagingOptions { exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/LICENSE' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/license.txt' exclude 'META-INF/NOTICE' exclude 'META-INF/NOTICE.txt' exclude 'META-INF/INDEX.LIST' exclude 'META-INF/notice.txt' exclude 'META-INF/ASL2.0' } 다음과 같은 것을 build.gradle 에 추가한다. android {} 에 넣..

    [Android] Google Play Developer API으로 앱 출시하기

    들어가며 앱을 마켓에 배포하고 나서 앱이 업데이트가 되면 사용자들에게 업데이트를 안내해야한다. 다 그런건지는 모르겠지만 앱을 다운받으면 자동 업데이트에 체크가 되어있긴 하던데.. 자동 업데이트를 선호하지 않아 해제해놓는 사용자가 있을 수 있기 때문에 인 앱 업데이트를 구현하고자 했다. 공식문서를 참고하다 우선순위를 지정할 수 있다는 것을 보게 되었다. Google Play Developer API 말 그대로 구글에서 제공하는 API로 게시 및 앱 관리 작업을 실행할 수 있다고 한다. 👉🏻 Subscriptions and In-App Purchases API : 인 앱 구매와 정기 결제 관리 👉🏻 Publishing API : 앱 업로드 및 게시, 기타 게시 관련 작업 실행 Publishing API 앱 ..

    [Android] 앱 서명

    해당 페이지를 참고하였습니다 앱 서명 | Android 개발자 | Android Developers 앱 서명 및 보안과 관련된 중요한 개념을 알아보고, Android 스튜디오를 사용하여 Google Play에 출시하기 위해 앱에 서명하는 방법과 Play 앱 서명을 선택하는 방법을 알아보세요. developer.android.com 안드로이드 키스토어 어떻게 관리하시나요? 안드로이드 개발 후 플레이스토어에 배포를 하기 위해서는 키스토어(Key Store)를 이용하여 Signing된 apk 또는 App Bundle이 필요합니다. medium.com Android 에서는 인증서를 사용해 디지털 방식으로 서명된 APK만 기기에 설치하거나 업데이트 할 수 있음 구글에서는 plat 앱 서명으로 앱의 서명 키를 관리..

    [Android] AndroidManifest.xml 의 package 속성

    프로젝트를 클론한 뒤 빌드를 하면 가령 a 프로젝트를 클론해서 b 기능을 하는 프로젝트를 생성했다 치면 a 를 빌드한 다음 b 를 빌드하면 그냥 b 만 남게 된다. 두개 다 두고 싶은데 어떡하면 좋을까! 하다가 AndroidManifest.xml 의 package 속성의 값이 같은 것을 확인했다. Package android 앱의 전체 자바 언어 스타일 패키지 이름 속성의 사용처 앱의 생성된 자바 클래스용 네임스페이스로 이 이름을 적용함 ex. 패키지가 “com.cos.ssar” 이면 클래스 A 는 com.cos.ssar.A 에 생성되는 것 매니페스트 파일에 선언되는 상태 클래스 이름을 확인하는데 이 이름을 사용 ex. 패키지 이름이 위와 같다면 로 선언된 액티비티가 com.cos.ssar.MainAct..

    [Android] 앱 로고 (앱 아이콘) 생성하기

    해당 글을 참고하여 작성하였습니다 안드로이드 Adaptive icon 적용하기 “이 포스트는 2018년 1월 원티드 제품블로그 글을 재구성한 내용입니다.” medium.com drawable > new > Image Asset mipmap-anydpi-v26/ic_launcher_img.xml anydpi-v26 폴더에는 foreground, background 가 정의된 vector 리소스가 추가된다. anydpi-v26 : 26버전부터 지원하고, 어느 dpi에 상관없이 동작이 가능함을 의미 foreground, background 두 개의 VectorDrawable 리소스 생성 생성된 리소스 중 서비스 정책에 맞는 리소스를 그대로 사용하면 된다. background 리소스의 경우 Asset Type ..