피드로 돌아가기
How to Publish Your Flutter App on F-Droid
Dev.toDev.to
DevOps

F-Droid 배포를 위한 Flutter CI/CD 파이프라인 최적화 및 ABI 분할 빌드 설계

How to Publish Your Flutter App on F-Droid

Benji3772026년 5월 14일7intermediate

Context

F-Droid의 엄격한 오픈소스 정책과 빌드 서버 환경으로 인해 로컬 빌드와 서버 빌드 간의 바이너리 일치성이 요구됨. Google Play Services 등 proprietary 라이브러리 의존성과 아키텍처별 APK 용량 최적화가 주요 병목 지점으로 작용함.

Technical Solution

  • Proprietary SDK 제거를 통한 F-Droid Anti-Features 정책 준수 및 빌드 호환성 확보
  • build.gradle.kts 내 CI 환경 변수 기반 Signing Configuration 동적 할당 구조 설계
  • ABI별 Version Code 차등 부여(v*10 + index)를 통한 아키텍처별 APK 분할 배포 체계 구축
  • GitHub Actions 내 Flutter 버전 하드코딩 및 C++ 모듈의 build-id 제거를 통한 빌드 결정성(Determinism) 확보
  • Base64 인코딩 기반 Keystore Secret 관리로 CI/CD 파이프라인 내 보안 서명 프로세스 자동화
  • F-Droid Metadata YAML 설정을 통한 소스 기반 빌드 검증 및 SHA256 지문 일치 확인

1. F-Droid 배포 시 Google Play Services 등 proprietary 의존성 완전 제거 여부 확인

2. 빌드 결정성 확보를 위해 CI 환경의 SDK 버전을 명시적으로 고정

3. ABI 분할 빌드 시 각 아키텍처별 Version Code가 중복되지 않도록 공식 적용

4. C++ JNI 라이브러리 포함 시 --build-id=none 옵션을 통해 바이너리 불일치 해결

원문 읽기