Android app 을 개발하다 보면 네트워크 통신 결과나 배송 시스템처럼 '현재 진행 상황'에 따라 각기 다른 데이터를 보여줘야 하는 상태(State) 관리 로직을 자주 마주하게 된다. 이때 어떤 설계 방식을 선택하느냐에 따라 코드의 가독성과 안정성, 즉 코드의 품질이 결정된다. 그동안 우리는 관습적으로 interface나 enum을 사용해 왔다. 하지만 실무에서 마주하는 복잡한 상태들을 담아내기에 interface는 너무 '자유분방'해서 통제가 안 되고, enum은 너무 '경직'되어 있어 유연함이 떨어지는 탓에 종종 예외 상황이 터지곤 한다. 이번 포스팅에서는 코틀린에서 상태 관리를 유연하게 만들어주는 Sealed Class에 대해 알아보자.상태 관리, 무엇이 다를까?배송 시스템을 예로 들어 세 가..
Android app 을 개발하다 보면 커스텀 뷰(Custom View)를 정의해야 하는 경우가 자주 생긴다.커스텀 뷰는 호출되는 시점(코드 생성 vs XML 인플레이팅)에 따라 필요한 생성자가 다르기 때문에 반드시 생성자 오버로딩이 필수적이다. 이번 포스팅에서는 코틀린에서 이 복잡한 생성자 오버로딩을 한 방에 해결해 주는 @JvmOverloads에 대해 알아보자.생성자에서 @JvmOverloads 이용하기◼ Step 1 : 생성자 매개변수에 Default 값 설정하기코틀린은 파라미터에 기본값(Default value)을 지정할 수 있다.먼저 하단과 같이 커스텀 뷰에서 필요한 인자들에 기본값을 선언하자. ◼ Step 2 : @JvmOverloads annotation 추가하기클래스 헤더의 construc..
Android app을 개발하다 보면 보안 정책 강화에 따라 과거에 잘 사용하던 방식이 갑자기 막히는 경우가 빈번하게 발생한다.특히 내부 저장소에 파일을 저장하거나 공유할 때 관습적으로 사용하던 플래그 때문에 앱이 강제 종료되곤 하는데, 대표적인 것이 하단과 같은 에러다. 이미 관련 블로그도 많고 구글링에도 다양한 답변을 찾을 수 있지만 정리하는 차원에서 다뤄보려 한다.이번 포스팅에서는 java.lang.SecurityException: MODE_WORLD_READABLE no longer supported 에러에 대해 알아보자.Error message안드로이드에서 MODE_WORLD_READABLE(또는 MODE_WORLD_WRITEABLE)을 사용하면 하단과 같은 SecurityException이 발..
대부분의 안드로이드 개발자에게 안드로이드 스튜디오는 당연한 '울타리'와 같다.필자 역시 새로운 AI나 편리한 기능이 나와도 어떻게든 스튜디오 내 플러그인으 형태로 쓰려 했고, 통합되지 않는 Cursor AI는 한동안 외면해 왔다. 하지만 직접 경험해 본 Cursor AI는 스튜디오의 빈자리가 느껴지지 않을 만큼 압도적이었다.이제는 특정 프로젝트에서 Cursor AI가 메인이 되고, 안드로이드 스튜디오는 보조 수단으로 활용할 정도다. 이번 포스팅에서는 Cursor AI의 설치부터 실전 활용까지 정리해 본다.Cursor AI?grepWinCursor AI는 VS Code를 기반으로 제작된 AI 전용 코드 에디터다. 단순한 자동완성을 넘어 프로젝트 전체 문맥을 이해하고 코드를 생성하거나 수정하는 데 매우 강력..
개발을 하다 보면 다른 레거시 프로젝트를 참조해야 하는 순간이 자주 생긴다.특히 “이 문자열 어디서 쓰이지?”, “이 함수 호출하는 곳이 어디지?” 같은 상황에서 Windows 기본 검색으로 찾으려 하면 속도가 너무 느려서 시간이 오래 걸린다. 이럴 때 강력한 검색/치환 도구인 grepWin을 사용하면, 단 몇 초 만에 원하는 문자열을 찾고 바꿀 수 있다.이번 포스팅에서는 Windows에서 대용량 코드(레거시 포함)를 빠르게 검색할 수 있는 grepWin 활용법을 정리해본다.grepWin?grepWin 은 Windows 환경에서 동작하는 정규식 기반 문자열 검색 및 일괄 치환 도구다.오픈소스로 제공되며, 매우 가볍고 빠르게 작동한다.무엇보다도 GUI 기반이라 정규식을 처음 접하는 사람도 쉽게 사용할 수 ..
이번 포스팅에서는 원스토어에 앱을 등록하는 방법에 대해 알아보려 한다.원스토어는 대한민국 이동통신 3사(KT, LGU, SKT)의 통합 앱 스토어로 기본적으로 국내 이동통신사를 통해 출시되는 안드로이드 단말기에 선탑재 되어 있다. 대부분이 앱을 등록한다고 하면 구글 플레이스토어만 등록하고 원스토어에는 등록하지 않을 것이다.하지만 무료로 개발자 등록이 가능하고 플레이스토어에 등록한 정보를 이용하면 손쉽게 등록이 가능하니 원스토어 등록도 고려하길 바란다.회원가입 및 로그인원스토어에 앱을 등록하기 위해서는 개발자 계정이 필요하다.참고로 구글플레이스토어는 25 달러(한화로 약 30,000원)의 등록비가 필요하지만 원스토어는 무료다. ◼ 원스토어 개발자 센터 하단과 같이 회원 가입 후 로그인하자. 신규 상품 등..
Android Studio 를 업데이트한 후 기존 프로젝트를 불러왔을 때 예상치 못하게 Groovy 관련 에러가 발생했다. 실제로 해당 프로젝트에서 Groovy 를 사용하고 있지 않음에도 불구하고, 에러가 발생했다. 이번 포스팅에서는 해당 오류를 해결하는 방법에 대해 알아보자 Error message org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed Cause 알고보니 Android Studio 와 Gradle 빌드 시스템은 내부적으로 Groovy 를 활용하고 있었다. 이는 사용자가 Groovy 를 직접 사용하지 않았음에도 관련 메시지가 나타나게 한 원이이며, 실직적으로는 Gradle 빌드 과정 중 일치하지 않는 ..
어쩌다 보니 현금 출금이 가능한 리워드앱을 세 차례나 소개하게 된다. '캐시월드', '캐시투데이'에 이어 이번 포스팅 역시 현금 출금이 가능한 리워드앱 '캐시판다'에 대해 알아보려 한다. '캐시판다' 역시 지난 포스팅에서 알아본 '캐시월드', '캐시투데이' 와 매우 유사하다. (1 캐시 = 1 원) '캐시판다' 앱 설치 하단의 link 를 참조하여 앱을 설치하자. ◼ 안드로이드/구글플레이 ◼ iOS/앱스토어는 지원되지 않고 있다. 가입하기 앱을 다운로드 후 하단과 같이 회원가입을 하자. 추천 보상으로 1000 캐시를 추가로 지급한다. ◼ 추천인 코드: parkho (주위에 하신 분 분들 있으면 그분의 추천인 코드를 ㅋㅋ, 딱히 없으시면 요걸 입력하자) 캐시 적립하기 하단과 같은 방법으로 캐시를 적립할 수..
이번 포스팅은 현금 출금이 가능한 리워드앱 '캐시투데이'에 대해 알아보려 한다. '캐시투데이' 는 지난 포스팅에서 알아본 '캐시월드' 매우 유사하다. 게다가 '캐시월드' 보다 미션이 더 쉬우며 현금 출금도 가능하다. (1 캐시 = 1 원) '캐시투데이' 앱 설치 하단의 link 를 참조하여 앱을 설치하자. ◼ 안드로이드/구글플레이 ◼ iOS/앱스토어는 지원되지 않고 있다. 가입하기 앱을 다운로드 후 하단과 같이 회원가입을 하자. 추천 보상으로 500 캐시를 추가로 지급한다. ◼ 추천인 코드: parkho79 (주위에 하신 분 분들 있으면 그분의 추천인 코드를 ㅋㅋ, 딱히 없으시면 요걸 입력하자) 캐시 적립하기 하단과 같은 방법으로 캐시를 적립할 수 있다. ◼ 출석 체크 ◼ 정답 미션 - 하단과 같이 정답..
지난 포스팅에 간단한 설문조사로 META 를 무료로 채굴할 수 있는 '더폴' 을 소개했었다. 이번 포스팅에서는 무료로 받은 META 를 출금하는 방법에 대해 알아보자. [App Tech] - 더폴 META & TPL 채굴하기 META 출금 과정 요약 META 출금을 위해 하단과 같은 단계로 진행할 것이다. 1. 업비트 거래소에서 META 입금 주소 생성하기 (META 를 지원하는 거래소는 모두 같은 과정임) 2. 더폴에서 META 출금 신청. 3. 업비트 거래소에서 META 매도. 업비트 거래소에서 META 입금 주소 생성하기 하단과 같이 업비트 거래소에 입금할 META 의 입금 주소를 생성한다. ◼ 입금주소 생성 ◼ 입금주소 복사 업비트에서 META 출금 신청 하단과 같이 META 출금을 신청한다. ◼..
- Total
- Today
- Yesterday
- 채굴앱
- 안드로이드 서비스
- 무료 채굴
- notifyDataSetChanged
- 앱테크
- onCreateContextMenu
- android flag activity
- Android Service
- BroadcastReceiver
- RoomDatabase
- task
- StartService
- registerForContextMenu
- android task
- 앱테크 추천
- mPANDO
- StringUtils
- p2e
- 리워드 어플
- 안드로이드 인텐트
- onContextItemSelected
- android activity flag
- 리워드앱
- Intent
- bindservice
- android intent
- 무료채굴
- M2E
- task 생성
- WEMIX
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
