728x90

외부 라이브러리 설치 시, 해당 라이브러리가 Pods의 소스코드를 rsync를 통해 프로젝트를 복제할 때 rsync 명령어 자체에서 실패하여 생기는 문제이다.

에러 문구는 아래와 같다.

sent 350748 bytes  received 302 bytes  702100.00 bytes/sec
total size is 412121  speedup is 1.17
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/a0876c02-1788-11ed-b9c4-96898e02b808/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
Command PhaseScriptExecution failed with a nonzero exit code

warning: Run script build phase ‘Bundle React Native code and images’ will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking “Based on dependency analysis” in the script phase. (in target ‘xxxApp’ from project ‘xxxApp’)
warning: Run script build phase ‘Start Packager’ will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking “Based on dependency analysis” in the script phase. (in target ‘gdacApp’ from project ‘xxxApp’)
warning: Run script build phase ‘Upload Debug Symbols to Sentry’ will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking “Based on dependency analysis” in the script phase. (in target ‘xxxApp’ from project ‘xxxApp’)
warning: Run script build phase ‘[CP-User] [RNFB] Core Configuration’ will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking “Based on dependency analysis” in the script phase. (in target ‘xxxApp’ from project ‘xxxApp’)

** BUILD FAILED **


The following build commands failed:
        PhaseScriptExecution [CP]\ Copy\ XCFrameworks /Users/user/Library/Developer/Xcode/DerivedData/xxxApp-gpemlwpfdvnwvoxxbheouxnekmjdws/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/FirebaseAnalytics.build/Script-46EB2E00019AE0.sh (in target ‘FirebaseAnalytics’ from project ‘Pods’)
(1 failure)

 

해결 방법은 다음과 같다.

 

1. 어느 라이브러리에서 에러가 나는지 파악한다. (아래를 예시로 한다면, FirebaseAnalytics 에러 발생함을 알 수 있다.)

 

2. "ios > Pods > Target Support Files > 발생라이브러리폴더 > .sh파일" 로 진입한다.

 

3. 해당 코드를 찾아 삭제하고 새로운 코드를 추가해준다.

 

변경 전

echo “rsync --delete -av “${RSYNC_PROTECT_TMP_FILES[@]}” --links --filter \“- CVS/\” --filter \“- .svn/\” --filter \“- .git/\” --filter \“- .hg/\” \“${source}*\” \“${destination}\“”
rsync --delete -av “${RSYNC_PROTECT_TMP_FILES[@]}” --links --filter “- CVS/” --filter “- .svn/” --filter “- .git/” --filter “- .hg/” “${source}“/* “${destination}”

변경 후

echo cp -r ${source} ${destination}
cp -r ${source} ${destination}

 

4. 안전하게 캐쉬를 날려주고 재빌드한다.

 

해결 원리는 rsync의 자체 명령어가 호환이 안되어 발생하는 문제로 보였고, 결국엔 rsync의 행위 자체가 파일을 복사하기 위함이고 추가로 필요 없는 파일들을 filter 하는 것이다.

똑같이 파일 복사를 하는 역할을 하는 'cp' 명령어를 rsync 대신 대체하였고, filter 기능이 없어도 빌드 기능에 문제가 없으므로 해당 명령은 삭제를 하고 빌드를 하여 해결하였다.

728x90
복사했습니다!