목록분류 전체보기 (285)
개발자 블로그
Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.전체 에러 메시지는 아래와 같습니다.FAILURE: Build failed with an exception.* Where:Build file '/Users/runner/work/1/s/app/build.gradle' line: 1* What went wrong:A problem occurred evaluating project ':app'.> Failed to apply plugin 'com.android.internal.application'. > Android Gradle plugin requires Java 11 to run. You are current..

파이프라인 동시 실행 문제동일한 repo에 여러 파이프라인이 존재하는 경우에 발생하는 문제입니다.트리거로 설정한 브랜치에 변경이 발생한 경우, 일반적으로 해당 트리거 브랜치에 연결 된 파이프라인만 동작하기를 기대하지만 실제로는 그렇지 않습니다.먼저 샘플 앱의 파이프라인 구성을 살펴보겠습니다.동일한 repo를 바라보는 두 개의 파이프라인이 있고, 각각의 파이프라인에 설정한 트리거 브랜치를 보여주고 있습니다.자, 여기서 azure-piplines 브랜치에 변경이 발생하면 어떻게 될까요?E___App (3) 파이프라인만 동작하기를 기대했지만, 실제 결과는 아래와 같습니다.네.. E___App 파이프라인과 EmartApp (3) 파이프라인이 모두 트리거 되었네요.수정하는 방법은 아래와 같습니다.YAML 에디터 ..
⚠️ 참고다중 APK 빌드를 사용한 경우에만 발생하는 문제입니다. 다중 APK 빌드와 관련 된 내용은 아래 링크를 참고하세요.https://developer.android.com/studio/build/configure-apk-splits?hl=ko Execution failed for task ':app:appDistributionUploadMarketRelease'.전체 에러 메시지는 아래와 같습니다.FAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':app:appDistributionUploadMarketRelease'.> App Distribution found more than 1 output ..

AWS CodeArtifact는 무엇?완전관리형 소프트웨어 아티팩트 리포지토리 서비스AWS CodeArtifact는 규모에 관계 없이 모든 조직이 소프트웨어 개발 프로세스에서 사용되는 소프트웨어 패키지를 안전하게 저장, 게시 및 공유 할 수 있도록 지원하는 완전관리형의 아티팩트 리포지토리 서비스입니다. CodeArtifact는 퍼블릭 아티팩트 리포지토리에서 소프트웨어 패키지 및 종속 항목을 자동으로 가져오도록 구성할 수 있으므로, 개발자는 최신 버전에 대한 엑세스 권한을 가집니다. CodeArtifact는 일반적으로 사용되는 패키지 관리자와 빌드 도구(예: Maven, Gradle, npm, yarn, twine, pip 및 NuGet)에서 작동하므로 기존 개발 워크플로에 손쉽게 통합할 수 있습니다.출처..

⛔️ 사전 알림 ⛔️이 글은 실패한 글 입니다. 시간이 아까우신 분들은 뒤로가기를 눌러주세요. 파이프라인 성능 개선테스트 자동화까지 구현을 했지만, 덕분에 전체 빌드 파이프라인 수행 시간이 많이 늘어났습니다.아래는 각 스텝 별 실행 시간입니다.안드로이드 이미지를 다운로드 받고, 에뮬레이터가 부팅이 완료 될 때 까지 걸리는 시간이 3분 55초입니다. 하지만 이 스크립트에는 개선의 여지가 없습니다.그 다음 많은 시간을 잡아먹는 것은 Gradle 빌드 작업입니다.아무래도 이 Gradle 작업의 성능을 개선해서 전체 파이프라인의 속도를 개선해야 될 것 같네요. Gradle 성능 개선사실 gradle은 그렇게 간단하지 않습니다. gradle만 다루는 책이 별도로 출판 되었을 정도니깐요.저도 솔직히 말씀드려서 gr..

이 문서에서 다루는 내용이 문서에서는 테스트 기법, 테스트 코드 작성 기법, UI 테스트 자동화에 대해서는 다루지 않습니다. 각각의 항목에 대한 상세한 내용은 아래 링크를 참고 바랍니다.앱 테스트https://developer.android.com/studio/test?hl=koAndroid에서 앱 테스트https://developer.android.com/training/testing?hl=koUI 테스트 자동화https://developer.android.com/training/testing/ui-tests?hl=ko 안드로이드 앱 테스트 종류잘 아시겠지만 안드로이드 앱 테스트 방법에는 두 가지 종류가 있습니다. ⚠️ 참고 - 용어는 https://developer.android.com/studio/..

