👩🏻‍💻 TIL 55

만보기와 안드로이드 배터리 최적화 관련 분석

우리 회사에서는 만보기 서비스를 메인으로 하여 어플을 운영하고 있다.안드로이드 만보기는 지난 1년간 문제 없이 동작했었는데 갑자기 근 몇달 간 만보기 관련 CS 가 쏟아지기 시작했다.아무래도 안드로이드 OS 가 업데이트 되면서 백그라운드 작업에 대한 제한이 강화된 것으로 추측한다.(최근 업데이트 내용을 보면 백그라운드 관련 내용이 자주 언급되었다)   안드로이드 만보기는 백그라운드를 바탕으로 철저히 돌아가는 서비스이다.근데 백그라운드 작업을 제한한다고..? 제대로 서비스를 유지할 수 없을 것이다.   나는 아이폰 사용자였지만, 이 문제를 해결하기 위해 며칠 간 안드로이드 타사 만보기 앱을 사용해 보았다. 그리고 다른 앱들이 백그라운드 제한을 어떻게 극복했는지 분석할 기회를 가졌다. 이번 글에서는 그 분석..

👩🏻‍💻 TIL 2024.04.28

[안드로이드] compileSdkVersion, targetSdkVersion, buildToolsVersion

안드로이드 OS API 나는 아이폰을 쓰고 있기 때문에 안드로이드 OS API 가 뭔지 정확히 몰랐다. 또한 티라미수, 롤리팝..? 들었을 때 이게 뭔소린지 싶었다. 티라미수, 롤리팝..? 안드로이드 운영 체제 버전을 의미한다. 안드로이드 운영 체제 버전은 주로 디저트 이름으로 알려져 있다. 이는 구글에서 안드로이드 버전 코드 네임을 디저트 이름으로 명명하여 사용하는 관행이다. 디저트 이름은 해당 버전의 알파벳 순서에 따라서 지정되며, 알파벳 순서대로 칠러(Cupcake), 도넛(Donut), 이클레어(Eclair), 퓨오리아(Froyo), 진저브레드(Gingerbread) 등 다양한 디저트 이름이 사용되었다. 다음은 안드로이드 버전 순서와 디저트 네임이다. 버전 디저트 명 출시일자 안드로이드 1.0 -..

👩🏻‍💻 TIL 2023.06.25

[TIL] Github Action 실습

Github Actions를 이용해서 AWS EC2에 Docker로 배포를 하는 방법 아래 유튜브를 참고했습니다 https://youtu.be/E3i9qt0SS-I 전체적인 Flow 1. 로컬 PC 에서 개발을 한 후 Github 에 푸시 2. 특정 브랜치에 푸시가 되면 (=event trigger) 깃헙 액션이 동작되도록 3. 깃헙 액션이 Github Container Registry 에 소스를 받은 후 도커 이미지로 빌드 4. 빌드된 이미지를 EC2 에 등록된 Runner 가 복사 5. 기존 이미지를 삭제하고 새로운 이미지로 실행 1. 도커 파일 생성 도커 파일 생성 -> touch Dockerfile Dockerfile 에 다음과 같이 작성해줍니다. FROM node:14.19.0 : nodejs ..

👩🏻‍💻 TIL 2023.06.04

AWS 개념 정리

클라우드 컴퓨팅이란? 인터넷을 통해 IT 리소스와 애플리케이션을 온디맨드로 제공하는 서비스, 종량 과금제 - 온디맨드 서비스: 사용자가 요청하는 즉시 제공되는 서비스 - 종량 과금제: 사용자가 실제로 사용한 양에 따라 요금을 지불하는 요금 체계 기존의 물리적인 형태의 실물 컴퓨팅 리소스를 네트워크 기반 서비스 형태로 제공하는 것이다. 사용자로 하여금 네트워크 상에서 클라우드 서비스의 자원을 사용하는 것을 의미한다. AWS 클라우드 컴퓨팅 장점 - 데이터센터 운영 및 유지관리에 비용투자 불필요하고 몇분만에 전세계에 배포. AWS 는 언어 및 운엉 체제에 구애받지 않는 플랫폼이다. 따라서 사용자의 비즈니스에 가장 적합한 개발 플랫폼 또는 프로그래밍 모델을 선택할 수 있다. 사용할 서비스를 한 개 또는 여러 ..

👩🏻‍💻 TIL 2023.06.03

미디에이션 어댑터란?

회사가 추구하는 방향성이 광고로 기울어지면서 점점 광고를 붙이는 일이 많아졌다. 처음에 나는 Applovin, Admob 등이 단순히 "광고" 라고 생각했다. 그래서 다음과 같은 의존성을 보고 모두 다 Applovin 이군!!! Applovin 을 설치할 때 Vungle 도 같이 필요한가보군!! ← 이와 같은 생각을 하였다. 하지만 이는 틀렸다. 용어들을 하나하나 정리해가며 이들의 상관성은 무엇인지 한 번 알아보자! 미디에이션이란? 미디에이션은 앱에 광고를 게재하기 위해 사용하는 광고 소스를 한곳에서 관리할 수 있는 기능입니다. 미디에이션을 사용하면 들어오는 광고 요청을 여러 광고 소스에 보내 요청을 처리하는 데 가장 적합한 광고 소스를 찾을 수 있습니다. 즉 미디에이션은 여러 광고 네트워크를 한 데 모..

