티스토리 뷰

앱스토어에 익스텐션을 포함하여서 개발을 할 경우에 버전을 Main Project와 동일하게 맞추어야 합니다.

물론 버전이 다르게 올라가도 큰 문제는 없습니다.

단지 올라간 앱의 버전과 지금의 버전이 달라서 약간의 경고성 메일이 옵니다.

ITMS-90473: CFBundleVersion Mismatch - The CFBundleVersion value '1' of extension 'TestApp.app/PlugIns/NotificationServiceExtension.appex' does not match the CFBundleVersion value '18' of its containing iOS application 'TestApp.app'.

위와 같은 내용의 메일이 오죠...

 

해결 방법을 알아 봅시다.

 

1. 해달라는대로 그냥 넣어줍니다.

  • Main app의 Version과 달라서 오는 메일이므로 넣어줘버립니다.
  • 조금 다소 귀찮을수 있습니다. 

2. Run Script를 이용합니다.

  • Project>TARGETS>Extension을 선택합니다.
  • Build Phases 탭을 누른후 상단의 + 모양을 눌러주고 New Run Script Phase를 눌러줍니다.

  • 다음을 넣어줍니다.
echo '# Run Script Start'

MAIN_PLIST="${SRCROOT}/TestApp/Info.plist"
appVersion=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "$MAIN_PLIST")
appBuild=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$MAIN_PLIST")

echo '> App Version : ' ${appVersion}
echo '> App Build : ' ${appBuild}

EXTENSION_PLIST="${SRCROOT}/NotificationServiceExtension/Info.plist"
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $appVersion" "$EXTENSION_PLIST"
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $appBuild" "$EXTENSION_PLIST"

echo '# Run Script End'

설명을 하자면 echo는 그냥 화면에 보여주기 위한 부분입니다.

 

MAIN_PLIST : 자신의 메인앱 plist파일의 위치입니다. Info.plist 파일이 아닌 다른 이름으로 사용하면 수정하세요

EXTENSION_PLIST : 저는 NotificationServiceExtension을 만들었습니다. 이것도 이름이 다르면 변경하세요

 

PlistBuddy를 이용하여서 메인의 버전을 복사해서 붙여넣기 하는 것입니다.

 

* 주의

 

저는 왜 그런지 이렇게 버전을 하더라도 Archive할 경우에는 버전이 변경되었음에도 불구하고 에러가 계속 나는것을 확인하였습니다.

그래서 버전을 변경하였을 경우에는 Run을 하여 주거나 Build를 한번 해주시기를 추천드립니다.

Build 할 경우에 한번씩 호출되는 부분이라 먼저 변경을 하여야 하는것 같네요.

이 부분은 조금 더 보고 되는 방법을 찾아보겠습니다. 

 

* 디버그 보는법?

 

아까 위쪽에 echo하여서 찍어준 부분은 콘솔에는 나오지 않습니다.

이 부분은 Build log에 나오는것이라 여기를 누릅니다.

 

파란색 보이시죠?

 

그런 이후에 자신이 했던 부분을 눌러줍니다.

 

즐거운 코딩 되세용.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함