무선이 주는 편리함에 대해서는 너무 잘 알고 있습니다. 선정리가 필요 없어서 주변이 깔끔해진다는 장점도 너무 좋지요.마우스는 진작에 무선 마우스를 사용하고 있었습니다. 처음에는 무선 동글을 사용한 방식의 마우스를 썼었고, 지금은 블루투스 마우스를 사용하고 있습니다. 게임을 하시는 분들은 지연 때문에 유선마우스에 마우스 번지대 조합을 사용하거나 블루투스 대신 동글을 사용해서 쓴다고 하던데 저는 게임을 그렇게 많이하는 헤비 유저는 아니라서 블루투스 마우스에 만족하며 사용하고 있습니다. 위 모델이 제가 얼마전 구입한 무선 기계식 키보드입니다.사실 같은 회사의 FC900R이라는 유선 키보드를 쓰고 있었답니다. 그러다가 회사를 그만두고 다시 취직하고 하는 과정에서 업무용 키보드를 팔았다가 다시 구입하려고 하니 유..
안드로이드 스튜디오 버전을 업데이트 한 뒤로 갑자기 빌드가 되지 않는 오류가 발생했다. 예전에도 IDE 업데이트를 하고나면 꼭 한 두가지 문제들이 발생해서 업데이트를 신중히 하는 편인데, 그나마 최근에는 많이 안정화가 된 것 같더니 나를 또 이렇게 괴롭히네..빌드 오류 메시지는 아래와 같다.* What went wrong:Execution failed for task ':app:kaptGenerateStubsDebugKotlin'.> Error while evaluating property 'compilerOptions.jvmTarget' of task ':app:kaptGenerateStubsDebugKotlin'. > Failed to calculate the value of property '..

하.. x발.. 일단 욕부터 박고 시작해야겠다. 짱깨 개 x빨 새끼들.. 진짜 사기의 민족이라고 불러야 될 것 같다. 어떻게 이런식으로 사기 칠 생각을 했을까.. 씽크빅 저리가 할 정도의 창의력이다. 일단 사기당한 USB 허브의 외관이다. 만약 2022년 8월 이전에 구입한 이런 모양의 MADE IN CHINA USB 3.0 허브라면 거의 사기제품이라고 보면 된다. 사실 내가 발견한 건 아니고, 유튜브에서 뻘짓연구소님의 영상을 보고 사기제품이라는걸 알게 되었다. 그만큼 교묘하게 사용자를 속여서 사기를 쳤다. 아래는 관련 영상. 제품 패키지에는 존나 당당하게 "With 4USB 3.0 port with super speed 5Gbps"라고 적혀있다. 하지만 제일 상단에 있는 포트 하나만 정상적인 USB 3..
layout preview 안보임.. stackoverflow에도 같은 증상을 겪는 사람이 있는데, 답변대로 해봤지만 여전히 안보임.. 휴.. https://stackoverflow.com/questions/73772547/ Android Studio Dolphin | 2021.3.1 does not show layout preview I'm using Android Studio Dolphin | 2021.3.1 After updating Android studio chipmunk | 2021.2.1 to Android studio Dolphin | 2021.3.1 my all project design preview and layout preview not showing. If a... stackove..

왜 느림? 왜 이렇게 많은 시간이 걸리는지 확인하기 위해 파이프라인 실행 결과를 살펴보겠습니다. 제목이 스포일러가 된 것 같은데.. 소스코드 체크아웃 하는 부분이 8분 31초나 걸리고 있습니다. 전체 런닝 타임이 12분 30초인걸 감안하면 거의 60% 정도의 시간이 여기에 소요된다는 것을 알 수 있습니다. 체크아웃 항목을 클릭하면 자세한 내용을 볼 수 있습니다. 주요 내용을 옮기면 대략 아래와 같습니다. Receiving objects: 98% (28461/29041), 2.71 GiB | 5.79 MiB/s Receiving objects: 99% (28751/29041), 2.71 GiB | 5.79 MiB/s Receiving objects: 100% (29041/29041), 2.71 GiB | ..

