Unity (windows) 에서 ios 로 build 해서 얻은 폴더에서 mac OS 로 넘어와서 archive 시에 Build fail 나는 상태에서 해결방안.

< 증분적으로 확인하고 변경된 사항들을 추가하고 있으니 꼭 끝까지 읽어보고 해당 내용을 반영할 것>

 

현재 상황은 

ruby 버전 올리고 

cocoapods 버전 올리고 

User Script Sandboxing -> No 인 상황. 

 

그 상황에서 지속적으로 mac os 로 넘어와서 빌드할때 build fail 이 나는 상황이었고, 해당 build fail 의 경우가 google admob sdk 와 관련있다는 내용을 파악해서 그러한 부분에 대해서는 pod file 을 수정하고 pod install 을 해주라는 형태의 내용들을 여러개 파악할 수 있어서 그와 관련된 방향으로 해결 방향을 결정해서 시도해보았다. 

해당 프로젝트를 담고있는 폴더로 이동한뒤에 터미널에서 pod install 을 진행하고 난 뒤에 추가된 파일들이 존재하는 상황에서의 프로젝트 폴더 상태

처음 unity 에서 빌드해서 얻은 폴더 상태에서는 pods 폴더가 없고 Unity-iPhone.xcodeproj 가지만 있는 상태였는데, 

이와같은 build fail 상황에서 pod install 을 이용해서 문제를 해결하기 위해서 현 상황과 원하는 문제 해결 방향과 그에 대한 실행 사항들을 chatGPT-4o 를 통해 검색해본 결과 pod file 에 Google-Mobile-Ads-SDK 에 대한 사항을 편집하였다. 

 

그리고 pod Install 실행을 통해서 정의된 종속성을 설치하는 과정을 거쳤다. 

이때에 해당 pod install 명령어를 수행하는 directory 의 경우는 유니티 프로젝트 빌드를 통해서 얻게 되는 폴더이고 xcodeproj 파일이 존재하는 폴더이다. 해당 폴더 경로로 터미널로 이동한뒤에 그 위치에서 pod install 을 진행 

 

그렇게 하고나면 해당 디렉토리에 Pods 폴더, Podfile.lock, 그리고 .xcworkspace 파일이 생기게 된다. 

 

그 후에 xcodepoj 파일이 아니라 xcworkspace 파일을 열고 들어가서 거기서 product 에서 archive 를 하면, 그동안 정상적으로 빌드되지 않던 프로젝트가 정상적으로 빌드됨을 확인할 수 있다. 

이때에 Build Stettings -> Build Options -> User Script Sandboxing 의 경우는 No 상태이다. 

(현재 xcode 의 경우는 15.4 이고 IOS 17.5 인 상황인데, xcode 에서 Update to recommended settings 를 통해서 그냥 모두 추천하는 설정을 세팅해 버리면 그 내부 사항중에 있는 User Script Sandboxing 이 Yes 로 되면서 빌드오류가 발생하는 경우가 있다. 

그 경우는 권한문제와 관련된 형태로 빌드 실패가 되는데 주의하도록. 모든 버전에서 이와 같은 문제가 발생하는지는 모르겠으나, User Script Sandboxing 이 Yes 로 되어있는 경우 발생하는 build fail 에 대한 내용이 많으니 참고해볼것. (현재 사용하는 장비는 2015 MBP 이고 OpenCore Legacy Patcher 를 이용해서 Sonoma 14.5 까지 올려놓은 상황이다. 기본적으로는 Mac OS 12.7 까지가 한계라 xcode 를 사용할 수 없어서 강제로 올렸다. xcode 버전은 15.4 , IOS 17.5 ))

 

 

위의 경우 기존에 존재하던 Podfile 을 연결 프로그램을 vscode 로 열어서 수정한 상황이고, 이때에 추가한 것은 10 행에 존재하는

pod 'Googole-Mobile-Ads-SDK' 

