반응형

내 살다살다 이런 경우는 또 처음 경험하게 된다.
보통 xcode에 device를 연결하면 자동으로 애플쪽 device에 등록을 시키고 빌드 / 앱 설치가 가능하다.
그런데 어제부터 특정 시점부터 아래와 같은 오류를 내뱉으며 앱이 실장비 아이폰에 설치가 되지 않기 시작했다.

There is a problem with the request entity: A device with number '00008110-000000000' already exists on this team

Provisioning profile "iOS Team Provisioning Profile: com.mydomain.www doesn't include the currently selected device "iPhone 15" (identifier 00008110-000000000).

developer.apple.com의 devices list에 가봐도 다른 개발 아이폰들은 전부 STATUS가 정상이지만 특정 시점 이후의 아이폰들은 모두 Processing으로 떠있었다.

상단에 친절하게 파란색 영역으로 24시간부터 72시간 정도 걸리네 어쩌네가 있지만 크게 신경은 쓰지 않았다.
왜냐? 10년 넘게 아이폰 개발을 하면서 보통 이런 경우는 프로비저닝 인증서가 문제이거나 기타 애플스러운 오류였기 때문이었다.
더군다나 이번 iOS17이 출시되면서 xcode를 업그레이드 하고나니 pods까지 말썽을 일으켜 12에서 13으로 버전을 업그레이드해야 했으며 이때 pod update가 제대로 먹지 않아 Ruby까지 버전업을 시키는 등 갖은 고초를 겪은 후였다.
느닷없이 firebase쪽 pods에 DT_TOOLCHAIN_DIR 이따위 오류가 나질 않나...

참고로 cocoapods를 12에서 13으로 upgrade시키는 방법은 https://stackoverflow.com/questions/77133579/dt-toolchain-dir-cannot-be-used-to-evaluate-library-search-paths-use-toolchain 를 참고하기 바란다.
물론 위에 적었듯이 Ruby도 업그레이드 해야 하는데 실제 사용하는 system버전도 바꿔줘야 하고 cocoapods를 13으로 upgrade해줘도 이게 version을 확인해보면 여전히 12가 나타나고.. 사람을 애 먹인다.
하지만 기본 방법은 저 방법으로 진행하는게 맞는듯 싶다.
brew upgrade cocoapods
sudo gem install cocoapods
그리고 구글링으로 자주 검색되어 나오는 해결 방법들 중 단골 방법으로 임시방편을 알려주며 Podfile에서 13.0을 12.0으로 바꿔주라는 방법이 검색될텐데 무시해라.
cocoapods가 이미 13버전이 있으므로 삽질해가며 13버전으로 cocoapods를 올리면 그만이다.

  post_install do |installer|
      installer.pods_project.targets.each do |target|
          target.build_configurations.each do |config|
          config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0'
        end
      end
    end



여하튼 앱을 직원들 폰에 테스트를 위해 설치해야 하는데 devices쪽에 등록이 안되고 빌드도 덩달아 해당 폰에 안되고 계속 남의 폰을 붙잡고 있을수도 없는 노릇이라 눈치가 보였지만 여러번 시도하다 어느순간 갑자기 빌드가 되었다.
애플 개발자 사이트에 접속해보니 아니나 다를까 Processing이던 상태값이 모두 사라졌다.

그리고 발견한 내용 -_-
이런 귀여운 애플 녀석들을 보았나.

https://developer.apple.com/help/account/reference/device-registration-updates/

 

Reference - Account - Apple Developer

Reference Device registration updates You need a registered device to create a development or ad hoc provisioning profile. To register a device using your developer account, you need to have the device name and device ID. Temporary processing and ineligibl

developer.apple.com

Temporary processing and ineligible test device status

Enabling registered test devices may require additional processing for new Apple Developer Program memberships or memberships renewed after expiration for one month or more. Although the device is registered during this time, the device identifier won’t be included in provisioning profiles until processing completes. Existing active memberships are not impacted by this change.

Device registration behavior