👩🏻‍💻 TIL 2023.05.13

Failed to prepare the device for development. This operation can fail if the version of the OS on the device is incompatible with the installed version of Xcode. You may also need to restart your Mac and device in order to correctly detect compatibility.

갑자기 iOS 폰을 빌드하다가 이런 에러를 마주쳤다. 이 오류는 iOS 디바이스를 개발할 준비를 하지 못했다는 것을 나타낸다. 이 문제는 Xcode의 설치된 버전과 iOS 디바이스의 운영체제 버전이 호환되지 않을 때 발생할 수 있다. 이 경우, Xcode를 업데이트하여 호환성을 보장하거나, iOS 디바이스의 운영체제 버전을 업데이트하여 호환성을 보장해야 한다. 이게 아니라면 Mac 및 디바이스를 다시 시작하여 호환성을 올바르게 감지할 수도 있다. 불현듯 최근에 iOS 를 업데이트했던 것이 생각났고 Xcode 를 업데이트할 수 밖에 없는건가.. 하는 좌절감이 들었다. Xcode 의 iOS 디바이스 호환성을 확인할 수 있는 링크 > https://developer.apple.com/kr/support/xco..

👩🏻‍💻 TIL 2023.05.08

[iOS] CocoaPod

코코아팟이란 Swift 및 Objective-C 코코아 프로젝트의 종속성 관리자입니다 28,000 개가 넘는 라이브러리를 가지고 있으며 170만개가 넘는 응용 프로그램(앱)에서 사용되고 있습니다 참고로 코코아팟은 Ruby 로 제작되어 있습니다 기본 Ruby 는 OS X(맥북) 사용할 수 있습니다 sudo gem install cocoapods 위의 명령으로 설치가 끝났습니다 이제 우리는 코코아팟을 자유롭게 사용할 수 있습니다 터미널을 이용하여 우리가 코코아팟 라이브러리를 적용하고 싶은 프로젝트 경로로 들어가줍니다. 프로젝트 경로로 간 상태에서 아래의 명령어를 입력해줍니다 pod init 그러고 나서 프로젝트 폴더에 가보면, Podfile 이란 것이 생성되었습니다 우리는 이 Podfile 을 수정해서 라이..

👩🏻‍💻 TIL 2023.01.12

[iOS] Automatically manage signing

Automatically manage signing iOS 앱을 Simulator 로 run 할 때는 그냥 하면 된다 하지만 실제 핸드폰을 연결해서 run 하는 순간 Singing for 'ToCrop..(예시)' requires a development team. Select a development team in the Sigining & Capabilities editor. => 이 뜻은 실제 핸드폰에 연결하려면 Singing 을 해야하고 그럴려면 team 이 필요하단 뜻이다 Automatically 체크해제하고 다시 run 하면 에러가 나오는데 어떤 에러인지 보면 'ToCrop' requires a provisioning profile. Select a provisioning profile in ..

👩🏻‍💻 TIL 2023.01.12

[Java] 추상 클래스와 인터페이스 차이 (2탄)

Interface 나 abstract Class 는 상속(extends)받거나, 구현(implements) 하는 Class 가 Interface 나 Abstract Class 안에 있는 Abstract Method 를 구현하도록 강제하는 공통점을 가지고 있다. 그렇다면 Interface 와 Abstract Class 두 종류가 존재하는건 왜일까? 결론부터 말하자면, Interface 와 Abstract Class 는 존재 목적이 다르다 Interface Interface 는 부모, 자식 관계인 상속 관계에 얽메이지 않고, 공통 기능이 필요할 때 Abstract Method 를 정의해놓고 구현(implements) 하는 Class 에서 각 기능들을 Overriding 하여 여러가지 형태로 구현할 수 있기에..

👩🏻‍💻 TIL 2023.01.04

Xcode Target, Project

workspace TARGETS 는 Xcode에서 Build를 실행하여 생성되는 최종 제품(?)(end product)입니다. project 란 project 는 모든 파일, 리소스, 하나 이상의 소프트웨어를 빌드하는데 필요한 정보의 저장소입니다. 그리고 연관된 Target 의 집합소입니다. (지금 하나의 Target 만 있는데, 프로젝트를 생성할 때 UI Test, Unit Test를 포함했으면 이 또한 Target 이 될 수 있고 또한 빌드를 할 때 각자가 빌드하는 Target 이 설정이 되어 있었을 것입니다.) 즉, 프로젝트는 target 을 하나 이상 포함합니다. 또한, 프로젝트는 모든 target 에 대한 기본 build setting 을 정의합니다. 정리 프로젝트는 연관된 Target 의 집합..

👩🏻‍💻 TIL 2022.12.29