를 추가하였는데, 그 위에 target 'UnityFramework' 에 동일하게 pod 'Google-Mobile-Ads-SKD' 가 있어서, 내가 새롭게 추가한 내용이 정상적으로 동작하는데 영향을 미치지 않았을수도 있다는 생각은 들지만, 이 부분에 대해서는 현재 상황에서 확실하게 아래에도 따로 명시적으로 작성해주는것이 반드시 필요한지에 대해서는 확인하고 넘어가지 않을 것이다. ruby 에 대해서도, cocoapods 에 대해서도 더 자세하게 파고들어 가는건 현재 상황에서는 내가 초점을 맞추어야 하는 부분을 넘어서는 영역이라는 생각이 들고, 다음에 다시 새롭게 빌드하는 상황이 올때 예외처리를 하면서 영향을 미치는지, 아니면 그냥 pod install 을 통해서 얻어낸 .xcworkspace 파일을 통한 빌드가 가장 핵심인지에 대해서 확인해보도록 하자. 

 

가장 도움이 되었던 GPT 답변을 아래에 첨부해둔다. 

 

=========================================

Unity로 생성된 Xcode 프로젝트에서 `pod install`을 통해 필요한 CocoaPods 종속성을 설치하려면, 다음 단계를 따르시면 됩니다. 이 과정에서는 프로젝트 디렉터리 구조를 확인하고, 올바른 위치에 Podfile을 작성하여 CocoaPods 설치를 진행합니다.

### 단계별 지침

1. **Xcode 프로젝트 디렉터리로 이동**:
   Unity에서 빌드한 Xcode 프로젝트 파일(`.xcodeproj`)이 위치한 디렉터리로 이동합니다. 일반적으로 Unity 프로젝트의 `Build` 폴더나 `iOS` 폴더에 위치합니다.

   ```bash
   cd /path/to/your/unity/project/Build/iOS
   ```

2. **Podfile 생성**:
   해당 디렉터리에 Podfile을 생성합니다. 이 파일은 CocoaPods 종속성을 정의합니다.

   ```bash
   touch Podfile
   ```

3. **Podfile 편집**:
   생성한 Podfile을 텍스트 편집기로 엽니다. 이 예제에서는 Google Mobile Ads SDK를 추가합니다.

   ```ruby
   platform :ios, '12.0'
   use_frameworks!

   target 'Unity-iPhone' do
     pod 'Google-Mobile-Ads-SDK'
   end
   ```

   **주의**: `target 'Unity-iPhone'`은 Unity가 생성한 Xcode 프로젝트의 기본 타겟 이름입니다. 프로젝트 설정에 따라 타겟 이름이 다를 수 있으므로 확인이 필요합니다.

4. **Pod Install 실행**:
   터미널에서 `pod install` 명령을 실행하여 정의된 종속성을 설치합니다.

   ```bash
   pod install
   ```

5. **Workspace 열기**:
   `pod install`이 완료되면, `.xcworkspace` 파일이 생성됩니다. 이제부터는 `.xcodeproj` 파일 대신 `.xcworkspace` 파일을 사용하여 Xcode에서 프로젝트를 엽니다. 이는 CocoaPods 종속성 관리가 올바르게 이루어지도록 하기 위함입니다.

   ```bash
   open Unity-iPhone.xcworkspace
   ```

### 요약
1. Unity에서 생성된 Xcode 프로젝트가 위치한 디렉터리로 이동합니다.
2. Podfile을 생성하고 편집하여 필요한 CocoaPods 종속성을 정의합니다.
3. `pod install`을 실행하여 종속성을 설치합니다.
4. `.xcworkspace` 파일을 사용하여 Xcode에서 프로젝트를 엽니다.

이 과정을 따라 진행하면 Unity 프로젝트에 필요한 CocoaPods 종속성을 올바르게 추가할 수 있습니다.

 

+++++++++++++++

24_7_20

19일에 위의 내용을 참고해서 다시 새로운 빌드를 빌드했는데, 

이때에 pod file에 

target 'Unity-iPhone' do  밑에 

  pod 'Google-Mobile-Ads-SDK'

 

를 넣을 필요가 없다 

 

유니티를 통해서 애드몹 광고를 띄우는 것은 

'UnityFramework' 상에서만 해당 기능을 사용하는 것이기 때문에 그 위에서 첨부되어 있는 영역이면 충분하다. 

 

윈도우 상의 유니티에서 ios 빌드를 하고, 해당 폴더를 클라우드로 옮기던지 혹은 mac os 디바이스로 옮겨서 

프로젝트 내에서 pod install 을 실행한뒤 .xcworkspace 파일을 만들어내고, 해당 파일을 열어서 xcode 를 통해 프로젝트들 아카이브 하면 된다. 

 

  Comments,     Trackbacks