반응형
해당 글에서는 ONNX Runtime을 이용하면서 앱을 배포할 때 주의사항에 대해서 알아봅니다.
1) 문제점
💡 앱을 apk로 구성하는 과정에서 ONNX Runtime을 수행하는 부분에서 Crush 오류가 발생하여 앱 자체가 튕기는 증상이 발생하였음.
💡 [참고] Google Firebase Crashlytics
2) 해결방법
1. app/build.gradle : debuggable 속성 추가
💡 debuggable 속성
- 안드로이드 앱의 빌드 유형 중 하나인 debug 빌드에 대한 설정입니다. 이 속성을 true로 설정하면 디버그 모드에서 앱을 실행할 수 있습니다. 디버그 모드에서는 앱의 디버깅 및 테스트 작업을 수행할 수 있습니다. 이 속성은 개발 단계에서 유용하며, 배포 또는 프로덕션 환경에서는 false로 설정하는 것이 일반적입니다.
💡 해당 부분이 해결책이 되지는 않았지만 누락 되었던 점을 참고하여 추가하였습니다.
buildTypes {
debug {
debuggable true
signingConfig signingConfigs.debug
}
release {
debuggable false
signingConfig signingConfigs.release
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
}
}
2. android/app/proguard-rules.pro
💡 proguard-rules.pro
- 안드로이드 앱의 코드 난독화와 최적화를 위해 사용되는 파일입니다. 이 파일은 ProGuard라는 도구를 사용하여 앱의 코드를 난독화하고, 불필요한 코드를 제거하여 앱의 크기를 줄이는 데 도움을 줍니다.
- 프로가드를 사용하려면, build.gradle 파일에서 minifyEnabled와 proguardFiles 설정을 변경해야 합니다. minifyEnabled를 true로 설정하면, 프로가드가 활성화되며 proguardFiles에 proguard-rules.pro 파일의 경로를 지정해야 합니다. 설정을 변경한 후에는 앱을 다시 빌드해야 변경 사항이 적용됩니다.
💡 app/build.gradle
- 해당 부분은 react-native로 앱을 최초 구성할때 이미 minifyEnabled, proguardFiles 속성이 추가되었을 것입니다. 참고사항으로 적어두었습니다.
buildTypes {
debug {
debuggable true
signingConfig signingConfigs.debug
}
release {
debuggable false
signingConfig signingConfigs.release
minifyEnabled enableProguardInReleaseBuilds // 프로가드 활성화(default)
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" // 프로가드 경로 지정(default)
}
}
💡 proguard-rules.pro
-keep class com.facebook.react.** { *; }
-keep class com.swmansion.** { *; }
-keep class expo.modules.** { *; }
-keep class io.xogus.reactnative.versioncheck.** { *; }
-keep class ai.onnxruntime.** { *; }
패키지 | 클래스 |
keep class com.facebook.react.** { *; } | com.facebook.react 패키지와 하위 패키지의 모든 클래스 |
keep class com.swmansion.** { *; } | com.swmansion 패키지와 하위 패키지의 모든 클래스 |
keep class expo.modules.** { *; } | expo.modules 패키지와 하위 패키지의 모든 클래스. Expo 모듈에 속하는 클래스들이 난독화되지 않도록 보장 |
keep class io.xogus.reactnative.versioncheck.** { *; } | io.xogus.reactnative.versioncheck 패키지와 하위 패키지의 모든 클래스. React Native 앱에서 버전 확인을 위해 사용되는 클래스들이 난독화되지 않도록 보장 |
keep class ai.onnxruntime.** { *; } | ai.onnxruntime 패키지와 하위 패키지의 모든 클래스. ONNX Runtime과 관련된 클래스들이 난독화되지 않도록 보장 |
💡 해당 부분을 추가하고 앱을 정상적으로 apk 파일이나 aab 파일로 구성하고 수행됨을 확인하였습니다.
오늘도 감사합니다. 😀
반응형
'React & React Native > 라이브러리 활용' 카테고리의 다른 글
[RN] React Native Firebase Cloud Message(FCM) 이해 및 환경설정, 간단 테스트: Android (0) | 2024.02.21 |
---|---|
[RN] expo-sensor의 DeviceMotion 이해하고 활용하기 (2) | 2023.12.20 |
[RN] react-native calendars 이해하고 활용하기 (0) | 2023.11.16 |
[RN] ONNX(Open Neural Network Exchange) 이해하기 -3 : ONNX 모델 정리 (0) | 2023.11.08 |
[RN] react-native StatusBar 이해하고 활용하기 (0) | 2023.11.06 |