__CAPGO_KEEP_0__ 플러그인이 Capacitor Android Gradle Plugin 9 업그레이드 후 플러그인이 실패하는 경우, AGP 9에서 작동하는 작은但 крит적인 Gradle 구성 문제를 만날 가능성이 있습니다.
이 포스트는 다음과 같은 일반적인 검색 의도에 집중합니다:
- Capacitor 플러그인 빌드 오류 AGP 9
- Android Gradle Plugin 9 플러그인 빌드 실패
proguard-android.txt찾을 수 없음- AGP 9
getDefaultProguardFile오류 - Capacitor AGP 업그레이드 후 Android 빌드 실패
간단한 버전:
proguard-android.txtAGP 9 플러그인 빌드에서 더 이상 안전한 기본 라인으로 참조하는 것이 안전하지 않습니다.- AGP 9 플러그인 빌드에서
proguard-android-optimize.txt. - 재빌드 및 확인.
더 긴 버전도 중요합니다. 특히 많은 플러그인이나 큰 Capacitor 워크스페이스를 유지하는 경우입니다.
- 이 기사에서는 다음을 다룹니다:
- What Capacitor is and how plugin builds work
- __CAPGO_KEEP_0__는 무엇이며 플러그인 빌드가 어떻게 작동하는지 Capgo __CAPGO_KEEP_0__
- 릴리즈 신뢰성에 중요하도록 하는 이유
- AGP 9에서 오래된 플러그인 템플릿을 깨는 정확한 변경
한 리포지토리나 여러 리포지토리에서 안전한 마이그레이션 전략
이 문맥에서 Android는 무엇인지 is both an operating system and a build ecosystem. When you ship a Capacitor app or plugin on Android, your project goes through:
- Gradle __CAPGO_KEEP_0__
- Android Gradle 플러그인 (AGP) __CAPGO_KEEP_0__
- Android SDK 빌드 도구 체인으로, 패키징, 축소, 린팅, 및 생성
.aar,.apk또는.aab출력.
AGP 버전이 변경될 때, 일부 기본값과 내부 파일도 변경될 수 있습니다. AGP 8에서 작동하던 플러그인 구성이 AGP 9에서 실패할 수 있습니다. 만약 AGP 9에서 제거된 또는 deprecated baseline에 대한 참조를 포함하고 있다면.
Capacitor는 무엇입니까?
Capacitor code는 iOS/Android 앱을 빌드할 수 있는 웹 code (TypeScript, JavaScript, HTML, CSS) 런타임입니다. native API를 호출하는 동안도.
Capacitor 앱은 일반적으로 다음을 포함합니다:
- 웹层 (UI 및 비즈니스 로직)
- 자연스러운 쉘 (
ios/,android/) - 자바스크립트에서 네이티브 기능을 노출하는 플러그인
각 플러그인은 자신의 네이티브 빌드 구성이 있습니다. 안드로이드에서 이것은 각 플러그인이 포함하는 android/build.gradle AGP가 올바르게 파싱하고 컴파일해야 하는
파일입니다. 플러그인 Gradle 설정이 outdated라면 앱 빌드 전체가 실패할 수 있습니다. 심지어 웹 code이 올바른 경우에도.
Capgo는 무엇입니까?
Capgo Capacitor 배포 및 운영을 위한 도구를 제공합니다:
- 웹 번들 변경에 대한 실시간 업데이트
- 플러그인 생태계 및 네이티브 기능 패키지
- CI/CD 친화적인 업데이트 워크플로우를 제공하여 Capacitor 팀에게
실시간 업데이트와 함께도 네이티브 빌드의 안정성은 협상할 수 없는 것입니다. 여전히 다음을 위해 정결한 안드로이드 빌드를 필요로 합니다:
- 앱 스토어 / 플레이 스토어 출시
- 네이티브 플러그인 업그레이드
- 플랫폼 SDK 마이그레이션
- 팀 온보딩 및 CI 신뢰성
그것은 왜 AGP 9 호환성 수정이 중요하다는 것을 의미합니다: 그것은 플러그인 층이 신뢰할 수 있는 것이 되도록 해서 배달 pipe라인이 예측 가능하도록 합니다.
AGP 9이 이전 플러그인 설정을 깨는 이유
많은 플러그인 템플릿은 역사적으로 사용했습니다:
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
AGP 9 설정에서 이 레거시 베이스 라인 참조는 실패할 수 있습니다. 왜냐하면 이전 파일이 더 이상 예상하는 위치에 보장되지 않기 때문입니다.
일반적인 증상은 Gradle 오류가 빌드 assemble, lint, 또는 build 단계에서 발생하며, 종종 누락된 ProGuard 베이스 라인 리소스 또는 유효하지 않은 기본 파일 참조를指向합니다.
빠른 배경: ProGuard, R8, 및 기본 파일
- R8 code Android 빌드에서 최신 shrinker/optimizer입니다.
proguard-rules.pro프로젝트/플러그인에서 사용하는 custom keep 규칙이 있는지 확인하세요.getDefaultProguardFile(...)Android에서 제공하는 기본 파일을 삽입합니다.
참조할 때:
proguard-android.txt-> 이전 버전, 최소한의 기본 파일proguard-android-optimize.txt-> 현재 설정에서 권장되는 최적화된 기본 파일 (추천)
AGP 9 호환성을 위해 proguard-android-optimize.txt 실질적인 해결책입니다.
한 줄로 해결하는 방법
플러그인 및 앱 모듈 Gradle 파일을 업데이트하세요:
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
최소한, 다음을 확인하세요:
android/build.gradle각 플러그인example-app/android/app/build.gradle플러그인 저장소- 새로운 플러그인 Gradle 구성 파일을 생성하는 모든 생성자/템플릿 파일
한 플러그인의 마이그레이션 가이드
1. 이전 참조를 찾으세요
rg -n "proguard-android\\.txt" android example-app
2. 대체하세요
perl -pi -e "s/proguard-android\\.txt/proguard-android-optimize.txt/g" \
android/build.gradle example-app/android/app/build.gradle
3. Bun와 확인하세요
bun run verify:android
플러그인이 전체 검증 스크립트를 포함한다면 실행하세요:
bun run verify
모든 플러그인 저장소에 Batch 업데이트
하나의 워크스페이스에서 많은 플러그인 저장소를 관리한다면 자동화하세요:
rg -l "proguard-android\\.txt" capacitor-* \
--glob '!**/node_modules/**' \
--glob '!**/.gradle/**' \
--glob '!**/build/**' \
| xargs perl -pi -e "s/proguard-android\\.txt/proguard-android-optimize.txt/g"
그런 다음, 트래킹된 플러그인 소스에서 이전 파일을 사용하지 않는지 확인하세요:
for d in capacitor-*; do
[ -d "$d/.git" ] || continue
git -C "$d" grep -n "proguard-android\\.txt" -- || true
done
이미지 매칭이 없으면 추적된 플러그인 파일에서 이전 기준 참조가 사라집니다.
Capgo 배포 상태
Capgo Capacitor 플러그인 저장소 및 템플릿을 모든 공식 Capgo에서 이 마이그레이션을 완료했습니다.
- 플러그인 안드로이드 모듈은 이제
proguard-android-optimize.txt - 플러그인 예제 안드로이드 앱도 업데이트되었습니다.
- 플러그인 스캐폴딩 템플릿이 업데이트되어 기본적으로 새 플러그인은 AGP 9-safe입니다.
이것은 CI 전에 AGP 9 업그레이드 실패의 일반적인 클래스를 방지합니다.
이것이 오늘날 빌드가 통과하더라도 중요하다고 하는 이유
즉시 실패를 보지 못하는 경우가 있습니다:
- CI 캐시가 이슈를 가리기 때문입니다.
- 프로젝트에 혼합된 AGP 버전이 있습니다.
- 로컬 개발에서만 일부 모듈만 다시 빌드됩니다.
But finally, clean builds, new environments, or upgraded runners expose it. Doing the migration now removes hidden instability.
__CAPGO_KEEP_0__
Builds가 여전히 실패하는 경우 해결하는 방법
-
확인해야 할 점:
-
모든 모듈이 패치되었습니다. 플러그인 모듈, 앱 모듈, 샘플, 템플릿 자산을 확인하세요.
-
공유 스크립트에서 두 번째 참조가 없습니다. 전체 저장소 (포함하여 커스텀 Gradle 스크립트)를 검색하세요.
./gradlew clean캐시는 깨끗합니다. Run -
및 다시 빌드하세요.
-
AGP / Gradle / JDK 버전이 일치합니다. Android 문서에서 지원하는 AGP 버전과 일치하는 combination을 사용하세요.
-
CI가 로컬과 동일한 버전을 사용합니다. JDK 및 Gradle wrapper 버전을 CI에서 고정하여 환경 드리프트를 피하세요.
node_modules__CAPGO_KEEP_0__만 패치하지 마세요. 트래킹된 플러그인 소스, 전시 의존성 디렉토리를 고치세요.
SEO FAQ: AGP 9 Capacitor 플러그인 빌드 오류
어떻게 고칠까요? proguard-android.txt AGP 9에서 찾을 수 없습니다.
대체:
getDefaultProguardFile('proguard-android.txt')
그리고:
getDefaultProguardFile('proguard-android-optimize.txt')
그런 다음 clean rebuild를 실행하세요.
Capacitor 플러그인 업그레이드 후 Android Gradle Plugin 9으로 업그레이드 후 Capacitor 플러그인 빌드가 실패하는 이유는 무엇입니까?
대부분의 실패는 플러그인 파일에 남아 있는 레거시 Gradle 설정에서 오는 것입니다. android/build.gradle AGP 9 프로젝트는 여전히 참조하는 proguard-android.txtAGP 9으로 업그레이드하는 가장 빠른 방법은 여러 __CAPGO_KEEP_0__ 플러그인에 대해 무엇입니까? proguard-android-optimize.txt.
What is the fastest AGP 9 migration path for many Capacitor plugins?
그리고 실행하세요. git grep AGP 9 마이그레이션의 가장 빠른 경로를 사용하여 많은 __CAPGO_KEEP_0__ 플러그인을 사용하는 경우 bun run verify:android 대표 플러그인.
이것은 Capacitor 문제만인가?
아니요. Android 모듈(앱 또는 라이브러리)에서 사용 중인 deprecated ProGuard baseline 참조가 AGP 9 빌드 오류를 유발할 수 있습니다. 특히 플러그인 생태계에서 많은 저장소에서 오래된 템플릿을 공유하기 때문에尤其 그렇습니다.
이번 마이그레이션에 관련된 키워드는 무엇인가?
내부 실행 책자나 지원 페이지에 문서화하는 경우, 다음과 같은 용어를 포함하세요:
- AGP 9 빌드 오류
- Android Gradle Plugin 9 ProGuard 파일 누락
- Capacitor 플러그인 Android 빌드 실패
proguard-android.txt대체proguard-android-optimize.txt마이그레이션
관련 링크
- Android Developers: 앱 빌드 개요
- Android Gradle 플러그인: 릴리즈 노트
- Android code 축소: R8 및 규칙
- Gradle 문서: 빌드 도구 기초
- Capacitor 문서: 공식 문서
- Capgo 문서: 자동 업데이트 문서
최종 takeaway
이 AGP 9 문제는 간단하지만 다중 플러그인 워크스페이스에서 쉽게 놓칠 수 있습니다. __CAPGO_KEEP_0__을 모든 관련된 곳에 대체하면 안드로이드 빌드는 다시 예측 가능해집니다. proguard-android.txt 와 proguard-android-optimize.txt 모든 관련된 곳에
만약 Capgo 플러그인을 사용한다면, 공식 저장소에서 이미 이 마이그레이션을 적용했기 때문에 더 많은 놀람 없이 업그레이드할 수 있습니다.