최근에 iOS 앱 중 최소 설치버전 제한 떄문에 약간 삽질했던 내용 아까워서 기록합니다.
결론부터 말씀드리면 해당 앱 기준으론 성공하지 못했습니다...

https://vignette.wikia.nocookie.net/disney/images/2/25/Vader-nooooo.jpg


iOS도 Android 처럼 minSdkVersion을 가지고 있으며 Info.plist에 MinimumOSVersion로 지정해서 사용하게 되어있습니다.

우선 찾아보니 2가지 정도로 MinimumOSVersion 우회를 넘어갈 수 있는 방법들이 있더군요.
(잠깐 찾아보고 테스트 해봤던거라 가능한건데 해결 못한걸수도 있습니다)

우선은 iOS 디바이스 내 SystemVersion 파일을 수정하는 방법입니다. /System/Library/CoreServices 경로에 SystemVersion.plist 파일이 있고 이 파일에는 버전에 대한 정보가 기입되어 있습니다.

iosios:/System/Library/CoreServices root# cat SystemVersion.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>ProductBuildVersion</key>
    <string>14G60</string>
    <key>ProductCopyright</key>
    <string>1983-2016 Apple Inc.</string>
    <key>ProductName</key>
    <string>iPhone OS</string>
    <key>ProductVersion</key>
    <string>10.3.3</string>
</dict>
</plist>

여기서 ProductionVersion의 값을 바꿔주면 된다곤 하는데, 혹시몰라 ProductBuildVersion 도 바꿔주었습니다.
ProductionBuildVersion은 아래 iOS History 문서보면 버전별로 빌드 네임이 있습니다. 그 부분입니다.

(https://en.wikipedia.org/wiki/IOS_version_history)

    <key>ProductBuildVersion</key>
    <string>13F69</string>
    <key>ProductVersion</key>
    <string>9.3.2</string>

그리고.. 2번째는 앱 내부에 Info.plist에서 직접 바꿔주는겁니다. 사실 소스코드가 있다면 Xcode에서 바꿔주면 확실하지만 압축 해제 후 Info.plist에서 버전정보 수정 후 재 서명 후 넣어주면 어느정도 가능하다고 봅니다.
(이런 형태의 방법은 안드로이드에서도 많이 사용하죠)

#> unzip test.ipa
#> cd test/test.app/

app directory까지 진입하면 앱의 정보를 가지고 있는 Info.plist 파일이 있습니다(분석떄도 이 파일 많이 참조하죠..iOS의 Manifest라고 생각하심될듯)
잘 찾다보면 MinimumOSVersion key와 value값이 확인됩니다. 원하는 버전으로 바꿔줍시다

#> vim Info.plist
    <key>MinimumOSVersion</key>
    <string>10.0</string>

그리고 다시 압축해서 ipa 파일로 만들어주면 우선 앱 파일은 다시 만들어진 상태입니다.

#> zip -r hwul.zip ./*
#> mv hwul.zip hwul.ipa

여기서 개별 앱에 대한 무결성 검증차 서명이 필요한데, 개인의 Xcode 인증서나 Cydia Impactor로 서명해서 설치해주시면 됩니다.
Cydia Impactor로 넣어주면 인증서 문제도 해결됩니당 (Cydia Impactor는 사용자의 iTunes 계정으로 서명하기 떄문에 서명 우회를 할 필요가 없음)

보통은 이런 방법들로 재서명하니 참고하시길..
https://www.ketzler.de/2011/01/resign-an-iphone-app-insert-new-bundle-id-and-send-to-xcode-organizer-for-upload/

제 환경이 문제인지 앱이 문제인지 이런 방법들이 잘못된건지 정확하겐 모르겠지만, 비슷한 문제를 해결하는데 있어 조금이라도 도움되셨길 바랍니다 :)

댓글 없음:

댓글 쓰기