Registered test device count (per platform)Timeframe*
1 to 10 Upon registration
11 to 100 Within 24 to 72 hours

* Devices may be moved to an ineligible status for up to 30 days if the Provisioning Device Identifier was previously associated to memberships that were terminated for violating the Apple Developer Program License Agreement.

10대까진 바로 디바이스를 등록해주지만 최대치인 100개까진 등록은 해주지만 최소 하루 이상 기다리게 만든다란 내용이다.
이런 내용은 devices list에 링크를 이동시켜주던가 좀 더 자세히 알려주던가.
하여간 양놈들 일처리 방식은 (그나마 구글보단 양반이긴 하다만)

그동안 아이폰 개발을 하며 개발 디바이스를 아무리 많이 사용해도 3대 이상 사용해본적 없었는데 이번 회사에선 10여대를 설치하니 이런 삽질을 하게 되었다.

10대 이상 디바이스를 등록하려면 11대부터는 하루 기다려라.

사족으로 ruby 업그레이드 하는 방법은 이 블로그 참고하기 바람
https://ios-development.tistory.com/1202

 

rbenv를 이용한 ruby 버전 관리 방법 (with gem, bundler)

rbenv ruby 버전 관리를 할 때 사용하는 패키지 rbenv말고도 RVM으로도 ruby를 사용할 수 있지만, RVM이 기능이 많지만 rbenv가 더욱 가벼운 장점이 존재 MacOS를 설치하면 ruby가 내장되어 있지만, ruby 프로

ios-development.tistory.com

% rbenv -v
zsh: command not found: rbenv

% brew install rbenv ruby-build

현재 설치된 ruby 버전 확인
ruby -v

설치하고싶은 ruby 버전 목록 확인
rbenv install -l

원하는 버전 설치
rbenv install 3.0.5

설치한 3.0.5로 글로벌, 로컬 설정
rbenv global 3.0.5
rbenv local 3.0.5

대충 이런식이라는데 버전이야 계속 올라가니 그에 맞게 설치하면 됨.

반응형
Posted by Hippalus
,

반응형

먼저 아이폰 설정 부터 손봐줘야 한다.
설정 앱 > Safari > 고급(맨 아래에 있음) > '웹 속성' OFF를 ON으로 바꿔준다.

다음은 맥에서 Safari앱을 실행한다.
Safari를 못 찾는다면 Finder에서 응용프로그램으로 가보면 Safari가 있다.
Safari 실행 후 설정으로 이동

팝업 윈도우가 뜨면 맨 우측 상단의 고급을 눌러보자
그럼 하단에 메뉴 막대에서 개발자용 메뉴 보기 라는게 체크되어 있는지 확인하고 언체크라면 체크로 바꿔주자 

그럼 Safari의 메뉴들 중 중간 쯤 책갈피와 윈도우 사이에 개발자용이란게 뜨는걸 확인할 수 있을 것이다.

그럼 이제 개발자용을 클릭해보자.

아이폰과 맥이 케이블로 연결되어 있다면 저렇게 연결된 아이폰이 뜰것이고 >를 눌러보면 검사할 수 있는 응용 프로그램 없음 이라고 되어 있을 것이다.

Xcode에서 디버깅 할 wkWebview가 탑재된 앱을 실행하고 다시 Safari를 봐보자
그럼 아깐 검사할 수 있는 응용 프로그램 없음 이라고 되어 있던 곳에 우리의 앱이 보여질 것이다.
거기에 추가로 호출하고 있는 웹페이지까지 보여진다.
만약 테스트 하고 있는 아이폰의 OS가 최신버전인 16.4 버전 이후라면 아래 코드를 webview를 생성하는 곳에 살포시 넣어준다.
        if #available(iOS 16.4, *) {
            webView.isInspectable = true
        } else {
            // Fallback on earlier versions
        }
난 didload에서 wkWebview를 addsub해주고 있기 때문에 didload에 넣어줬다.