✔ Firebase 관련 안내 이 예제에서는 배포 도구로 Firebase App Distribution을 사용합니다. 아직 Firebase 구성을 시작하지 않았다면 먼저 Firebase 프로젝트 설정을 완료해주세요. https://console.firebase.google.com/ ✔ App Distribution 관련 안래 Firebase App Distribution을 사용하기 위해서는 몇 가지 설정을 먼저 진행해주셔야 합니다. 여기서는 해당 절차들에 대해서는 설명하지 않습니다. 자세한 내용은 아래 링크를 참고하세요. ● Firebase App Distrubution 개요 - https://firebase.google.com/docs/app-distribution?hl=ko ● 테스터를 위한 설정 -..

YAML이 뭔데? 야, 근데 YAML이 뭐냐? https://ko.wikipedia.org/wiki/YAML 좀 더 경량화 된 json? 읽을 때는 '야믈' 또는 '야멜' 정도로 발음합니다. ('야믈' > '야멜' 인듯?) 어쨌든 파이프라인 구축에 있어서 YAML이 뭔지는 중요하지 않습니다. 중요한건 command입니다. json과는 다르게 대신 띄어쓰기가 중요하다(의미를 가진다)라는건 기억하세요! 다시 처음부터... 이제 본격적으로 빌드 파이프라인을 생성해 봅시다. 이전에 classic editor로 만들었던 빌드 파이프라인은 삭제합니다. 그리고 다시 "New pipeline" 버튼을 클릭해서 파이프라인 생성을 시작합니다. ✔ 참고 "GUI로 만들기" 항목과 중복되는 부분 중 중요하지 않은 단계들은 생..

✔ 참고 실제 운영환경에서는 GUI로 빌드 파이프라인을 생성하지는 않습니다. 따라서 이 페이지 내용은 그냥 가볍게 살펴보셔도 괜찮습니다. Classic Editor vs YAML 기본적으로 YAML을 사용해서 빌드 파이프라인을 작성하는걸 권장합니다. 이름이 Classic Editor라서 이게 직접 스크립트를 작성하는 것 같지만, GUI 방식이 맞습니다. YAML은 직접 스크립트를 작성하는 방식입니다. YAML을 사용해야 좀 더 세부적인 내용을 건드릴 수 있어서 YAML 방식을 추천하는 것 같습니다. 일단은 돌려보자! 백문이 불여일견! 일단 돌려봅시다. 전 단계에서 "New pipeline" 버튼을 클릭하면 아래 화면이 표시됩니다. 우리는 일단 GUI 방식으로 구축을 할 것이기 때문에 이미지 맨 밑에 보이..

✔ 빌드환경 이 페이지에서 설명하는 내용은 안드로이드 앱 빌드를 기본으로 합니다. ✔ 형상관리 도구 이 페이지에서 설명하는 내용은 VCS로 Azure DevOps Repos git을 사용합니다. ✔ APK 배포 방법 생성된 APK 배포를 위해서 Firebase App Distribution을 사용하고, 세부적인 구현 방식은 gradle을 사용한 앱 배포 방식을 사용합니다. 위와 관련하여 자세한 내용은 아래 링크를 참고하세요. https://firebase.google.com/docs/app-distribution/android/distribute-gradle 빌드 파이프라인? Build Pipeline은 trigger branch에 변경(push, merge)이 발생했을 때 자동으로 빌드가 수행되도록 하..

대한민국 시총 1위에 빛나는 그 기업! 개미들이 10만전자를 부르짖던 그 기업! 갓성전자! 스마트폰 하드웨어는 GOS로 욕 존나 먹으니깐 소프트웨어도"질 수 없지!" 뭐 이런건가? 2022.03.03 - [스마트폰] - 삼성 갤럭시 GOS 논란에 대한 나의 생각 삼성 갤럭시 GOS 논란에 대한 나의 생각 뉴스는 아무래도 시국이 시국인지라.. 조금 조용한 것 같은데, 유튜브에서는 테크 유튜버들이 모두 관련 영상들을 올리고 있어서 꽤 논란이 큰 것 같다. 참고로 나는 앱 개발자고 아이폰, 안드로 oneday0012.tistory.com 삼성전자에서 개발한 스마트싱즈(SmartThings)라는 앱을 쓰다가 정말 어이 없는 화면을 보게 되었다. 동의 버튼 위에 있는 "계속하려면 %1$s 및 %2$s에 동의해 주..

