crossplatformkorea / react-native-naver-login

리엑트 네이티브 네이버 로그인 라이브러리
MIT License
164 stars 91 forks source link

4.0.0 빌드 오류 #189

Closed swkang0513 closed 6 months ago

swkang0513 commented 7 months ago

Description

RN 0.72.12에서 빌드 시 다음과 같은 오류가 발생합니다.

e: /Users/{username}/{project_folder}/node_modules/@react-native-seoul/naver-login/android/src/main/java/com/dooboolab/naverlogin/RNNaverLoginModule.kt: (70, 25): Cannot access class 'kotlinx.coroutines.Job'. Check your module classpath for missing or conflicting dependencies

FAILURE: Build failed with an exception.

함께 설치된 라이브러리들은 다음과 같습니다. "dependencies": { "@gorhom/bottom-sheet": "4.6.1", "@hackler/react-native-sdk": "3.11.0", "@invertase/react-native-apple-authentication": "2.3.0", "@miblanchard/react-native-slider": "2.6.0", "@notifee/react-native": "7.8.2", "@react-native-async-storage/async-storage": "1.23.1", "@react-native-clipboard/clipboard": "1.13.2", "@react-native-community/netinfo": "11.3.1", "@react-native-community/push-notification-ios": "1.11.0", "@react-native-firebase/analytics": "19.2.2", "@react-native-firebase/app": "19.2.2", "@react-native-firebase/crashlytics": "19.2.2", "@react-native-firebase/database": "19.2.2", "@react-native-firebase/messaging": "19.2.2", "@react-native-google-signin/google-signin": "10.1.1", "@react-native-seoul/kakao-login": "5.3.1", "@react-native-seoul/naver-login": "4.0.0", "@react-navigation/bottom-tabs": "6.4.1", "@react-navigation/core": "6.4.1", "@react-navigation/native": "6.0.14", "@react-navigation/native-stack": "6.9.2", "@react-navigation/stack": "6.3.5", "@sentry/react-native": "5.20.0", "appcenter": "5.0.1", "appcenter-analytics": "5.0.1", "appcenter-crashes": "5.0.1", "axios": "1.3.6", "i18next": "22.4.15", "jwt-decode": "4.0.0", "mobx": "6.12.1", "mobx-react-lite": "3.4.3", "moment": "2.30.1", "react": "18.2.0", "react-i18next": "12.2.2", "react-native": "0.72.12", "react-native-ble-manager": "11.5.0", "react-native-code-push": "7.1.0", "react-native-date-picker": "5.0.1", "react-native-device-info": "10.13.1", "react-native-exit-app": "2.0.0", "react-native-fast-image": "8.6.3", "react-native-fbsdk-next": "12.2.0", "react-native-gesture-handler": "2.16.0", "react-native-image-picker": "7.1.2", "react-native-keyboard-aware-scroll-view": "0.9.5", "react-native-linear-gradient": "2.8.3", "react-native-localize": "2.2.6", "react-native-modal": "13.0.1", "react-native-pager-view": "6.3.0", "react-native-permissions": "4.1.5", "react-native-pie-chart": "3.0.2", "react-native-reanimated": "3.8.1", "react-native-reanimated-carousel": "3.3.0", "react-native-safe-area-context": "4.9.0", "react-native-screens": "3.30.1", "react-native-splash-screen": "3.3.0", "react-native-svg": "15.1.0", "react-native-svg-transformer": "1.3.0", "react-native-tab-view": "3.5.2", "react-native-toast-message": "2.2.0", "react-native-webview": "13.8.5", "react-native-wheely": "0.6.0", "underscore": "1.13.6" }

Steps to reproduce

  1. react-native 0.72.12
  2. android/build.gradle -> kotlinVersion = '1.6.21'
  3. npx react-native run-android

Snack or a link to a repository

none

React Native Naver Login version

4.0.0

React Native version

0.72.12

Platforms

Android

JavaScript runtime

Hermes

Architecture

Paper (Old Architecture)

Build type

Debug mode

Device

Real device

Device model

No response

Acknowledgements

Yes

mym0404 commented 7 months ago