앱에서 웹뷰의 링크들을 요리조리 눌러보다 보면 오류가 있는 페이지에선 이렇게 오류들이 뜰 것이다.
마치 크롬의 개발자 도구처럼 말이다.

여러가지 웹 사이트내 오류가 확인되고 있는 모습니다.

난 이번에 골탕 먹은게 뭐였냐면 ATS 때문이었다.
개발서버엔 SSL적용이 잘 되지 않았다.
하지만 실서버엔 SSL이 적용 되었다.
따라서 plist.info에 ATS 예외 도메인 처리를 해두었다.
그런데 사이트는 뜨지만 이상하게 자바스크립트단에서 자꾸 막히는 증상이 발현되었기 때문에 도무지 이해가 안 갔는데
기존 소스들이 jQuery js파일을 다운받지 않고 cdn을 사용하여 실시간으로 받아오고 있었고 이 cdn호출시 http로 불러와졌기 때문에 이런 오류가 나는 구조상의 문제였다.

참고로 화면 캡쳐는 이미 ATS 처리를 한 직후의 캡쳐라 jquery오류는 나타나지 않는 모습니다.


오류가 확인되었으니 마찬가지로 예외 도메인으로 등록해주면 되니 아래처럼 plist.info를 설정해주니 
App Transport Security Settings
Allow Arbitrary Loads NO
Exception Domains
   code.jquery.com
      NSTemporaryExceptionMinimumTLSVersion TLSv1.2
      NSIncludesSubdomains YES
      NSExceptionAllowsInsecureHTTPLoads YES
      NSExceptionRequiresForwardSecrecy NO

참 고생했다.

반응형
Posted by Hippalus
,

반응형

앱스토어를 통해 Xcode를 업데이트 하다보면 종종 업데이트 멈춤 현상을 경험하게 된다.
수년째 반복되는 일임에도 애플은 나몰라라
이것 때문에 애플개발자 지원센터에 유선 문의도 했었지만 그 이후에도 또 이렇게 먹통이 돼버렸다.
아래 대기상태로 몇시간을 지켜봐도 동일하다.

무한 로딩 증상이 지속될 경우 아래 내용대로 시도하고 리부팅도 하다보면 언젠간 업데이트 버튼을 마주할 수 있게 된다.
업데이트 버튼을 누르면 다시 처음부터 8기가가 넘는 Xcode 업데이트 파일을 다운받게 되고 운이 좋다면 업데이트를 성공시킬 수 있다.
그나마 파랑 로딩 인디케이터라면 업데이트에 희망적이라 본다.
회색 로딩 인디케이터라면 절망적이지 싶다.
일단 아래 내용대로 터미널을 통해 캐시 파일들을 삭제하고 운좋게 다시 업데이트를 재시작 하였지만 작성중인 현 상태에서도 동일하게 설치 중 대기 상태이긴 하다.
회색 인디케이터가 아니라 좀 기다리면 되지 싶긴한데..성공하면 댓글로 성공 여부를 남겨두겠다.



앱스토어 캐시 삭제
1. 앱스토어 임시 파일 삭제
터미널(terminal) 실행
터미널 상태에서 아래 명령어 실행 후 Finder가 뜨면 해당 폴더 모조리 삭제
open $TMPDIR../C/com.apple.appstore/

2. 앱스토어 캐시 파일 삭제
터미널 상태에서 아래 명령어 실행 후 Finder가 뜨면 해당 폴더 모조리 삭제
open ~/Library/Caches/com.apple.appstore

3. 기타 앱스토어에이전트 중지
터미널(terminal) 실행
터미널 상태에서 pkill -9 -f appstoreagent 명령어 입력

오죽했으면 이용자가 앱스토어 Xcode 리뷰에 분노의 리뷰를 달아놨을까?

반응형
Posted by Hippalus
,

반응형

이유는 모르겠지만 외부에서 받은 프로젝트도 아니고 내가 개발한 프로젝트인데 어느날 컴파일 / 빌드를 해보았더니 Multiple commands produce Error가 뜨며 전혀 실행 될 기미가 안보였다.

