AndrewDongminYoo / react-native-step-counter

[리액트 네이티브 라이브러리] 사용자의 걸음 수를 계산합니다. Android는 StepCounter (or Accelerometer) 센서 API를, iOS는 CoreMotion CMPedometer 를 사용하여 걸음 수를 측정합니다.
https://andrewdongminyoo.github.io/react-native-step-counter/
MIT License
32 stars 10 forks source link

Undefined symbols for architecture arm64: "_OBJC_CLASS_$_CMPedometer" #4

Closed AndrewDongminYoo closed 1 year ago

AndrewDongminYoo commented 1 year ago

Expected Behavior

Actual Behavior

Undefined symbols for architecture arm64:
  "_OBJC_CLASS_$_CMPedometer", referenced from:
      objc-class-ref in libRNStepCounter.a(RNStepCounter.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Steps to Reproduce the Problem

  1. yarn create react-native-app my-app
  2. yarn add @dongminyu/react-native-step-counter
  3. react-native link @dongminyu/react-native-step-counter
  4. npx pod-install
  5. npx react-native run-ios --configuration Release

Specifications

first, you should check your react-native-step-counter version and write it down.

AndrewDongminYoo commented 1 year ago

이 오류는 CMPedometer 클래스가 참조되었지만 해당 클래스가 프로젝트의 빌드 대상 아키텍처(architecture)에 맞게 빌드되지 않았기 때문에 발생하는 것입니다.

보통 이러한 오류는 해당 클래스의 프레임워크 또는 라이브러리가 프로젝트에 추가되지 않았거나, 프로젝트 설정에서 Build Phases > Link Binary with Libraries 에 추가되어 있지 않을 때 발생합니다.

따라서 이 경우에는 다음과 같은 단계를 수행해야합니다.

프로젝트 설정에서 Build Phases > Link Binary with Libraries 로 이동하여 프로젝트에 CoreMotion 프레임워크를 추가하십시오.

Build Settings > Architectures 에서 "Build Active Architecture Only" 를 "Yes" 로 설정하십시오.

Build Settings > Valid Architectures 에서 모든 대상 아키텍처가 지정되어 있는지 확인하십시오.

프로젝트를 clean 하고 다시 빌드하십시오.

이러한 단계를 수행한 후에도 동일한 오류가 발생하는 경우, 다른 프레임워크나 라이브러리가 충돌하여 해당 클래스를 찾을 수 없을 수 있습니다. 이 경우 프로젝트 설정을 다시 검토하고, 충돌이 발생할 가능성이 있는 다른 프레임워크나 라이브러리를 제거하거나, 더 엄격한 이름 공간(Namespace)을 사용하여 이름 충돌을 방지하십시오.