250210 TIL

나고수·2025년 2월 10일
0

2025 TIL

목록 보기
8/11
post-thumbnail

안드로이드 debug.keystore 공통 관리 방법

외부 API를 이용할 때 debug.keystore를 기반으로 hashKey를 생성해야 하는 경우가 있다. 하지만 debug.keystore는 개발 환경마다 달라서, 각 개발자의 PC에서 개별적으로 hashKey를 찾아 등록해야 하는 번거로움이 있었다.

//안드로이드에서 debug.keyStore을 이용한 keyHash 얻는 법 
//스크립트를 보면 'debug.keystore'을 활용하고 있다.
 keytool -list -v -keystore "C:\Users\aa\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

그런데 debug.keystore를 프로젝트에 포함시켜 하나의 파일로 관리할 수도 있다는 사실을 알게 되었다.

왜 이 방법을 생각 못했지?!

자세한 방법은 여기 참고


플랫폼별 난독화 하기

안드로이드 네이티브 난독화 (R8/ProGuard)
1. app/build.gradle 설정:

android {
    buildTypes {
        release {
            minifyEnabled true  // 코드 난독화 활성화
            shrinkResources true  // 사용하지 않는 리소스 제거
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

iOS 네이티브 난독화 (Xcode 설정)
1. Xcode의 Build Settings에서:

  • "Symbols Hidden by Default" = Yes
  • "Strip Debug Symbols During Copy" = Yes
  • "Strip Linked Product" = Yes
  • "Strip Swift Symbols" = Yes

Flutter/Dart 코드 난독화
1. Android APK 빌드:

flutter build apk --obfuscate --split-debug-info=build/app/outputs/symbols
  1. Android App Bundle 빌드:
flutter build appbundle --obfuscate --split-debug-info=build/app/outputs/symbols
  1. iOS 빌드:
flutter build ios --obfuscate --split-debug-info=build/app/outputs/symbols

여기서:

  • --obfuscate: Dart/Flutter 코드 난독화 활성화
  • --split-debug-info: 디버그 심볼 파일 저장 위치 지정

추가 참고사항:

  • 난독화 후에는 크래시 리포트 해석을 위해 디버그 심볼 파일을 잘 보관해야 합니다
  • 릴리즈 빌드에만 난독화를 적용하고, 디버그 빌드에는 적용하지 않는 것이 일반적입니다

flavor 사용 시 firebase crashlytics 설정 후 iOS 빌드 스크립트 수정

crashlytics 설정 후 디버그 심볼이 Flavor에 따라 Crashlytics에 업로드 되도록 빌드스크립트를 수정해주어야한다.

environment="default"
# 기본 환경 변수 설정

echo "Configuration: ${CONFIGURATION}"
# 현재 설정된 CONFIGURATION 값을 출력 (예: Release-prod, Debug-dev 등)

if [[ $CONFIGURATION =~ \-([^-]*)$ ]]; then
    flavor=${BASH_REMATCH[1]}
fi
# CONFIGURATION 값에서 마지막 하이픈(-) 뒤의 문자열을 추출하여 flavor 변수에 저장
# 예: "Release-prod"에서 "prod"를 추출

echo "Flavor: $flavor"
# 추출된 flavor 값을 출력

"$PODS_ROOT/FirebaseCrashlytics/upload-symbols" \
    -gsp "${PROJECT_DIR}/FirebaseConfig/${flavor}/GoogleService-Info.plist" \
    -p ios \
    "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"
# Crashlytics에 디버그 심볼을 업로드하는 명령어
# - $PODS_ROOT/FirebaseCrashlytics/upload-symbols: 심볼 업로드 도구 경로
# - -gsp: GoogleService-Info.plist 파일 경로를 지정
# - -p ios: iOS 플랫폼 지정
# - 마지막 줄은 디버그 심볼 파일의 경로 지정
profile
되고싶다

0개의 댓글