일단 저 위치엔 Coroutine의 Job을 쓰지 않습니다. 이전 코드가 캐시로 남아있는것같습니다.

android 폴더로 가셔서 ./gradlew clean을 하시고 npm의존성도 다시 설치하시고 시도해주세요.

swkang0513 commented 7 months ago

node_module 폴더를 지우고 다시 설치하고 ./gradlew clean을 해봐도 동일한 오류가 나오는데 또 어디를 봐야 할까요? react-native 버전 업그레이드가 문제인가 싶어 다시 0.68.5 버전으로 되돌아온 상태입니다.

LESANF commented 7 months ago

@mym0404 저도 똑같은 에러가 발생합니다. Android Studio를 사용하여 gradle 싱크, 캐시 삭제, npm 의존성 재설치 등 모든 클린 설치를 해봤지만 위와같은 kotlinx.coroutines.Job 빌드 실패 에러를 뱉습니다.

mym0404 commented 7 months ago

rm -rf android/app/build후 시도해보시길 권합니다.

그리고 이 이슈의 본문에서 문제를 해결하기 위해 전달된 정보가 없어서 도와드릴수없습니다. 전체 빌드 로그 메세지를 첨부하시거나 Reproducing sample을 제시해주세요.

mym0404 commented 7 months ago

이 프로젝트의 릴리즈 빌드 설정을 다시 확인해보고 댓글님기겠습니다.

mym0404 commented 7 months ago

npm 에 올라간 4.0.0 코드 를 확인했을 때 이 프로젝트의 빌드 설정은 문제가 없는것같고 RNNaverLoginModule.kt 에 Coroutine 관련 코드는 남아있지 않는것 같습니다.

문제가 지속되면 문제가 발생하는 샘플 프로젝트를 깃허브에 올려서 공유해주시면 감사하겠습니다.

LESANF commented 6 months ago

@mym0404 친절한 답변 감사드립니다. 개인 프로젝트가 아닌 회사코드라 샘플링을 같이 업로드 할 수 없어서 문제해결에 도움을 드리지못했습니다. 말씀하신 빌드폴더삭제도 해본상태였습니다.

조금더 문제해결을 해보고 결과를 남기도록 하겠습니다.

해당 쓰레드를 남긴분의 RN버전이 0.72.12이고 제 경우는 0.72.6이었습니다.

현재는 3.0.0으로 돌아와 Privacy Manifest 를 위한 SDK만 바꿔서 사용중입니다.

miridih-jhkim05 commented 6 months ago

@mym0404 안녕하세요! 저도 다음과 같이 에러가 발생하는데, 더 확인이 필요하신 부분이 있을까요?

image
mym0404 commented 6 months ago

@miridih-jhkim05 감사합니다.

이 이슈는 이 프로젝트의 코드와 관계없이 Naver Android SDK의 설정과 관련된 문제로 보입니다. 실제로 Android SDK 이슈 에도 리포트 된 것으로 보이네요.

특정 프로젝트엔 Corutine이 dependencies로 설정되어있지 않고 어떤 프로젝트엔 설정되어있다보니 설정되어있지 않은 프로젝트들에서 문제가 생기는 것 같습니다. 공식 문서 에도 딱히 그런 내용이 적혀있지 않아서 프로젝트 설정 과정에서 누락된것같습니다.

gradle dependencies를 확인해보니 react-native-android 자체에서 coroutine을 참조하고 있는데 RN 버전이 0.72기 때문에 생긴 문제였을 수도 있습니다.

mym0404 commented 6 months ago

4.0.1에 이 프로젝트의 의존성에 coroutine.core를 추가했습니다. 이 버전으로 확인해보시면 될 것 같습니다.

mym0404 commented 6 months ago

0.72.12 에서 4.0.1 버전으로 빌드 문제 없음 확인했습니다.

결론적으로 이 원인은 Naver Android Native SDK에서 자신은 api가 아닌 implementation으로 Corotuine을 참조하는데(SDK에 의존하는 패키지는 Coroutine을 사용할 수 없게끔) 그걸 Naver SDK가 반환값으로 노출해버리면서 Coroutine에 대한 의존성이 없는 프로젝트들에서 이 함수를 빌드하는데 문제가 생긴 것이였습니다.