Android App Bundle 빌드 후 실행 시 ClassNotFoundException 에러가 뜹니다.

pytorch mobile을 사용한 앱을 출시하기 위해 앱 번들로 빌드하였습니다.
실제 스토어에 업로드된 앱을 다운 받아볼 경우, 모델을 불러오는 동작이 일어나면 앱이 강제 종료됩니다.

  • APK로 빌드 후 설치 작동 시에는 문제가 없어, AAB 빌드 과정에서 생긴 문제가 아닐 까 추측 중입니다.
  • 아니면 org.pytorch:pytorch_android:1.9.0 라이브러리는 AAB 빌드가 지원되지 않는 라이브러리일까요…?
  • 혹 비슷한 상황을 겪거나 해결 방법 아시는 분의 고견을 듣고 싶습니다.

감사합니다. :slight_smile:


모델은 assets 폴더에 파이토치 스크립트로 만들어 .pt파일로 사용하고 있습니다.
사용하고 있는 파이토치 라이브러리는

implementation 'org.pytorch:pytorch_android:1.9.0'

이며,

정확한 에러 문구는 아래와 같습니다.

Caused by: java.lang.ClassNotFoundException: Didn't find class "org.pytorch.PyTorchAndroid" 
on path:
DexPathList[[zip file "/data/app/com.ssafy.notis-Qk9hW8Hy2kdUk-XucPX8Fg==/base.apk", 
zip file "/data/app/com.ssafy.notis-Qk9hW8Hy2kdUk-XucPX8Fg==/split_config.arm64_v8a.apk", 
zip file "/data/app/com.ssafy.notis-Qk9hW8Hy2kdUk-XucPX8Fg==/split_config.ko.apk", 
zip file "/data/app/com.ssafy.notis-Qk9hW8Hy2kdUk-XucPX8Fg==/split_config.xxhdpi.apk"],
nativeLibraryDirectories=[/data/app/com.ssafy.notis-Qk9hW8Hy2kdUk-XucPX8Fg==/lib/arm64, 
/data/app/com.ssafy.notis-Qk9hW8Hy2kdUk-XucPX8Fg==/base.apk!/lib/arm64-v8a, 
/data/app/com.ssafy.notis-Qk9hW8Hy2kdUk-XucPX8Fg==/split_config.arm64_v8a.apk!/lib/arm64-v8a, 
/data/app/com.ssafy.notis-Qk9hW8Hy2kdUk-XucPX8Fg==/split_config.ko.apk!/lib/arm64-v8a, 
/data/app/com.ssafy.notis-Qk9hW8Hy2kdUk-XucPX8Fg==/split_config.xxhdpi.apk!/lib/arm64-v8a, 
/system/lib64, /system/vendor/lib64]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
...

해결했습니다!! PyTorch 문제는 아니었습니다.

PyTorch 라이브러리가 빌드하는 과정에서 네이티브 코드로 변환되었고,
네이티브 코드가 난독화되면서 읽지 못해 문제가 생겼던 거였습니다. :smiley:

감사합니다.

좋아요 2