본문 바로가기
카테고리 없음

iOS 네이버맵 SDK i386, x86_64 제거

by 정석 지향 2021. 6. 23.
반응형

iOS 네이버맵 SDK 추가 후 앱스토어에 배포할 때 i386, x86_64 아키텍쳐를 지원하는 문제가 있었습니다.

i386, x86_64는 시뮬레이터 아키텍쳐로 아카이브 시 불필요한 아키텍쳐입니다.

 

NMapsMap.framework 파일로 타고 들어가 아래 명령어로 지워줄 수 있지만

lipo -remove x86_64 NMapsMap -o NMapsMap

lipo -remove i386 NMapsMap -o NMapsMap 

시뮬레이터에서는 실행할 수 없게되는 문제가 발생합니다.

 

 

아래 스크립트를 통하여 아카이브 시 i386, x86_64 아키텍쳐를 지원하지 않도록 제거 후 문제 해결하였습니다.

echo "Target architectures: $ARCHS"

APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"

find "$APP_PATH" -name 'NMapsMap.framework' -type d | while read -r FRAMEWORK
do
FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"
echo $(lipo -info "$FRAMEWORK_EXECUTABLE_PATH")

FRAMEWORK_TMP_PATH="$FRAMEWORK_EXECUTABLE_PATH-tmp"

# remove simulator's archs if location is not simulator's directory
case "${TARGET_BUILD_DIR}" in
*"iphonesimulator")
    echo "No need to remove archs"
    ;;
*)
    if $(lipo "$FRAMEWORK_EXECUTABLE_PATH" -verify_arch "i386") ; then
    lipo -output "$FRAMEWORK_TMP_PATH" -remove "i386" "$FRAMEWORK_EXECUTABLE_PATH"
    echo "i386 architecture removed"
    rm "$FRAMEWORK_EXECUTABLE_PATH"
    mv "$FRAMEWORK_TMP_PATH" "$FRAMEWORK_EXECUTABLE_PATH"
    fi
    if $(lipo "$FRAMEWORK_EXECUTABLE_PATH" -verify_arch "x86_64") ; then
    lipo -output "$FRAMEWORK_TMP_PATH" -remove "x86_64" "$FRAMEWORK_EXECUTABLE_PATH"
    echo "x86_64 architecture removed"
    rm "$FRAMEWORK_EXECUTABLE_PATH"
    mv "$FRAMEWORK_TMP_PATH" "$FRAMEWORK_EXECUTABLE_PATH"
    fi
    ;;
esac

echo "Completed for executable $FRAMEWORK_EXECUTABLE_PATH"
echo $(lipo -info "$FRAMEWORK_EXECUTABLE_PATH")

done

 

Build Phase -> Run Script -> For install Builds only

"For install Builds only" 체크 시 Archive를 만들때에만 스크립트 내용이 실행됩니다.

반응형