목적: Firebase 등에서 사용하는 API 키가 무단으로 사용되지 않도록 플랫폼별로 제한을 건다.
방법:
google-services.json과 GoogleService-Info.plist에 있는 API 키 2개를 각각 설정com.~.~./gradlew signingReport)적용 후 앱 정상 동작 확인 필요. 제한 전파에 최대 5분 소요.
목적: 앱 배포 시 코드 축소/난독화/최적화를 적용하면서, 특정 라이브러리가 깨지지 않도록 예외 규칙을 추가한다.
방법: proguard-rules.pro에 라이브러리별 규칙 추가
-keep class com.kakao.sdk.**.model.* { <fields>; }
# https://github.com/square/okhttp/pull/6792
-dontwarn org.bouncycastle.jsse.**
-dontwarn org.conscrypt.*
-dontwarn org.openjsse.**
# retrofit2 (with r8 full mode)
-if interface * { @retrofit2.http.* <methods>; }
-keep,allowobfuscation interface <1>
-keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation
-if interface * { @retrofit2.http.* public *** *(...); }
-keep,allowoptimization,allowshrinking,allowobfuscation class <3>
-keep,allowobfuscation,allowshrinking class retrofit2.Response
목적: 토큰, 비밀번호 등 민감 정보를 플랫폼 보안 영역에 안전하게 저장한다. AsyncStorage는 평문 저장이므로 절대 사용 금지.
방법:
react-native-keychain 사용