Translated by Google Translate. In my app, I was receiving notifications by gmail using nodemailer for the part that needs monitoring. In the past, it was working fine without any problems, but at some point the mail was not being sent. So I looked up the error log and found the following log. (It may be slightly different from the original text by deleting or modifying sensitive information.) S..

내 앱에서 모니터링이 필요한 부분에 nodemailer를 사용해서 gmail로 알림을 받고 있었다. 기존에는 아무런 문제 없이 잘 동작하고 있었는데, 어느 순간부터 메일이 발송되지 않고 있었다. 그래서 에러 로그를 찾아보니 아래와 같은 로그가 찍혀있었다. (민감할 수 있을 것 같은 내용은 삭제 또는 수정해서 원문과는 조금 다를 수 있다.) Send mail error: { Error: Invalid login: Username and Password not accepted. Learn more at https://support.google.com/mail/?p=BadCredentials - gsmtp at SMTPConnection._formatError (myprojects/node_modules/no..

스마트폰 앱을 개발하다보면 PC에서 앱을 빌드하고, 스마트폰에서 이것저것 터치하고, 스크롤하면서 테스트를 하는 경우가 빈번하다. 멀티 패어링을 지원하는 블루투스 마우스를 사용하고 있어서 클릭 한 번으로 마우스 PC와 스마트폰간에 마우스 전환이 가능한데.. 이게 스마트폰 하나만 놓고 테스트 하는게 아니다보니깐 약간의 불편함이 있었다. 그렇다고 또 멀티 패어링을 지원하는 마우스를 하나 더 사자니 회사에서 가끔 사용하는건데 돈이 좀 아깝고.. 그래서 그냥 멀티 패어링 기능 없는 블루투스 마우스를 알아봤는데, 이것도 최소 만원은 줘야 사더라.. 그러던 와중에 다이소에서 아래의 마우스를 발견했다. 블루투스 마우스가 무려 5,000원!! 와.. 진짜 어떻게 이런 미친 가격이 가능한건지 모르겠다. AA 건전지가 미포..

앱 개발자라면 동시에 여러대의 스마트폰을 컴퓨터에 연결해서 개발을 하고 있을꺼다. 물론 뭐 에뮬레이터 혹은 시뮬레이터로 개발 할 수 도 있겠지만, 실 단말에서도 정상적으로 동작하는지, 다른 이슈가 없는지는 꼭 확인해야 된다. 그것도 제조사별, OS 버전별, 기기 타입별 동작들이 다를수도 있기 때문에 책상위에 여러대의 스마트폰이 어지럽게 놓여있는건 어쩔 수가 없다. 그러다가 오토바이로 배달하는 라이더들이 사용하는 스마트폰 거치대가 떠올랐다. 마그네틱이 붙어있고, 동시에 많게는 4대까지도 거치할 수 있는 거치대. 근데 이게 오토바이용으로 나온거라서 그런지 책상위에 거치해서 쓸만한 그런 시제품은 없더라. 그래서 직접 만들었다. 뭐.. 그렇다고 3D 프린터나 금속, 나무 가공 기술 같은것도 없고, 크게 돈 들이..

플스5가 이제 시장에 좀 많이 풀린 것 같다. 당근마켓에도 예전에는 웃돈을 얹어서 사겠다는 사람들이 많았는데, 지금은 판다는 글이 더 많고, 거래되는 가격도 많이 내려왔다. 하.지.만 여전히 정가에는 거래되고 있지 않다. 참.. 그래픽 카드도 보면서 비슷한 생각이 들었는데.. 물론 되팔렘들이 나쁜건 맞다. 하지만 굳이 그 가격에 꼭 사야되는지 한번 물어보고 싶다. 며칠전 난리가 났던 '문워치'였나? 그것도 그렇고.. 포켓몬 빵도 마찬가지고.. 대체 그 띠부띠부 씰이 뭐라고.. 뭐 플스를 사려고 하는 사람이라면 대부분 알고 있을 것 같긴한데 혹시나 몰라서 웃돈주고 사는 흑우들이 있을까봐 정가에 구매하는 방법을 공유하려고한다. 보너스로 이것저것 할인 받으면 정가보다 싸게 살수도 있다. 일단 이마트앱을 설치해..
예전에는 code project를 많이 참고했었던 것 같은데 요즘은 stackoverflow를 거의 교과서처럼 참고한다. 이거 없을 때는 코딩을 어떻게 했나 싶다. 가끔 보다보면 인터넷에서 사용하는 용어인지 모르겠는데 줄임말들이 보인다. 잘 알고있는 ASAP같은 것 말고 처음보는 것들이 있어서 여기에 하나, 둘 발견할 때 마다 정리를 해두려고 한다. 인터넷 검색으로 찾은 것들이라서 일부 부정확한 해석이 있을지도 모르겠다. YMMV - Your Mileage May Vary 나한테는 잘 되는데 너의 상황에서는 다르게 적용될 수도 있다. AFAIK - As Far As I Know 내가 아는 한도 내에서 FTW - For The Win 잘했다? / 만세? / 최고? 주로 게임이나 댓글의 마지막에 감탄사 정도..
뉴스는 아무래도 시국이 시국인지라.. 조금 조용한 것 같은데, 유튜브에서는 테크 유튜버들이 모두 관련 영상들을 올리고 있어서 꽤 논란이 큰 것 같다. 참고로 나는 앱 개발자고 아이폰, 안드로이드 둘 다 개발을 한다. 뭐.. 앱 말고 다른 것들도 하긴 하는데.. 암튼 메인은 앱이다. GOS는 Game Optimizing Service의 약자로, 자세한 내용은 나무위키에 올라와있다. https://namu.wiki/w/Game%20Optimizing%20Service 저 게임 최적화 서비스라는 앱이 이번에 새롭게 출시된게 아니었기 때문에 처음에 이 논란을 접하고 조금 의아해했다. 근데 보니깐 상황이 예전이랑 좀 다른 것 같긴 하더라. 예전에는 게임런처? 게임튜너? 뭐 이런 이름으로 이미 있던 앱이다. 하는 ..

제목으로 어그로 좀 끌어봤다.. 원래 점잖은 사람인데.. 낚였다면 죄송. 나도 원래 애플 제품을 별로 좋아하지는 않는다. 근데 하는 일이 앱 개발이다보니깐 아이폰 앱을 개발하기 위해 어쩔 수 없이 아이폰과 맥북을 가지고 있다. 안드로이드야 뭐 인텔CPU든, M1칩셋이든 가리지를 않는다. OS도 마찬가지로 Windows, MacOS 어느 환경에서도 다 개발이 가능하다. 근데.. 이놈의 애플은 무조건 아이폰과 맥이 필요하다. 개발자 등록비도 더럽게 비싸다. 안드로이드는 평생 딱 한 번 25,000원이면 되는데, 애플은 1년에 12만원이었나? 암튼 그 정도의 금액을 계속 지불해야 된다. 이런 폐쇄적인 정책과 고가 전략이 나는 너무나도 싫다. 그럼에도 불구하고 뭐.. 하는일이 이거니 어쩔 수 없이 사는거지. 아..

길게 설명 안한다. 이거 모르는 흑우 아직 없제? 여기서 예언 하나.. 당신은 분명 속으로 'x발..'이라고 말했을꺼다. 내말이 맞지? ㅋ 응~ 내 얘기야.. 이 것 때문에 오늘 삽질 존나게 했네.. ㅅㅂ

전업 앱 개발자로 처음 안드로이드 앱 개발은 윈도우PC로 개발을 했지만, 아이폰 앱 개발을 하려면 무조건 맥이 필요했다. 어차피 노트북도 없고 해서 맥북을 알아보게 되었고, 뭐 알다시피 가격이 워낙에 비싸기 때문에 그 때 당시 출시된지 2년 반 정도 지난 2014 mid 맥북 프로 기본형을 중고로 구입했다. 2017.01.03 - [1인 개발자 이야기] - 맥북 구입 완료 맥북 구입 완료 지난 번 맥북 구입을 알아보고 있다는 포스트를 쓴지 3일이 지났구나. 2016/12/31 - [전업개발자 이야기] - 맥북 알아보는 중.. 바로 다음 날 샀다. 중고로. 신동급 2014mid 기본형 모델을 85만원에 구입 oneday0012.tistory.com 80만원에 산 줄 알았는데, 지금 보니깐 85만원 주고 샀..

IDE에서 기본적으로 설치되는 플러그인 외에 별도의 플러그인을 사용해본적이 최근에는 없는 것 같다. 아주 오래전 Visual Studio 6.0을 사용하던 시절에는 코드 자동완성 같은 기능이 IDE 자체에 없었기 때문에, 그 때는 자동완성 플러그인을 사용하긴 했었다. 아마도 그게 마지막 플러그인이었던 것 같네. Android Studio는 그냥 그 자체로도 대단히 훌룡한 IDE지만 찾아보니 유용한 플러그인이 있어서 추천하는 포스팅을 작성해보려고 한다. 플러그인 이름은 "SonarLint". "SonarQube"는 아는 사람이 있을지도 모르겠네. 소나큐브는 별도의 서버에 설치를 해야 되서 사용이 그리 간단하지 않지만, SonarLint는 SonarQube와 같은 기능을 별도의 서버 없이 아주 편리하게 제공..

x발! 나이먹고 이런 저급한 단어들을 사용하는게 스스로 부끄럽게 느껴져서 웬만해서는 욕을 안하려고 하지만 최근 구글의 행태를 보면 욕이 안 나올 수가 없다. 최근 하루에 한 번씩 앱이 삭제되었다는 메일을 받는 것 같다. 사유는 모두 동일하다. 위 내용과 같이 사용자 생성 컨텐츠(UGC) 정책 가이드를 위반 했다는 내용이다. 아니 처음에 앱 등록 할 때는 아무런 제지도 없다가 갑자기 이제 와서 아무런 사전 통보도 없이 그냥 앱을 삭제해버린다. 뭐 대응할 수 있는 시간이라도 주던가 해야 되는데 그런 것도 없다. 애플과는 참 대비되는 모습이다. 애플은 심사 할 때 좀 빡쎄게 리뷰를 하긴 하지만 리뷰가 통과 된 뒤에 이런식으로 사전 통보 없이 삭제 해버리는 짓은 하지 않는다. '악마가 되지 말자'라고 외치던 구..

뭐 대부분의 문제가 그렇겠지만, 이 문제 역시 바보 같은 나의 실수 때문에 발생한 문제였다. RecyclerView.Adapter의 getItemCount() 함수만 호출 안되는 것이 아니고, 다른 override 함수들인 onCreateViewHolder(), onBindViewHolder() 함수 역시 모두 호출이 되지 않았다. 브레이크 포인트를 걸어보고, 로그를 찍어봤지만 역시 호출이 안된다는 것이 확인됐다. 구글링을 해보면 LayoutManager 설정을 빼먹은게 아니냐는 글이 많고, 실제로 가끔 겪는 실수이긴한데, 이번에는 그 문제가 아니었다. 그리고 LayoutManager 설정을 빼먹었을 때는 Logcat 메시지에 아래 이미지처럼 친절하게 알려준다. 이번에 getItemCount()를 비롯해..

안드로이드 스튜디오의 새로운 버전이 출시 되었다. 뭐 새 버전 출시야 계속 반복되는 일이지만, 버전 네이밍 룰을 변경한걸 보면 뭔가 큰 변경이 생긴 것 같기도하고.. 이번 Android Studio 버전의 이름은 Arctic Fox이다. 한국어로는 북극여우 또는 흰여우. 그래서인지 이제 Android Studio를 실행시키면 잠깐 뜨는 로딩 화면에 흰여우가 그려져있다. 'A'부터 시작해서 'B', 'C', 'D'... 의 알파벳 순으로 동물의 이름으로 버전네임을 정할꺼라는데.. 'B'는 뭐가 될까? 'Bear'? 기대가 되네. 서론이 좀 길었다. 암튼 Android Studio를 업데이트 하고나니 아래 이미지처럼 한글이 깨진다. 별로 놀랍지는 않다. Android Studio를 업데이트 하면 자주 겪게되..