Mobile Build & Deploy
- 헤드리스 CI에서 fastlane export 서명 오류와 세션 갱신 job 정리2026-03
export 단계의 allowProvisioningUpdates를 끄고, pbpaste에 의존하던 FASTLANE_SESSION 갱신을 출력 파싱 스크립트로 바꿨다.
- fastlane과 Jenkins로 iOS TestFlight 빌드 넘버 충돌 막기2026-02
TestFlight 최신 빌드 넘버와 로컬 기록을 비교하고 앱 버전 경계에서 분기하도록 빌드 넘버 결정 로직을 설계했다.
- fastlane TestFlight 업로드 인증을 App Store Connect API Key로 전환2026-01
CI에서 ID/Password + 2FA 세션이 불시에 만료되는 문제를 겪고 App Store Connect API Key 인증으로 바꾼 이유를 정리한다.
- App Store Connect API Key 인증이 agreement 에러로 막혔을 때 ID/Password 방식 병행2026-01
fastlane의 API Key 인증이 "required agreement is missing or has expired" 에러로 실패해, 빌드 파라미터로 인증 방식을 고를 수 있게 했다.
- fastlane으로 iOS 빌드와 TestFlight 업로드 자동화2026-01
App Store Connect API 키 인증 기반으로 빌드 번호 증가, 앱 빌드, TestFlight 업로드를 하나의 fastlane lane으로 구성했다.
- Android에 Unity Static Splash Image 적용2025-12
Android 앱 실행 직후 엔진 초기화 동안 보이던 검은 화면을 Static Splash Image로 없애고, 화면 비율별로 로고 표시를 검증했다.
- React / Next.js RCE 취약점(CVE-2025-55182) 영향 판단과 패치2025-12
React Server Components RCE 취약점(React2Shell)의 영향 범위를 판단하고, 클라이언트 전용 React 프로젝트에 예방 패치와 의존성 보안 업데이트를 적용했다.
- Unity 6 iPadOS에서 RenderExtraFrameOnPause가 동작하지 않는 문제2025-11
Unity 6000.1.8f1부터 CAMetalDisplayLink 사용 시 일시정지 추가 프레임 렌더링이 건너뛰어지는 원인을 트램폴린 코드 비교로 찾고, iOS 후처리 빌드 스크립트로 Metal Display Link를 끄도록 우회했다.
- Unity 앱의 Android 15 타깃과 16KB 페이지 크기 대응2025-07
Target API 35와 16KB 페이지 크기 정책에 맞춰 SDK를 올리고, Gradle 8.11.1·AGP 8.x 전환에서 생긴 빌드 오류를 후처리 스크립트로 정리했다.
- Addressables LoadPath, Xcode 16 CocoaPods, fastlane 서명 문제 정리2025-02
원빌드 다중 환경에서 Addressables 경로가 고정되는 한계, Xcode 16 업데이트 후 CocoaPods 호환, fastlane의 rbenv·서명 문제를 원인과 함께 정리한다.
- Crashlytics Android 네이티브 디버그 심볼 생성과 Jenkins 업로드2025-01
Unity 빌드에서 타깃별로 심볼 수준을 나누고, Jenkins job에서 Firebase CLI로 심볼을 선택적으로 업로드한다.
- 빌드 머신 기준 Unity Android Resolver 옵션 정리2025-01
External Dependency Manager의 Android Resolver 옵션별 사용 여부와 그 이유를 빌드 안정성 관점에서 정리한다.
- 빌드 머신의 Google Drive 경로에서 Resource deadlock avoided 에러2024-11
macOS 빌드 머신이 Google Drive 공유 드라이브 경로에 mkdir를 하지 못하던 문제를 폴더 새로고침으로 해결했다.
- Jenkins macOS 빌드에서 Android Performance Tuner protoc 실행 권한 오류2024-06
APT 설치 후 컴파일 시점에 protoc 실행이 Access denied로 실패한 문제를 chmod로 해결했다.
- 앱 버전이 바뀔 때 CFBundleVersion을 초기화하기 (fastlane)2024-06
latest_testflight_build_number에 version 인자를 넘겨 앱 버전별로 빌드 번호가 새로 시작되게 한다.
- Unity iOS 빌드와 fastlane 연동 시 CFBundleVersion 충돌 피하기2024-01
동시 빌드에서 CFBundleVersion이 겹칠 수 있음을 확인하고, Unity는 Xcode 프로젝트 추출까지만 맡기고 빌드 번호 지정과 ipa 생성은 fastlane Job으로 옮겼다.
- Unity에서 Play Asset Delivery(PAD)로 AAB 150MB 제한 넘기기2024-01
AAB 150MB 제한에 대응해 PAD 도입의 장단점을 검토하고, Google 플러그인 방식의 실패를 거쳐 Unity 자체 PAD 빌드로 적용했다.
- Unity 빌드 중 발생한 에러 모음2023-11
Gradle 캐시, Facebook SDK 설정, Firebase Crashlytics, aaptOptions 등 Unity 빌드 에러별 원인과 해결을 모았다.
- Firebase Crashlytics v8 이후 iOS·Android 심볼 업로드 방식 변경2022-03
Crashlytics v8.x부터 iOS는 dSYM 수동 업로드가 필요 없어지고 Android는 심볼 업로드가 필요해져 Jenkins 빌드 스크립트를 바꿨다.
- Firebase Unity SDK 8.x 업데이트 후 iOS CocoaPods 의존성 충돌2022-03
Firebase Unity SDK를 7.2.0에서 8.8.0으로 올린 뒤 남아 있던 FirebaseInstanceID 7.x pod 때문에 FirebaseCore 버전이 충돌한 문제를 해결했다.
- AAB에서 추출한 APK에서만 에셋 번들 로딩이 느린 문제2021-11
Android 라이브 빌드에서만 에셋 번들 로딩이 느린 원인을 단계별 테스트로 좁혀 AAB 추출 APK와 특정 로딩 메서드까지 분리했다.
- Jenkins Build periodically 스케줄 문법과 H 키워드2019-05
Jenkins 잡의 Build periodically에 쓰는 cron 문법, 부하를 분산하는 H 키워드, 시간대 지정 방법을 예시와 함께 정리한다.