빌드속도 관련 줍줍
프로그래머가 합법적으로 농땡이 부리는 방법 == "소스코드 컴파일 중이야"
빌드 속도를 높이는 10가지 방법
from https://engineering.linecorp.com/ko/blog/how-to-make-android-app-build-faster/
Android 앱 빌드 속도를 높이는 10가지 방법
2022-LINE-engineering-site
engineering.linecorp.com
최신 Android Gradle plugin 사용하기
- 최신 버전에는 많은 버그와 성능 관련 문제가 이미 해결되어 있어. 업데이트를 잘하자
레거시 multidex 사용 자제
- 앱이 메소드 수 제한(65,536개)을 초과하면 multidex를 사용해야함
- minsdk가 21 이하라면 레거시 multidex를 사용하게 되는데, 레거시 버전쓰면 빌드 속도가 매우 느려짐
- productFlavors에 minsdk버전을 21 이상으로 지정하면 레거시 사용을 피할 수 있어
개발 시 여러 개의 APK 생성 설정 비활성화
- 화면 밀도나 ABI에 따라 여러개의 APK를 빌드하면 시간이 오래 걸림.
- debug 블럭에 splits관련 설정을 비활성화 하면 시간을 줄일 수 있음
개발 빌드에서 패키징 리소스 최소화
- 앱과 라이브러리에 사용할 수 있는 모든 언어와 화면 해상도는 빌드 시스템에 기본적으로 모두 포함되어 있음 -> 빌드 속도 증가
- resConfig 속성을 사용하여 언어와 화면을 한정하여 한 세트로 사용하자
PNG 크런칭 비활성화
- 앱의 크기를 줄이기 위해 AAPT는 기본적으로 PNG를 크런치 함 -> 앱 크기 줄여주는건 좋지만 빌드 시간이 늘어남
- 개발할때는 false로 설정하자
Instant Run 사용
- 보통 안스의 Run버튼을 쓰겠지 -> 근데 이거는 코드 스와핑을 시키면서 앱을 재시작하게 해
- Instant Run을 사용하면 재시작 하지 않고 업데이트를 시켜줘서 시간을 상당히 줄여줌
Crashlytics의 Build ID 업데이트 비활성화
- Firebase Crashlytics 는 각 빌드별로 고유한 Build ID를 생성해
- 개발모드일때는 생성 false 하면 시간을 줄일 수 있음
종속성 동적 버전 사용 자제
- Gradle 버전 명시할때 +을 붙이면 자동으로 최신 버전 업데이트를 해줌 -> 예상치 못한 버전 업데이트로 개발 도중 크래시 발생할 수 있고 -> Gradle이 업데이트 체크하느라 빌드 속도가 느려질 수 있음
- 버전을 동적이 아닌 정적으로 관리하여 속도와 언전성을 획득하자
gradle.properties 설정
- 줍줍...!
R8 사용
- R8은 코드를 축소하기 위해 사용해. proguard보다 더 빠른 속도로 더 작게 줄여주니까 꼭 쓰자
Gradle에서 제공하는것들
Gradle Enterprise
Gradle, Maven과 연결되는 자체 SaaS 제품
Gradle Enterprise | Improve Build Speed, Reliability and Debugging
Gradle Enterprise improves developer productivity by speeding up slow builds, improving build reliability, and accelerating build debugging.
gradle.com
- 빌드 로그 수집 및 분석해주는 Build Scan
Getting started with Build Scan™ for Gradle and Apache Maven™ | Gradle Inc.
Create a Build Scan™ with the quickstart sample project, or follow the steps below with your project. Run your build with the --scan option. gradle build --scan 1. Apply the plugin Add this code snippet to the top of the build.gradle file of the root pro
scans.gradle.com
- 빌드 캐시를 여러 기기 사이에서 공유해주는 Remote Build Cache
- 여러 기기에서 유닛 테스트를 분산해주는 Test Distribution 등등 기능이 있데
Gradle 오픈소스들도 있어
Enterprise를 쓰지 않아도 Gradle에서 오픈소스로 제공되는것들이 있어
- 빌드 캐시를 여러 기기 사이에서 공유하는 Gradle Remote Build Cache Server
https://proandroiddev.com/speed-up-your-build-with-gradle-remote-build-cache-2ee9bfa4e18
Speed up your Build with Gradle Remote Build Cache
Make builds faster by reusing the outputs of builds where possible instead of building them again
proandroiddev.com
- 빌드 성능을 손쉽게 확인 가능한 Gradle Profiler
https://developer.android.com/studio/build/profile-your-build
빌드 프로파일링 | Android 개발자 | Android Developers
빌드 속도를 최적화할 수 있도록 빌드를 프로파일링하는 방법을 알아보세요.
developer.android.com
- 안드로이드 캐시 빌드 오동작을 막아주는 Android Cache Fix Plugin
https://github.com/gradle/android-cache-fix-gradle-plugin
GitHub - gradle/android-cache-fix-gradle-plugin: Gradle plugin that fixes Android build caching problems.
Gradle plugin that fixes Android build caching problems. - GitHub - gradle/android-cache-fix-gradle-plugin: Gradle plugin that fixes Android build caching problems.
github.com
- 유닛 테스트에서 일시적으로 실패하는 것들에 대해 자동으로 재실행해주는 Gradle Test Retry Plugin
https://github.com/gradle/test-retry-gradle-plugin
GitHub - gradle/test-retry-gradle-plugin: Gradle plugin to retry tests that have failed to mitigate test flakiness.
Gradle plugin to retry tests that have failed to mitigate test flakiness. - GitHub - gradle/test-retry-gradle-plugin: Gradle plugin to retry tests that have failed to mitigate test flakiness.
github.com
- Gradle 깃헙 가면 여러 오픈소스들 확인 가능!
https://github.com/gradle/gradle
GitHub - gradle/gradle: Adaptable, fast automation for all
Adaptable, fast automation for all. Contribute to gradle/gradle development by creating an account on GitHub.
github.com