[개발] Github Actions Workflow를 활용한 TDD 적용기 - 빌드서버 구축

이미지
  현업에서 Android, iOS 둘을 다 개발하기 때문에 개발 외적으로 들어가는 리소스를 최소화 하기 위하여 이 글을 남긴다.   이전에 Gitlab을 사용할때에도 gitlab CI/CD를 활용하여 어느정도 자동화는 구축하였지만 따로 관련 자료를 정리해 놓은것이 없어서 신규로 빌드서버를 구축하려 했을때 참고할만한 자료가 아무것도 없더라...   이번에는 이렇게 글이라도 남겨 놓아서 나중에 나에게 또는, 이를 필요로 하는 어느 누군가에게 도움이 되길 바란다.     빌드서버 구축   github action과 관련된 공식 링크는 여기 를 참고하자.   gitlab과는 다르게 github은 클라우드로 빌드서버를 지원하는것으로 확인되나 필자는 self-hosted로 따로 빌드서버를 구축하여 사용하도록 하겠다.    이곳 을 클릭하면 self-hosted 로 runner를 추가하는 방법이 나와 있으니 참고하자 runner 설치는 이곳 을 클릭하여 다운 받도록 하자. 참고로 필자는 Mac 을 사용하기 때문에 이곳 을 참고하여 아래명령으로 다운로드 받았다. 1 2 3 4 5 6 # Create a folder mkdir actions - runner  & &  cd actions - runner # Download the latest runner package curl  - O  - L https: / / github.com / actions / runner / releases / download / v2. 292. 0 / actions - runner - osx - x64 - 2. 292. 0. tar.gz # Extract the installer tar xzf . / actions - runner - osx - x64 - 2. 292. 0. tar.gz Colored by Color Scripter cs 위 repo를 통해 업데이트를 지원하는것 같은데 필자의 경우 최신 버전이 2.292.0이었으므로 참고하도록 하자.

[Androidpublisher API] voidedpurchases 를 사용하여 인앱 결제 취소를 확인하여 인앱 사기를 방지하자!! - 2

이전 방식 처럼 한다면 매번 구글 계정으로 인증을 해야하는 문제가 있다. 콘솔이나 배치 시스템에서 인앱 결제 취소를 확인 하려면 뭔가 다른 방법으로 access_token을 획득 해야 한다. 토큰 요청시 grant_type을 refresh_token으로 하여 refresh_token으로 사용하면 구글 인증 없이 계속 갱신이 가능하다. 그러면 refresh_token은 어떻게 얻느냐? 구글 계정 인증시 최초 1회만 획득 할 수 있다. 그 이후에 인증을 하면 refresh_token 없이 access_token만 리턴 된다.  https://myaccount.google.com/u/0/permissions 구글에서 인증 계정으로 로그인 하고 위 링크로 접속하여 해당 서비스의 액세스 권한을 삭제하고  다시  https://accounts.google.com/o/oauth2/v2/auth 로 oauth 인증을 해보자 그러면 refresh_token을 반환할 것이다. 이후로 아래처럼 요청하면 인증 코드 없이 access_token을 갱신 할 수 있다. https://accounts.google.com/o/oauth2/token method=get parameter client_id=[입력] client_secret=[입력] grant_type=refresh_token refresh_token=[위에서 받은거 입력] ex) https://accounts.google.com/o/oauth2/token?client_id=[입력]&client_secret=[입력]& grant_type=refresh_token& refresh_token=[입력]

[Androidpublisher API] voidedpurchases 를 사용하여 인앱 결제 취소를 확인하여 인앱 사기를 방지하자!!

이미지
Google Play Console 접속 API 액세스 클릭 OAuth 클라이언트 단락에서 새 OAuth 클라이언트 만들기 클릭   위 팝업이 뜨면 Google Cloud Platform 파란색 링크 클릭하여 팝업 안내처럼 사용자 인증 정보를 만들고 완료 클릭 유형을 웹 어플리케이션 으로 할것 oauth 인증시 redirect_url이 필수 이므로 승인된 리디렉션 URI 항목을 추가한다.(로컬에서 테스트 하려면 https://localhost:8080이라도 넣는다.) 생성된 사용자 인증 정보를 보면 클라이언트 ID와 클라이언트 보안 비밀 이 있는데 다음 단계에서 필요하므로 기억하고 있자. 아래 URL을 통해 개발자 계정 소유자 계정으로 로그인하여 code를 받아야함. https: //accounts.google.com/o/oauth2/v2/auth METHOD = GET PARAMETERS scope =https :// www . googleapis . com / auth / androidpublisher access_type =offline redirect_uri =https :// localhost : 8080 // 인증후 이동할 페이지 client_id = // 클라이언트 아이디 GCP에서 확인 ~-~.apps.googleusercontent.com 형식 response_type =code ex ) https: //accounts.google.com/o/oauth2/v2/auth?scope=https://www.googleapis.com/auth/androidpublisher&access_type=offline&redirect_uri=[입력]&response_type=code&client_id=[입력]     구글 계정으로 로그인 하면 redirect_url로 이동하면서 아래와 같은 형식의 Url로 접속할 것임 https: //localhost:8080/?state=state_p

[Android] Studio 에서 Firebase 연동시 could not parse the android application module's gradle config 오류 대처

이미지
 프로젝트 생성 후 Firebase 연동하려고 보니 아래와 같은 메시지가 발생 하면서 진행이 되지 않았었다. 구글링 결과 databinding 설정을 해제하라느니 종속 라이브러리를 하나씩 빼보라느니 방법이 나오는데 필자는 어떤 방법으로도 해결이 안되어 아래와 같은 방법으로 해결하였다. 먼저 프로젝트를 빌드하여 보니 아래와 같이 빌드는 성공하였으나 java 버전 관련하여 warning이 발생한것을 볼수 있다. gradle settings를 클릭하여 Java버전을 11로 변경 하였더니 해결이 되었다.

[Android] 인앱 업데이트 지원

  1 implementation 'com.google.android.play:core:1.10.3' 코드는 아래와 같다. 1 2 3 4 5 6 7 val updateManager = AppUpdateManagerFactory.create( this ) val updateInfo = updateManager.appUpdateInfo updateInfo.addOnSuccessListener { if (it.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE && it.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)) { updateManager.startUpdateFlowForResult(it, AppUpdateType.IMMEDIATE, this , 1 ) } }

[iOS] 인앱 리뷰

1 2 3 4 5 6 7 8 import StoreKit . . . // 아래를 호출하면 팝업창 발생함. SKStoreReviewController.requestReview()