해결방법은 간단했다.
https://stackoverflow.com/questions/50718018/xcode-10-error-multiple-commands-produce

 

Xcode 10 Error: Multiple commands produce

error: Multiple commands produce '/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist': 1) Target '

stackoverflow.com

구글신 다음신인 스택오버플로우신께서 친히 알려주신다.
Xcode > Target > Build phases > Copy Bundle Resources에서 info.plist를 - 버튼으로 날리라 하심

Copy Bundle Resources를 펼쳐보면 info.plist가 보일것이다. 믿고 날려버리고 컴파일 고

 

반응형
Posted by Hippalus
,

반응형

애플이 망조가 들었는지 요즘 헛발질이 너무 잦습니다.

Xcode로 손쉽게 앱을 업로드 할 수 있지만 가끔가다 이런 오류를 내뱉더니 이번 Xcode7 이후 첫 업로드는 몇번을 해도 도무지 될 생각이 없습니다.


찾아보니 개발사 커뮤니티에서도 유사한 증상을 호소하는 개발사들이 많은것으로 확인되기에 이번 itunesconnect.apple.com 개편 이후 뭔가 꼬였나 봅니다.

상황이 이러하니 앱 심사를 더이상 미룰 수 없기에 Application Loader를 통해 업로드를 시도한 결과 다행히 앱이 정상 업로드 됨을 확인 할 수 있었습니다.


일단 Application Loader(어플리케이션 로더)를 통해 올리려면 ipa파일을 생성해내야 합니다.

Xcode > Product 메뉴 > Archive를 눌러줍니다. (여기까진 Xcode로 앱스토어 심사 업로드 방식과 동일)


Upload to App Store... 버튼 대신 Export를 눌러줍니다.


그럼 ipa파일을 저장할 폴더를 선택할 수 있습니다.

전 바탕화면에 저장하였습니다.


Application Loader를 실행시켜줍니다. 

Application Loader가 없다면 itunesconnect.apple.com의 심사 파일 선택하는 곳에서 다이렉트 다운로드 링크가 존재하니 해당 링크를 통해 설치 하면 됩니다.(정상 설치하였다면 Finder의 응용프로그램 폴더 안에서 찾을 수 있습니다.)

설치가 되었단 가정하에 실행하면 요런 화면이 실행됩니다.



App 전송을 눌러 앞서 저장했던 ipa파일을 선택하여 전송합니다.

그럼 아래처럼 iTunes Store로 업로드가 됩니다.



그런데

말입니다.

예전엔 (약 한달 전 까지만 해도) Xcode든 Application Loader든 업로드를 하면 10분내로  파일을 선택할 수 있었는데 말입니다.

이번엔 좀 다릅니다. 10분이 지나도 계속 처리 중 이란 상태가 지속됩니다. 50분동안~




구글링을 해보면 "처리 중" 상태가 지속된다란 고통을 호소하는 프로그래머 성님들의 절규를 발견할 수 있었습니다.

http://stackoverflow.com/questions/27928471/my-prerelease-app-has-been-processing-for-over-a-week-in-itunes-connect-what

(이런 경우가 전 처음이라 당황했지만 이 분은 하루가 지나도록 감감 무소식이라더군요. ㄷ ㄷ ㄷ)


애플 개발자 센터에 전화로 문의를 하였더니 원래 24시간 정도 걸릴 수 도 있다고 하더군요.

그러며 혹시 모르니 사파리로 해보았느냐 묻길래

gateway 446 떠서 크롬으로 했다고 답하니

이리 저리 묻더니 스크린샷을 보내달라 하더군요. 하지만 여기서도 애플의 갑질은 또 반복됩니다.

반드시 사파리로 실행한 스크린샷을 보내야만 한다합니다. 대애애애박!~

하여 사파리로 하는 차에 우연하게도 처리 중 상태가 사라지고 업로드한 파일을 선택 할 수 있게 되어 통화를 서둘러 종료를 하였다는 소식입니다.



반응형
Posted by Hippalus
,